@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.
- package/README.md +35 -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 +1090 -123
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +2399 -706
- 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 +40 -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 +72 -14
- 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 +37 -5
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +82 -16
- 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 +549 -74
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1250 -421
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +411 -29
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +896 -222
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +288 -29
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +561 -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 +887 -291
- 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 +103 -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 +26 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +57 -18
- 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-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 +16 -2
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +36 -8
- 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 +69 -0
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
- package/dist/lib/utils/agent-turn-routing.js +96 -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/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 +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +32 -32
package/README.md
CHANGED
|
@@ -10,8 +10,8 @@ The widget exposes three layers of extension:
|
|
|
10
10
|
|
|
11
11
|
| Surface | What it lets you do |
|
|
12
12
|
|---|---|
|
|
13
|
-
| **
|
|
14
|
-
| **Before/After cancelable events** | `(beforeAgentTurn)`, `(beforeToolInvoked)`, `(beforeResponseFormSubmitted)` let you observe AND veto (`event.Cancel = true`) before the action runs. Plus informational `(sessionStarted)` / `(sessionChannelStateChanged)` / `(sessionEnded)` for realtime lifecycle. |
|
|
13
|
+
| **8 named slots** (`mjChatSlot` directive) | Replace the `header`, `emptyState`, `agentPresence`, `messageRenderer`, `messageExtra`, or `demonstrationSurface` regions with your own templates — or ADD to the default header with `headerActions` (renders inside the default header's action strip, after the stock buttons; suppressed when a full `header` replacement is projected), or above the composer with `composerExtra`. Three consumption modes: project an ad-hoc template, wrap the exported default for containment, or subclass the default. |
|
|
14
|
+
| **Before/After cancelable events** | `(beforeAgentTurn)`, `(beforeToolInvoked)`, `(beforeResponseFormSubmitted)` let you observe AND veto (`event.Cancel = true`) before the action runs. `(beforeAgentTurn)` fires once per agent turn, before any reply row exists, and can also send the turn to another agent (`event.RedirectAgentId`). Plus informational `(sessionStarted)` / `(sessionChannelStateChanged)` / `(sessionEnded)` for realtime lifecycle. |
|
|
15
15
|
| **`--mj-chat-*` design tokens** | Override bubble colors, composer chrome, character accents, and voice-state hues via standard CSS custom-property overrides. Defaults adapt to dark mode through semantic `--mj-*` tokens. |
|
|
16
16
|
|
|
17
17
|
Slot interfaces + cloneable default components + the `ChatSlotDirective` are exported — see the public API.
|
|
@@ -205,6 +205,39 @@ Two gating rules are worth knowing:
|
|
|
205
205
|
- **`includeTheme` gates only the token AUTO-SNAPSHOT.** An explicitly supplied `brandTokens` map, plus `logoUrl` / `title` / `trademark`, apply whenever `branding` is present. In the modal, "Include branding" is the single user-facing switch for all of it, and it sits with the general options because it affects every format — not just HTML.
|
|
206
206
|
|
|
207
207
|
`trademark` and `title` are **not** markdown-escaped; a value containing `_`, `]`, `)`, or a newline can break the surrounding markdown. Supply plain text (the HTML and JSON paths are escaped).
|
|
208
|
+
#### Chats with several people
|
|
209
|
+
|
|
210
|
+
A host that puts several people in one conversation (a team room, a shared chat) sets when agents answer through these inputs, without forking the chat area. Each defaults to today's behavior:
|
|
211
|
+
|
|
212
|
+
| Input | Default | Effect when set |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| `AgentReplyMode` | `'Always'` | `'MentionOnly'` starts an agent turn only for a message that tags an agent. Any other message is posted with no turn: no reply row, no placeholder, no turn events |
|
|
215
|
+
| `AllowedAgentIDs` | `null` (every agent) | The agents that may answer. Narrows the `@` list, every route (a tagged agent, continuity, the pinned and host default agents, the conversation manager), the manager's delegation, including each agent step of a workflow it plans, and the pin and voice pickers. An empty list allows none |
|
|
216
|
+
| `MentionPeople` | `null` (the current user only) | The people the `@` list offers, such as the chat's members (`MentionPerson` from `@memberjunction/conversations-runtime`). Each composer keeps its own list |
|
|
217
|
+
| `AgentHistoryFrom` | `null` (the whole conversation) | The first moment of the conversation an agent turn may read. The server loads the agent's history from there, uses no summary of earlier messages, and holds the same floor in the run's other reads of the conversation. Sent only when set, so leaving it null keeps working against an older MJAPI |
|
|
218
|
+
| `AgentTurnHandler` | `null` (MJ's own path) | An async hook that runs each turn on the host's server. The chat area calls it once per turn, after `BeforeAgentTurn` and before any reply row exists, and shows the rows it reports |
|
|
219
|
+
| `AutoNameConversation` | `true` | `false` stops MJ naming a new conversation from its first message or first voice utterance |
|
|
220
|
+
|
|
221
|
+
Routing picks one agent per turn, in this order: a tagged agent, then (under `'Always'` only) the last agent that answered other than the conversation manager, the conversation's pinned agent, the host's `DefaultAgentId`, and the conversation manager. An agent `AllowedAgentIDs` leaves out is skipped. `BeforeAgentTurn` then fires once, carrying the resolved `AgentId`, `AgentName`, `Route` and `UserMessageId`: a listener can cancel the turn, which then writes nothing more, or set `RedirectAgentId` to another allowed agent.
|
|
222
|
+
|
|
223
|
+
The `composerExtra` slot renders host UI directly above the composer, wherever the chat area shows one (the new-conversation composer and the empty state's included). Its context is `IMJChatComposerExtraContext`: the conversation as `$implicit`, plus `ConversationId` and `IsProcessing`.
|
|
224
|
+
|
|
225
|
+
```html
|
|
226
|
+
<mj-conversation-chat-area
|
|
227
|
+
[conversationId]="conversationId"
|
|
228
|
+
AgentReplyMode="MentionOnly"
|
|
229
|
+
[AllowedAgentIDs]="spaceAgentIds"
|
|
230
|
+
[MentionPeople]="members"
|
|
231
|
+
[AgentHistoryFrom]="historyFloor"
|
|
232
|
+
[AgentTurnHandler]="runTurnOnServer"
|
|
233
|
+
[AutoNameConversation]="false"
|
|
234
|
+
(BeforeAgentTurn)="onBeforeAgentTurn($event)">
|
|
235
|
+
<ng-template mjChatSlot="composerExtra" let-busy="IsProcessing">
|
|
236
|
+
<div class="audience-line">Everyone in this chat sees your message</div>
|
|
237
|
+
</ng-template>
|
|
238
|
+
</mj-conversation-chat-area>
|
|
239
|
+
```
|
|
240
|
+
|
|
208
241
|
#### Assistant identity
|
|
209
242
|
|
|
210
243
|
White-label hosts can brand the AI side of the message feed through the component contract (no CSS on `.message-sender` / `.avatar-circle` internals). Both default to `null` — the engine-resolved agent identity, today's behavior:
|
|
@@ -7,11 +7,27 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare class ActiveTasksPanelComponent {
|
|
9
9
|
private activeTasksService;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Tasks$: Observable<ActiveTask[]>;
|
|
11
|
+
/** @deprecated Use {@link Tasks$}. */
|
|
12
|
+
get tasks$(): Observable<ActiveTask[]>;
|
|
13
|
+
/** @deprecated Use {@link Tasks$}. */
|
|
14
|
+
set tasks$(value: Observable<ActiveTask[]>);
|
|
15
|
+
TaskCount$: Observable<number>;
|
|
16
|
+
/** @deprecated Use {@link TaskCount$}. */
|
|
17
|
+
get taskCount$(): Observable<number>;
|
|
18
|
+
/** @deprecated Use {@link TaskCount$}. */
|
|
19
|
+
set taskCount$(value: Observable<number>);
|
|
20
|
+
IsExpanded: boolean;
|
|
21
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
22
|
+
get isExpanded(): boolean;
|
|
23
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
24
|
+
set isExpanded(value: boolean);
|
|
13
25
|
constructor(activeTasksService: ActiveTasksService);
|
|
26
|
+
GetElapsedTime(task: ActiveTask): string;
|
|
27
|
+
/** @deprecated Use {@link GetElapsedTime}. */
|
|
14
28
|
getElapsedTime(task: ActiveTask): string;
|
|
29
|
+
GetTrimmedStatus(status: string): string;
|
|
30
|
+
/** @deprecated Use {@link GetTrimmedStatus}. */
|
|
15
31
|
getTrimmedStatus(status: string): string;
|
|
16
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActiveTasksPanelComponent, never>;
|
|
17
33
|
static ɵcmp: i0.ɵɵComponentDeclaration<ActiveTasksPanelComponent, "mj-active-tasks-panel", never, {}, {}, never, never, false, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-tasks-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/active-tasks/active-tasks-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;;AAErF;;;GAGG;AACH,qBAmGa,yBAAyB;
|
|
1
|
+
{"version":3,"file":"active-tasks-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/active-tasks/active-tasks-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;;AAErF;;;GAGG;AACH,qBAmGa,yBAAyB;IAgCxB,OAAO,CAAC,kBAAkB;IA/BtC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjC,sCAAsC;IACtC,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,CAErC;IACD,sCAAsC;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,EAEzC;IACD,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/B,0CAA0C;IAC1C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAEnC;IACD,0CAA0C;IAC1C,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,EAEvC;IACD,UAAU,UAAQ;IAElB,0CAA0C;IAC1C,IAAI,UAAU,YAEb;IACD,0CAA0C;IAC1C,IAAI,UAAU,CAAC,KAAK,SAAA,EAEnB;gBAEmB,kBAAkB,EAAE,kBAAkB;IAK1D,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAaxC,8CAA8C;IAC9C,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAIxC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQxC,gDAAgD;IAChD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;yCAhE7B,yBAAyB;2CAAzB,yBAAyB;CAmErC"}
|
|
@@ -64,15 +64,39 @@ function ActiveTasksPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
|
|
|
64
64
|
*/
|
|
65
65
|
export class ActiveTasksPanelComponent {
|
|
66
66
|
activeTasksService;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
Tasks$;
|
|
68
|
+
/** @deprecated Use {@link Tasks$}. */
|
|
69
|
+
get tasks$() {
|
|
70
|
+
return this.Tasks$;
|
|
71
|
+
}
|
|
72
|
+
/** @deprecated Use {@link Tasks$}. */
|
|
73
|
+
set tasks$(value) {
|
|
74
|
+
this.Tasks$ = value;
|
|
75
|
+
}
|
|
76
|
+
TaskCount$;
|
|
77
|
+
/** @deprecated Use {@link TaskCount$}. */
|
|
78
|
+
get taskCount$() {
|
|
79
|
+
return this.TaskCount$;
|
|
80
|
+
}
|
|
81
|
+
/** @deprecated Use {@link TaskCount$}. */
|
|
82
|
+
set taskCount$(value) {
|
|
83
|
+
this.TaskCount$ = value;
|
|
84
|
+
}
|
|
85
|
+
IsExpanded = true;
|
|
86
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
87
|
+
get isExpanded() {
|
|
88
|
+
return this.IsExpanded;
|
|
89
|
+
}
|
|
90
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
91
|
+
set isExpanded(value) {
|
|
92
|
+
this.IsExpanded = value;
|
|
93
|
+
}
|
|
70
94
|
constructor(activeTasksService) {
|
|
71
95
|
this.activeTasksService = activeTasksService;
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
96
|
+
this.Tasks$ = this.activeTasksService.tasks$;
|
|
97
|
+
this.TaskCount$ = this.activeTasksService.taskCount$;
|
|
74
98
|
}
|
|
75
|
-
|
|
99
|
+
GetElapsedTime(task) {
|
|
76
100
|
const elapsed = Date.now() - task.startTime;
|
|
77
101
|
const seconds = Math.floor(elapsed / 1000);
|
|
78
102
|
if (seconds < 60) {
|
|
@@ -82,13 +106,21 @@ export class ActiveTasksPanelComponent {
|
|
|
82
106
|
const remainingSeconds = seconds % 60;
|
|
83
107
|
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
|
|
84
108
|
}
|
|
85
|
-
|
|
109
|
+
/** @deprecated Use {@link GetElapsedTime}. */
|
|
110
|
+
getElapsedTime(task) {
|
|
111
|
+
return this.GetElapsedTime(task);
|
|
112
|
+
}
|
|
113
|
+
GetTrimmedStatus(status) {
|
|
86
114
|
const maxLength = 50;
|
|
87
115
|
if (status.length <= maxLength) {
|
|
88
116
|
return status;
|
|
89
117
|
}
|
|
90
118
|
return status.substring(0, maxLength) + '...';
|
|
91
119
|
}
|
|
120
|
+
/** @deprecated Use {@link GetTrimmedStatus}. */
|
|
121
|
+
getTrimmedStatus(status) {
|
|
122
|
+
return this.GetTrimmedStatus(status);
|
|
123
|
+
}
|
|
92
124
|
static ɵfac = function ActiveTasksPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActiveTasksPanelComponent)(i0.ɵɵdirectiveInject(i1.ActiveTasksService)); };
|
|
93
125
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActiveTasksPanelComponent, selectors: [["mj-active-tasks-panel"]], standalone: false, decls: 2, vars: 3, consts: [[1, "active-tasks-panel"], ["Size", "sm", 3, "ExpandedChange", "FlushBody", "Expanded"], ["mjAccordionTitle", ""], ["mjAccordionBody", ""], [1, "fas", "fa-tasks", "active-tasks-title-icon"], [1, "panel-content"], [1, "task-item"], [1, "task-header"], [1, "fas", "fa-circle-notch", "fa-spin"], [1, "task-agent"], [1, "task-elapsed"], [1, "task-status"]], template: function ActiveTasksPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
94
126
|
i0.ɵɵconditionalCreate(0, ActiveTasksPanelComponent_Conditional_0_Template, 4, 2, "div", 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-tasks-panel.component.js","sourceRoot":"","sources":["../../../../src/lib/components/active-tasks/active-tasks-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;;;;;;IAoB9B,uBAAoD;IACpD,4BAAM;IAAA,YAAuC;;IAAA,iBAAO;;;IAA9C,eAAuC;IAAvC,qFAAuC;;;IAMvC,AADF,8BAAuB,aACI;IACvB,uBAA2C;IAC3C,+BAAyB;IAAA,YAAoB;IAAA,iBAAO;IACpD,gCAA2B;IAAA,YAA0B;IACvD,AADuD,iBAAO,EACxD;IACN,+BAAyB;IAAA,YAAmC;IAC9D,AAD8D,iBAAM,EAC9D;;;;IAJuB,eAAoB;IAApB,uCAAoB;IAClB,eAA0B;IAA1B,oDAA0B;IAE9B,eAAmC;IAAnC,6DAAmC;;;IARlE,8BAA2B;IACzB,0IASC;;IACH,iBAAM;;;IAVJ,cASC;IATD,kDASC;;;;IAhBP,AALF,8BAAgC,4BAK6C;IAA1B,oUAAyB;IAKxE,AAJA,wGAA8B,2FAID;IAejC,AADE,iBAAqB,EACjB;;;IApB0B,cAAkB;IAAlB,gCAAkB;IAAC,kDAAyB;;AAdlF;;;GAGG;AAoGH,MAAM,OAAO,yBAAyB;
|
|
1
|
+
{"version":3,"file":"active-tasks-panel.component.js","sourceRoot":"","sources":["../../../../src/lib/components/active-tasks/active-tasks-panel.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ActiveTasksService, ActiveTask } from '../../services/active-tasks.service';\n\n/**\n * Panel component that displays currently running agent tasks.\n * Shows as a floating panel in bottom-right corner when tasks are active.\n */\n@Component({\n standalone: false,\n selector: 'mj-active-tasks-panel',\n template: `\n @if ((taskCount$ | async)! > 0) {\n <div class=\"active-tasks-panel\">\n <!-- Migrated from a bespoke header/chevron + @if(isExpanded) disclosure to\n mj-accordion-panel. The floating fixed-position wrapper is preserved; only\n the header→task-list disclosure became the accordion (content disclosure,\n not a whole-panel collapse). -->\n <mj-accordion-panel Size=\"sm\" [FlushBody]=\"true\" [(Expanded)]=\"isExpanded\">\n <ng-template mjAccordionTitle>\n <i class=\"fas fa-tasks active-tasks-title-icon\"></i>\n <span>Active Tasks ({{ taskCount$ | async }})</span>\n </ng-template>\n <ng-template mjAccordionBody>\n <div class=\"panel-content\">\n @for (task of (tasks$ | async); track task) {\n <div class=\"task-item\">\n <div class=\"task-header\">\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n <span class=\"task-agent\">{{ task.agentName }}</span>\n <span class=\"task-elapsed\">{{ getElapsedTime(task) }}</span>\n </div>\n <div class=\"task-status\">{{ getTrimmedStatus(task.status) }}</div>\n </div>\n }\n </div>\n </ng-template>\n </mj-accordion-panel>\n </div>\n }\n `,\n styles: [`\n .active-tasks-panel {\n position: fixed;\n bottom: 20px;\n right: 20px;\n width: 320px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n }\n\n /* Removed bespoke .panel-header chrome (header bar, hover, chevron, flex span) —\n the disclosure header is now owned by mj-accordion-panel. Only the title icon's\n brand color is preserved below. */\n .active-tasks-title-icon {\n color: var(--mj-brand-primary);\n }\n\n .panel-content {\n max-height: 300px;\n overflow-y: auto;\n }\n\n .task-item {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .task-item:last-child {\n border-bottom: none;\n }\n\n .task-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n }\n\n .task-header i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n }\n\n .task-agent {\n flex: 1;\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n }\n\n .task-elapsed {\n font-size: 12px;\n color: var(--mj-text-muted);\n font-weight: 500;\n }\n\n .task-status {\n font-size: 13px;\n color: var(--mj-text-muted);\n padding-left: 22px;\n }\n `]\n})\nexport class ActiveTasksPanelComponent {\n Tasks$: Observable<ActiveTask[]>;\n\n /** @deprecated Use {@link Tasks$}. */\n get tasks$(): Observable<ActiveTask[]> {\n return this.Tasks$;\n }\n /** @deprecated Use {@link Tasks$}. */\n set tasks$(value: Observable<ActiveTask[]>) {\n this.Tasks$ = value;\n }\n TaskCount$: Observable<number>;\n\n /** @deprecated Use {@link TaskCount$}. */\n get taskCount$(): Observable<number> {\n return this.TaskCount$;\n }\n /** @deprecated Use {@link TaskCount$}. */\n set taskCount$(value: Observable<number>) {\n this.TaskCount$ = value;\n }\n IsExpanded = true;\n\n /** @deprecated Use {@link IsExpanded}. */\n get isExpanded() {\n return this.IsExpanded;\n }\n /** @deprecated Use {@link IsExpanded}. */\n set isExpanded(value) {\n this.IsExpanded = value;\n }\n\n constructor(private activeTasksService: ActiveTasksService) {\n this.Tasks$ = this.activeTasksService.tasks$;\n this.TaskCount$ = this.activeTasksService.taskCount$;\n }\n\n GetElapsedTime(task: ActiveTask): string {\n const elapsed = Date.now() - task.startTime;\n const seconds = Math.floor(elapsed / 1000);\n\n if (seconds < 60) {\n return `${seconds}s`;\n }\n\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\n }\n\n /** @deprecated Use {@link GetElapsedTime}. */\n getElapsedTime(task: ActiveTask): string {\n return this.GetElapsedTime(task);\n }\n\n GetTrimmedStatus(status: string): string {\n const maxLength = 50;\n if (status.length <= maxLength) {\n return status;\n }\n return status.substring(0, maxLength) + '...';\n }\n\n /** @deprecated Use {@link GetTrimmedStatus}. */\n getTrimmedStatus(status: string): string {\n return this.GetTrimmedStatus(status);\n }\n}\n"]}
|
|
@@ -9,40 +9,108 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class ActiveAgentIndicatorComponent implements OnInit, OnDestroy {
|
|
11
11
|
private agentStateService;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
ConversationId?: string;
|
|
13
|
+
/** @deprecated Use {@link ConversationId}. */
|
|
14
|
+
set conversationId(value: string | undefined);
|
|
15
|
+
/** @deprecated Use {@link ConversationId}. */
|
|
16
|
+
get conversationId(): string | undefined;
|
|
17
|
+
CurrentUser: UserInfo;
|
|
18
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
19
|
+
set currentUser(value: UserInfo);
|
|
20
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
21
|
+
get currentUser(): UserInfo;
|
|
22
|
+
MaxVisibleAgents: number;
|
|
23
|
+
/** @deprecated Use {@link MaxVisibleAgents}. */
|
|
24
|
+
set maxVisibleAgents(value: number);
|
|
25
|
+
/** @deprecated Use {@link MaxVisibleAgents}. */
|
|
26
|
+
get maxVisibleAgents(): number;
|
|
27
|
+
TogglePanel: EventEmitter<void>;
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Use {@link TogglePanel}.
|
|
30
|
+
*
|
|
31
|
+
* The same emitter under the old binding name, so a template still binding
|
|
32
|
+
* (togglePanel) keeps working. Must stay AFTER TogglePanel: class fields
|
|
33
|
+
* initialise in order, and the other way round this captures undefined.
|
|
34
|
+
*/
|
|
15
35
|
togglePanel: EventEmitter<void>;
|
|
36
|
+
AgentSelected: EventEmitter<MJAIAgentRunEntity>;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use {@link AgentSelected}.
|
|
39
|
+
*
|
|
40
|
+
* The same emitter under the old binding name, so a template still binding
|
|
41
|
+
* (agentSelected) keeps working. Must stay AFTER AgentSelected: class fields
|
|
42
|
+
* initialise in order, and the other way round this captures undefined.
|
|
43
|
+
*/
|
|
16
44
|
agentSelected: EventEmitter<MJAIAgentRunEntity>;
|
|
17
|
-
|
|
45
|
+
ActiveAgents: Array<{
|
|
18
46
|
run: MJAIAgentRunEntity;
|
|
19
47
|
status: AgentStatus;
|
|
20
48
|
confidence: number | null;
|
|
21
49
|
}>;
|
|
22
|
-
|
|
50
|
+
/** @deprecated Use {@link ActiveAgents}. */
|
|
51
|
+
get activeAgents(): Array<{
|
|
52
|
+
run: MJAIAgentRunEntity;
|
|
53
|
+
status: AgentStatus;
|
|
54
|
+
confidence: number | null;
|
|
55
|
+
}>;
|
|
56
|
+
/** @deprecated Use {@link ActiveAgents}. */
|
|
57
|
+
set activeAgents(value: Array<{
|
|
58
|
+
run: MJAIAgentRunEntity;
|
|
59
|
+
status: AgentStatus;
|
|
60
|
+
confidence: number | null;
|
|
61
|
+
}>);
|
|
62
|
+
IsExpanded: boolean;
|
|
63
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
64
|
+
get isExpanded(): boolean;
|
|
65
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
66
|
+
set isExpanded(value: boolean);
|
|
23
67
|
private subscription?;
|
|
24
68
|
constructor(agentStateService: AgentStateService);
|
|
25
69
|
ngOnInit(): void;
|
|
26
70
|
ngOnDestroy(): void;
|
|
71
|
+
get DisplayAgents(): Array<{
|
|
72
|
+
run: MJAIAgentRunEntity;
|
|
73
|
+
status: AgentStatus;
|
|
74
|
+
confidence: number | null;
|
|
75
|
+
}>;
|
|
76
|
+
/** @deprecated Use {@link DisplayAgents}. */
|
|
27
77
|
get displayAgents(): Array<{
|
|
28
78
|
run: MJAIAgentRunEntity;
|
|
29
79
|
status: AgentStatus;
|
|
30
80
|
confidence: number | null;
|
|
31
81
|
}>;
|
|
82
|
+
GetAgentTooltip(agent: {
|
|
83
|
+
run: MJAIAgentRunEntity;
|
|
84
|
+
status: AgentStatus;
|
|
85
|
+
confidence: number | null;
|
|
86
|
+
}): string;
|
|
87
|
+
/** @deprecated Use {@link GetAgentTooltip}. */
|
|
32
88
|
getAgentTooltip(agent: {
|
|
33
89
|
run: MJAIAgentRunEntity;
|
|
34
90
|
status: AgentStatus;
|
|
35
91
|
confidence: number | null;
|
|
36
92
|
}): string;
|
|
93
|
+
GetStatusText(status: AgentStatus): string;
|
|
94
|
+
/** @deprecated Use {@link GetStatusText}. */
|
|
37
95
|
getStatusText(status: AgentStatus): string;
|
|
96
|
+
ToggleExpanded(): void;
|
|
97
|
+
/** @deprecated Use {@link ToggleExpanded}. */
|
|
38
98
|
toggleExpanded(): void;
|
|
99
|
+
OnAgentClick(agent: {
|
|
100
|
+
run: MJAIAgentRunEntity;
|
|
101
|
+
status: AgentStatus;
|
|
102
|
+
confidence: number | null;
|
|
103
|
+
}): void;
|
|
104
|
+
/** @deprecated Use {@link OnAgentClick}. */
|
|
39
105
|
onAgentClick(agent: {
|
|
40
106
|
run: MJAIAgentRunEntity;
|
|
41
107
|
status: AgentStatus;
|
|
42
108
|
confidence: number | null;
|
|
43
109
|
}): void;
|
|
110
|
+
OnTogglePanel(): void;
|
|
111
|
+
/** @deprecated Use {@link OnTogglePanel}. */
|
|
44
112
|
onTogglePanel(): void;
|
|
45
113
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActiveAgentIndicatorComponent, never>;
|
|
46
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ActiveAgentIndicatorComponent, "mj-active-agent-indicator", never, { "conversationId": { "alias": "conversationId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "maxVisibleAgents": { "alias": "maxVisibleAgents"; "required": false; }; }, { "togglePanel": "togglePanel"; "agentSelected": "agentSelected"; }, never, never, false, never>;
|
|
114
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActiveAgentIndicatorComponent, "mj-active-agent-indicator", never, { "ConversationId": { "alias": "ConversationId"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "MaxVisibleAgents": { "alias": "MaxVisibleAgents"; "required": false; }; "maxVisibleAgents": { "alias": "maxVisibleAgents"; "required": false; }; }, { "TogglePanel": "TogglePanel"; "togglePanel": "togglePanel"; "AgentSelected": "AgentSelected"; "agentSelected": "agentSelected"; }, never, never, false, never>;
|
|
47
115
|
}
|
|
48
116
|
//# sourceMappingURL=active-agent-indicator.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-agent-indicator.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/agent/active-agent-indicator.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;;AAGpF;;;GAGG;AACH,qBA+Oa,6BAA8B,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"active-agent-indicator.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/agent/active-agent-indicator.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,13 +81,69 @@ function ActiveAgentIndicatorComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
81
81
|
*/
|
|
82
82
|
export class ActiveAgentIndicatorComponent {
|
|
83
83
|
agentStateService;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
ConversationId;
|
|
85
|
+
/** @deprecated Use {@link ConversationId}. */
|
|
86
|
+
set conversationId(value) {
|
|
87
|
+
this.ConversationId = value;
|
|
88
|
+
}
|
|
89
|
+
/** @deprecated Use {@link ConversationId}. */
|
|
90
|
+
get conversationId() {
|
|
91
|
+
return this.ConversationId;
|
|
92
|
+
}
|
|
93
|
+
CurrentUser;
|
|
94
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
95
|
+
set currentUser(value) {
|
|
96
|
+
this.CurrentUser = value;
|
|
97
|
+
}
|
|
98
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
99
|
+
get currentUser() {
|
|
100
|
+
return this.CurrentUser;
|
|
101
|
+
}
|
|
102
|
+
MaxVisibleAgents = 3;
|
|
103
|
+
/** @deprecated Use {@link MaxVisibleAgents}. */
|
|
104
|
+
set maxVisibleAgents(value) {
|
|
105
|
+
this.MaxVisibleAgents = value;
|
|
106
|
+
}
|
|
107
|
+
/** @deprecated Use {@link MaxVisibleAgents}. */
|
|
108
|
+
get maxVisibleAgents() {
|
|
109
|
+
return this.MaxVisibleAgents;
|
|
110
|
+
}
|
|
111
|
+
TogglePanel = new EventEmitter();
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated Use {@link TogglePanel}.
|
|
114
|
+
*
|
|
115
|
+
* The same emitter under the old binding name, so a template still binding
|
|
116
|
+
* (togglePanel) keeps working. Must stay AFTER TogglePanel: class fields
|
|
117
|
+
* initialise in order, and the other way round this captures undefined.
|
|
118
|
+
*/
|
|
119
|
+
togglePanel = this.TogglePanel;
|
|
120
|
+
AgentSelected = new EventEmitter();
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated Use {@link AgentSelected}.
|
|
123
|
+
*
|
|
124
|
+
* The same emitter under the old binding name, so a template still binding
|
|
125
|
+
* (agentSelected) keeps working. Must stay AFTER AgentSelected: class fields
|
|
126
|
+
* initialise in order, and the other way round this captures undefined.
|
|
127
|
+
*/
|
|
128
|
+
agentSelected = this.AgentSelected;
|
|
129
|
+
ActiveAgents = [];
|
|
130
|
+
/** @deprecated Use {@link ActiveAgents}. */
|
|
131
|
+
get activeAgents() {
|
|
132
|
+
return this.ActiveAgents;
|
|
133
|
+
}
|
|
134
|
+
/** @deprecated Use {@link ActiveAgents}. */
|
|
135
|
+
set activeAgents(value) {
|
|
136
|
+
this.ActiveAgents = value;
|
|
137
|
+
}
|
|
138
|
+
IsExpanded = false;
|
|
139
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
140
|
+
get isExpanded() {
|
|
141
|
+
return this.IsExpanded;
|
|
142
|
+
}
|
|
143
|
+
/** @deprecated Use {@link IsExpanded}. */
|
|
144
|
+
set isExpanded(value) {
|
|
145
|
+
this.IsExpanded = value;
|
|
146
|
+
}
|
|
91
147
|
subscription;
|
|
92
148
|
constructor(agentStateService) {
|
|
93
149
|
this.agentStateService = agentStateService;
|
|
@@ -95,28 +151,36 @@ export class ActiveAgentIndicatorComponent {
|
|
|
95
151
|
ngOnInit() {
|
|
96
152
|
// Subscribe to active agents for this conversation
|
|
97
153
|
this.subscription = this.agentStateService
|
|
98
|
-
.getActiveAgents(this.
|
|
154
|
+
.getActiveAgents(this.ConversationId)
|
|
99
155
|
.subscribe(agents => {
|
|
100
|
-
this.
|
|
156
|
+
this.ActiveAgents = agents;
|
|
101
157
|
});
|
|
102
158
|
}
|
|
103
159
|
ngOnDestroy() {
|
|
104
160
|
this.subscription?.unsubscribe();
|
|
105
161
|
}
|
|
106
|
-
get
|
|
107
|
-
if (this.
|
|
108
|
-
return this.
|
|
162
|
+
get DisplayAgents() {
|
|
163
|
+
if (this.IsExpanded) {
|
|
164
|
+
return this.ActiveAgents;
|
|
109
165
|
}
|
|
110
|
-
return this.
|
|
166
|
+
return this.ActiveAgents.slice(0, this.MaxVisibleAgents);
|
|
111
167
|
}
|
|
112
|
-
|
|
113
|
-
|
|
168
|
+
/** @deprecated Use {@link DisplayAgents}. */
|
|
169
|
+
get displayAgents() {
|
|
170
|
+
return this.DisplayAgents;
|
|
171
|
+
}
|
|
172
|
+
GetAgentTooltip(agent) {
|
|
173
|
+
const statusText = this.GetStatusText(agent.status);
|
|
114
174
|
const confidenceText = agent.confidence != null
|
|
115
175
|
? ` (Confidence: ${(agent.confidence * 100).toFixed(0)}%)`
|
|
116
176
|
: '';
|
|
117
177
|
return `${agent.run.Agent || 'Agent'} - ${statusText}${confidenceText}`;
|
|
118
178
|
}
|
|
119
|
-
|
|
179
|
+
/** @deprecated Use {@link GetAgentTooltip}. */
|
|
180
|
+
getAgentTooltip(agent) {
|
|
181
|
+
return this.GetAgentTooltip(agent);
|
|
182
|
+
}
|
|
183
|
+
GetStatusText(status) {
|
|
120
184
|
switch (status) {
|
|
121
185
|
case 'acknowledging': return 'Acknowledging request';
|
|
122
186
|
case 'working': return 'Working on task';
|
|
@@ -126,17 +190,33 @@ export class ActiveAgentIndicatorComponent {
|
|
|
126
190
|
default: return 'Active';
|
|
127
191
|
}
|
|
128
192
|
}
|
|
193
|
+
/** @deprecated Use {@link GetStatusText}. */
|
|
194
|
+
getStatusText(status) {
|
|
195
|
+
return this.GetStatusText(status);
|
|
196
|
+
}
|
|
197
|
+
ToggleExpanded() {
|
|
198
|
+
this.IsExpanded = !this.IsExpanded;
|
|
199
|
+
}
|
|
200
|
+
/** @deprecated Use {@link ToggleExpanded}. */
|
|
129
201
|
toggleExpanded() {
|
|
130
|
-
|
|
202
|
+
return this.ToggleExpanded();
|
|
203
|
+
}
|
|
204
|
+
OnAgentClick(agent) {
|
|
205
|
+
this.AgentSelected.emit(agent.run);
|
|
131
206
|
}
|
|
207
|
+
/** @deprecated Use {@link OnAgentClick}. */
|
|
132
208
|
onAgentClick(agent) {
|
|
133
|
-
this.
|
|
209
|
+
return this.OnAgentClick(agent);
|
|
134
210
|
}
|
|
211
|
+
OnTogglePanel() {
|
|
212
|
+
this.TogglePanel.emit();
|
|
213
|
+
}
|
|
214
|
+
/** @deprecated Use {@link OnTogglePanel}. */
|
|
135
215
|
onTogglePanel() {
|
|
136
|
-
this.
|
|
216
|
+
return this.OnTogglePanel();
|
|
137
217
|
}
|
|
138
218
|
static ɵfac = function ActiveAgentIndicatorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActiveAgentIndicatorComponent)(i0.ɵɵdirectiveInject(i1.AgentStateService)); };
|
|
139
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActiveAgentIndicatorComponent, selectors: [["mj-active-agent-indicator"]], inputs: { conversationId: "conversationId", currentUser: "currentUser", maxVisibleAgents: "maxVisibleAgents" }, outputs: { togglePanel: "togglePanel", agentSelected: "agentSelected" }, standalone: false, decls: 1, vars: 1, consts: [[1, "active-agents-container"], [1, "active-agents-label"], [1, "agents-wrapper"], [1, "agent-avatar", 3, "status-acknowledging", "status-working", "status-completing", "status-completed", "status-error", "title"], [1, "more-agents", 3, "title"], ["title", "Open agent process panel", 1, "panel-toggle", 3, "click"], [1, "fas", "fa-chart-line"], [1, "agent-count"], [1, "agent-avatar", 3, "click", "title"], [1, "avatar-content"], [1, "fas", "fa-robot"], [1, "status-indicator"], [1, "confidence-badge", 3, "title"], [1, "pulse-ring"], [1, "more-agents", 3, "click", "title"]], template: function ActiveAgentIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActiveAgentIndicatorComponent, selectors: [["mj-active-agent-indicator"]], inputs: { ConversationId: "ConversationId", conversationId: "conversationId", CurrentUser: "CurrentUser", currentUser: "currentUser", MaxVisibleAgents: "MaxVisibleAgents", maxVisibleAgents: "maxVisibleAgents" }, outputs: { TogglePanel: "TogglePanel", togglePanel: "togglePanel", AgentSelected: "AgentSelected", agentSelected: "agentSelected" }, standalone: false, decls: 1, vars: 1, consts: [[1, "active-agents-container"], [1, "active-agents-label"], [1, "agents-wrapper"], [1, "agent-avatar", 3, "status-acknowledging", "status-working", "status-completing", "status-completed", "status-error", "title"], [1, "more-agents", 3, "title"], ["title", "Open agent process panel", 1, "panel-toggle", 3, "click"], [1, "fas", "fa-chart-line"], [1, "agent-count"], [1, "agent-avatar", 3, "click", "title"], [1, "avatar-content"], [1, "fas", "fa-robot"], [1, "status-indicator"], [1, "confidence-badge", 3, "title"], [1, "pulse-ring"], [1, "more-agents", 3, "click", "title"]], template: function ActiveAgentIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
140
220
|
i0.ɵɵconditionalCreate(0, ActiveAgentIndicatorComponent_Conditional_0_Template, 11, 4, "div", 0);
|
|
141
221
|
} if (rf & 2) {
|
|
142
222
|
i0.ɵɵconditional(ctx.activeAgents.length > 0 ? 0 : -1);
|
|
@@ -186,14 +266,24 @@ export class ActiveAgentIndicatorComponent {
|
|
|
186
266
|
</div>
|
|
187
267
|
}
|
|
188
268
|
`, styles: ["\n .active-agents-container {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background-color: #F4F4F4;\n border-radius: 20px;\n font-size: 12px;\n color: #6B7280;\n height: 32px;\n }\n\n .active-agents-label {\n font-weight: 500;\n color: #6B7280;\n }\n\n .agents-wrapper {\n display: flex;\n align-items: center;\n gap: 6px;\n max-width: 200px;\n overflow: hidden;\n transition: max-width 300ms ease;\n }\n\n .agents-wrapper.expanded {\n max-width: 600px;\n }\n\n .agent-avatar {\n position: relative;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n font-size: 10px;\n font-weight: 600;\n }\n\n .agent-avatar:hover {\n transform: scale(1.1);\n }\n\n .avatar-content {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n color: white;\n position: relative;\n z-index: 1;\n }\n\n /* Status-based colors */\n .status-acknowledging .avatar-content {\n background: linear-gradient(135deg, #3B82F6, #2563EB);\n }\n\n .status-working .avatar-content {\n background: linear-gradient(135deg, #F59E0B, #D97706);\n }\n\n .status-completing .avatar-content {\n background: linear-gradient(135deg, #10B981, #059669);\n }\n\n .status-completed .avatar-content {\n background: linear-gradient(135deg, #6B7280, #4B5563);\n opacity: 0.6;\n }\n\n .status-error .avatar-content {\n background: linear-gradient(135deg, #EF4444, #DC2626);\n }\n\n /* Animated status indicator */\n .status-indicator {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n z-index: 2;\n }\n\n .pulse-ring {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background: currentColor;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-acknowledging .pulse-ring {\n background: #3B82F6;\n }\n\n .status-working .pulse-ring {\n background: #F59E0B;\n animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-completing .pulse-ring {\n background: #10B981;\n animation: pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.5;\n transform: scale(1.5);\n }\n }\n\n /* Confidence badge */\n .confidence-badge {\n position: absolute;\n bottom: -4px;\n right: -4px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 4px;\n padding: 1px 3px;\n font-size: 9px;\n font-weight: 600;\n color: #374151;\n z-index: 3;\n line-height: 1;\n }\n\n .more-agents {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #E5E7EB;\n border: none;\n color: #6B7280;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n }\n\n .more-agents:hover {\n background: #D1D5DB;\n transform: scale(1.05);\n }\n\n .panel-toggle {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n background: #3B82F6;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n transition: all 200ms ease;\n position: relative;\n }\n\n .panel-toggle:hover {\n background: #2563EB;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .agent-count {\n background: rgba(255, 255, 255, 0.2);\n padding: 2px 6px;\n border-radius: 10px;\n font-weight: 600;\n min-width: 20px;\n text-align: center;\n }\n "] }]
|
|
189
|
-
}], () => [{ type: i1.AgentStateService }], {
|
|
269
|
+
}], () => [{ type: i1.AgentStateService }], { ConversationId: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], conversationId: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], CurrentUser: [{
|
|
190
274
|
type: Input
|
|
191
275
|
}], currentUser: [{
|
|
192
276
|
type: Input
|
|
277
|
+
}], MaxVisibleAgents: [{
|
|
278
|
+
type: Input
|
|
193
279
|
}], maxVisibleAgents: [{
|
|
194
280
|
type: Input
|
|
281
|
+
}], TogglePanel: [{
|
|
282
|
+
type: Output
|
|
195
283
|
}], togglePanel: [{
|
|
196
284
|
type: Output
|
|
285
|
+
}], AgentSelected: [{
|
|
286
|
+
type: Output
|
|
197
287
|
}], agentSelected: [{
|
|
198
288
|
type: Output
|
|
199
289
|
}] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-agent-indicator.component.js","sourceRoot":"","sources":["../../../../src/lib/components/agent/active-agent-indicator.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { AgentStateService, AgentStatus } from '../../services/agent-state.service';\nimport { Subscription } from 'rxjs';\n\n/**\n * Displays active agent indicators in the chat header with status animations\n * Shows multiple agents with avatars, status colors, and click-to-expand functionality\n */\n@Component({\n standalone: false,\n selector: 'mj-active-agent-indicator',\n template: `\n @if (activeAgents.length > 0) {\n <div class=\"active-agents-container\">\n <span class=\"active-agents-label\">Active:</span>\n <div class=\"agents-wrapper\" [class.expanded]=\"isExpanded\">\n @for (agent of displayAgents; track agent.run.ID) {\n <div class=\"agent-avatar\"\n [class.status-acknowledging]=\"agent.status === 'acknowledging'\"\n [class.status-working]=\"agent.status === 'working'\"\n [class.status-completing]=\"agent.status === 'completing'\"\n [class.status-completed]=\"agent.status === 'completed'\"\n [class.status-error]=\"agent.status === 'error'\"\n [title]=\"getAgentTooltip(agent)\"\n (click)=\"onAgentClick(agent)\">\n <div class=\"avatar-content\">\n <i class=\"fas fa-robot\"></i>\n </div>\n @if (agent.status !== 'completed') {\n <div class=\"status-indicator\">\n <div class=\"pulse-ring\"></div>\n </div>\n }\n @if (agent.confidence != null) {\n <div class=\"confidence-badge\" [title]=\"'Confidence: ' + (agent.confidence * 100).toFixed(0) + '%'\">\n {{ (agent.confidence * 100).toFixed(0) }}%\n </div>\n }\n </div>\n }\n @if (activeAgents.length > maxVisibleAgents && !isExpanded) {\n <button class=\"more-agents\" (click)=\"toggleExpanded()\" [title]=\"'Show all ' + activeAgents.length + ' agents'\">\n +{{ activeAgents.length - maxVisibleAgents }}\n </button>\n }\n </div>\n <button class=\"panel-toggle\" (click)=\"onTogglePanel()\" title=\"Open agent process panel\">\n <i class=\"fas fa-chart-line\"></i>\n <span class=\"agent-count\">{{ activeAgents.length }}</span>\n </button>\n </div>\n }\n `,\n styles: [`\n .active-agents-container {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background-color: #F4F4F4;\n border-radius: 20px;\n font-size: 12px;\n color: #6B7280;\n height: 32px;\n }\n\n .active-agents-label {\n font-weight: 500;\n color: #6B7280;\n }\n\n .agents-wrapper {\n display: flex;\n align-items: center;\n gap: 6px;\n max-width: 200px;\n overflow: hidden;\n transition: max-width 300ms ease;\n }\n\n .agents-wrapper.expanded {\n max-width: 600px;\n }\n\n .agent-avatar {\n position: relative;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n font-size: 10px;\n font-weight: 600;\n }\n\n .agent-avatar:hover {\n transform: scale(1.1);\n }\n\n .avatar-content {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n color: white;\n position: relative;\n z-index: 1;\n }\n\n /* Status-based colors */\n .status-acknowledging .avatar-content {\n background: linear-gradient(135deg, #3B82F6, #2563EB);\n }\n\n .status-working .avatar-content {\n background: linear-gradient(135deg, #F59E0B, #D97706);\n }\n\n .status-completing .avatar-content {\n background: linear-gradient(135deg, #10B981, #059669);\n }\n\n .status-completed .avatar-content {\n background: linear-gradient(135deg, #6B7280, #4B5563);\n opacity: 0.6;\n }\n\n .status-error .avatar-content {\n background: linear-gradient(135deg, #EF4444, #DC2626);\n }\n\n /* Animated status indicator */\n .status-indicator {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n z-index: 2;\n }\n\n .pulse-ring {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background: currentColor;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-acknowledging .pulse-ring {\n background: #3B82F6;\n }\n\n .status-working .pulse-ring {\n background: #F59E0B;\n animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-completing .pulse-ring {\n background: #10B981;\n animation: pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.5;\n transform: scale(1.5);\n }\n }\n\n /* Confidence badge */\n .confidence-badge {\n position: absolute;\n bottom: -4px;\n right: -4px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 4px;\n padding: 1px 3px;\n font-size: 9px;\n font-weight: 600;\n color: #374151;\n z-index: 3;\n line-height: 1;\n }\n\n .more-agents {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #E5E7EB;\n border: none;\n color: #6B7280;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n }\n\n .more-agents:hover {\n background: #D1D5DB;\n transform: scale(1.05);\n }\n\n .panel-toggle {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n background: #3B82F6;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n transition: all 200ms ease;\n position: relative;\n }\n\n .panel-toggle:hover {\n background: #2563EB;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .agent-count {\n background: rgba(255, 255, 255, 0.2);\n padding: 2px 6px;\n border-radius: 10px;\n font-weight: 600;\n min-width: 20px;\n text-align: center;\n }\n `]\n})\nexport class ActiveAgentIndicatorComponent implements OnInit, OnDestroy {\n @Input() conversationId?: string;\n @Input() currentUser!: UserInfo;\n @Input() maxVisibleAgents: number = 3;\n\n @Output() togglePanel = new EventEmitter<void>();\n @Output() agentSelected = new EventEmitter<MJAIAgentRunEntity>();\n\n public activeAgents: Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> = [];\n public isExpanded: boolean = false;\n\n private subscription?: Subscription;\n\n constructor(private agentStateService: AgentStateService) {}\n\n ngOnInit(): void {\n // Subscribe to active agents for this conversation\n this.subscription = this.agentStateService\n .getActiveAgents(this.conversationId)\n .subscribe(agents => {\n this.activeAgents = agents;\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n get displayAgents(): Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> {\n if (this.isExpanded) {\n return this.activeAgents;\n }\n return this.activeAgents.slice(0, this.maxVisibleAgents);\n }\n\n getAgentTooltip(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): string {\n const statusText = this.getStatusText(agent.status);\n const confidenceText = agent.confidence != null\n ? ` (Confidence: ${(agent.confidence * 100).toFixed(0)}%)`\n : '';\n return `${agent.run.Agent || 'Agent'} - ${statusText}${confidenceText}`;\n }\n\n getStatusText(status: AgentStatus): string {\n switch (status) {\n case 'acknowledging': return 'Acknowledging request';\n case 'working': return 'Working on task';\n case 'completing': return 'Completing';\n case 'completed': return 'Completed';\n case 'error': return 'Error occurred';\n default: return 'Active';\n }\n }\n\n toggleExpanded(): void {\n this.isExpanded = !this.isExpanded;\n }\n\n onAgentClick(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): void {\n this.agentSelected.emit(agent.run);\n }\n\n onTogglePanel(): void {\n this.togglePanel.emit();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"active-agent-indicator.component.js","sourceRoot":"","sources":["../../../../src/lib/components/agent/active-agent-indicator.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { AgentStateService, AgentStatus } from '../../services/agent-state.service';\nimport { Subscription } from 'rxjs';\n\n/**\n * Displays active agent indicators in the chat header with status animations\n * Shows multiple agents with avatars, status colors, and click-to-expand functionality\n */\n@Component({\n standalone: false,\n selector: 'mj-active-agent-indicator',\n template: `\n @if (activeAgents.length > 0) {\n <div class=\"active-agents-container\">\n <span class=\"active-agents-label\">Active:</span>\n <div class=\"agents-wrapper\" [class.expanded]=\"isExpanded\">\n @for (agent of displayAgents; track agent.run.ID) {\n <div class=\"agent-avatar\"\n [class.status-acknowledging]=\"agent.status === 'acknowledging'\"\n [class.status-working]=\"agent.status === 'working'\"\n [class.status-completing]=\"agent.status === 'completing'\"\n [class.status-completed]=\"agent.status === 'completed'\"\n [class.status-error]=\"agent.status === 'error'\"\n [title]=\"getAgentTooltip(agent)\"\n (click)=\"onAgentClick(agent)\">\n <div class=\"avatar-content\">\n <i class=\"fas fa-robot\"></i>\n </div>\n @if (agent.status !== 'completed') {\n <div class=\"status-indicator\">\n <div class=\"pulse-ring\"></div>\n </div>\n }\n @if (agent.confidence != null) {\n <div class=\"confidence-badge\" [title]=\"'Confidence: ' + (agent.confidence * 100).toFixed(0) + '%'\">\n {{ (agent.confidence * 100).toFixed(0) }}%\n </div>\n }\n </div>\n }\n @if (activeAgents.length > maxVisibleAgents && !isExpanded) {\n <button class=\"more-agents\" (click)=\"toggleExpanded()\" [title]=\"'Show all ' + activeAgents.length + ' agents'\">\n +{{ activeAgents.length - maxVisibleAgents }}\n </button>\n }\n </div>\n <button class=\"panel-toggle\" (click)=\"onTogglePanel()\" title=\"Open agent process panel\">\n <i class=\"fas fa-chart-line\"></i>\n <span class=\"agent-count\">{{ activeAgents.length }}</span>\n </button>\n </div>\n }\n `,\n styles: [`\n .active-agents-container {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background-color: #F4F4F4;\n border-radius: 20px;\n font-size: 12px;\n color: #6B7280;\n height: 32px;\n }\n\n .active-agents-label {\n font-weight: 500;\n color: #6B7280;\n }\n\n .agents-wrapper {\n display: flex;\n align-items: center;\n gap: 6px;\n max-width: 200px;\n overflow: hidden;\n transition: max-width 300ms ease;\n }\n\n .agents-wrapper.expanded {\n max-width: 600px;\n }\n\n .agent-avatar {\n position: relative;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n font-size: 10px;\n font-weight: 600;\n }\n\n .agent-avatar:hover {\n transform: scale(1.1);\n }\n\n .avatar-content {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n color: white;\n position: relative;\n z-index: 1;\n }\n\n /* Status-based colors */\n .status-acknowledging .avatar-content {\n background: linear-gradient(135deg, #3B82F6, #2563EB);\n }\n\n .status-working .avatar-content {\n background: linear-gradient(135deg, #F59E0B, #D97706);\n }\n\n .status-completing .avatar-content {\n background: linear-gradient(135deg, #10B981, #059669);\n }\n\n .status-completed .avatar-content {\n background: linear-gradient(135deg, #6B7280, #4B5563);\n opacity: 0.6;\n }\n\n .status-error .avatar-content {\n background: linear-gradient(135deg, #EF4444, #DC2626);\n }\n\n /* Animated status indicator */\n .status-indicator {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n z-index: 2;\n }\n\n .pulse-ring {\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background: currentColor;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-acknowledging .pulse-ring {\n background: #3B82F6;\n }\n\n .status-working .pulse-ring {\n background: #F59E0B;\n animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n .status-completing .pulse-ring {\n background: #10B981;\n animation: pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes pulse {\n 0%, 100% {\n opacity: 1;\n transform: scale(1);\n }\n 50% {\n opacity: 0.5;\n transform: scale(1.5);\n }\n }\n\n /* Confidence badge */\n .confidence-badge {\n position: absolute;\n bottom: -4px;\n right: -4px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 4px;\n padding: 1px 3px;\n font-size: 9px;\n font-weight: 600;\n color: #374151;\n z-index: 3;\n line-height: 1;\n }\n\n .more-agents {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: #E5E7EB;\n border: none;\n color: #6B7280;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n transition: all 200ms ease;\n flex-shrink: 0;\n }\n\n .more-agents:hover {\n background: #D1D5DB;\n transform: scale(1.05);\n }\n\n .panel-toggle {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 6px 10px;\n background: #3B82F6;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 12px;\n cursor: pointer;\n transition: all 200ms ease;\n position: relative;\n }\n\n .panel-toggle:hover {\n background: #2563EB;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .agent-count {\n background: rgba(255, 255, 255, 0.2);\n padding: 2px 6px;\n border-radius: 10px;\n font-weight: 600;\n min-width: 20px;\n text-align: center;\n }\n `]\n})\nexport class ActiveAgentIndicatorComponent 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 @Input() MaxVisibleAgents: number = 3;\n\n /** @deprecated Use {@link MaxVisibleAgents}. */\n @Input() set maxVisibleAgents(value: number) {\n this.MaxVisibleAgents = value;\n }\n /** @deprecated Use {@link MaxVisibleAgents}. */\n get maxVisibleAgents(): number {\n return this.MaxVisibleAgents;\n }\n\n @Output() TogglePanel = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link TogglePanel}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (togglePanel) keeps working. Must stay AFTER TogglePanel: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() togglePanel = this.TogglePanel;\n @Output() AgentSelected = new EventEmitter<MJAIAgentRunEntity>();\n\n /**\n * @deprecated Use {@link AgentSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (agentSelected) keeps working. Must stay AFTER AgentSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() agentSelected = this.AgentSelected;\n\n public ActiveAgents: Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> = [];\n\n /** @deprecated Use {@link ActiveAgents}. */\n public get activeAgents(): Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> {\n return this.ActiveAgents;\n }\n /** @deprecated Use {@link ActiveAgents}. */\n public set activeAgents(value: Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }>) {\n this.ActiveAgents = value;\n }\n public IsExpanded: boolean = false;\n\n /** @deprecated Use {@link IsExpanded}. */\n public get isExpanded(): boolean {\n return this.IsExpanded;\n }\n /** @deprecated Use {@link IsExpanded}. */\n public set isExpanded(value: boolean) {\n this.IsExpanded = value;\n }\n\n private subscription?: Subscription;\n\n constructor(private agentStateService: AgentStateService) {}\n\n ngOnInit(): void {\n // Subscribe to active agents for this conversation\n this.subscription = this.agentStateService\n .getActiveAgents(this.ConversationId)\n .subscribe(agents => {\n this.ActiveAgents = agents;\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n get DisplayAgents(): Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> {\n if (this.IsExpanded) {\n return this.ActiveAgents;\n }\n return this.ActiveAgents.slice(0, this.MaxVisibleAgents);\n }\n\n /** @deprecated Use {@link DisplayAgents}. */\n get displayAgents(): Array<{ run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }> {\n return this.DisplayAgents;\n }\n\n GetAgentTooltip(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): string {\n const statusText = this.GetStatusText(agent.status);\n const confidenceText = agent.confidence != null\n ? ` (Confidence: ${(agent.confidence * 100).toFixed(0)}%)`\n : '';\n return `${agent.run.Agent || 'Agent'} - ${statusText}${confidenceText}`;\n }\n\n /** @deprecated Use {@link GetAgentTooltip}. */\n getAgentTooltip(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): string {\n return this.GetAgentTooltip(agent);\n }\n\n GetStatusText(status: AgentStatus): string {\n switch (status) {\n case 'acknowledging': return 'Acknowledging request';\n case 'working': return 'Working on task';\n case 'completing': return 'Completing';\n case 'completed': return 'Completed';\n case 'error': return 'Error occurred';\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 ToggleExpanded(): void {\n this.IsExpanded = !this.IsExpanded;\n }\n\n /** @deprecated Use {@link ToggleExpanded}. */\n toggleExpanded(): void {\n return this.ToggleExpanded();\n }\n\n OnAgentClick(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): void {\n this.AgentSelected.emit(agent.run);\n }\n\n /** @deprecated Use {@link OnAgentClick}. */\n onAgentClick(agent: { run: MJAIAgentRunEntity; status: AgentStatus; confidence: number | null }): void {\n return this.OnAgentClick(agent);\n }\n\n OnTogglePanel(): void {\n this.TogglePanel.emit();\n }\n\n /** @deprecated Use {@link OnTogglePanel}. */\n onTogglePanel(): void {\n return this.OnTogglePanel();\n }\n}\n"]}
|