@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
|
@@ -1,34 +1,51 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@memberjunction/ng-ui-components";
|
|
4
|
-
function
|
|
5
|
-
i0.ɵɵelement(0, "i",
|
|
4
|
+
function ActionableCommandsComponent_Conditional_0_For_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
i0.ɵɵelement(0, "i", 7);
|
|
6
6
|
} if (rf & 2) {
|
|
7
7
|
const command_r2 = i0.ɵɵnextContext().$implicit;
|
|
8
8
|
i0.ɵɵclassMap(i0.ɵɵinterpolate1("fa ", command_r2.icon));
|
|
9
9
|
} }
|
|
10
|
+
function ActionableCommandsComponent_Conditional_0_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 6);
|
|
12
|
+
i0.ɵɵtext(1);
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
i0.ɵɵnextContext();
|
|
16
|
+
const recipients_r4 = i0.ɵɵreadContextLet(0);
|
|
17
|
+
i0.ɵɵadvance();
|
|
18
|
+
i0.ɵɵtextInterpolate(recipients_r4);
|
|
19
|
+
} }
|
|
10
20
|
function ActionableCommandsComponent_Conditional_0_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
11
21
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
12
|
-
i0.ɵɵ
|
|
13
|
-
i0.ɵɵ
|
|
14
|
-
i0.ɵɵ
|
|
15
|
-
i0.ɵɵ
|
|
22
|
+
i0.ɵɵdeclareLet(0);
|
|
23
|
+
i0.ɵɵelementStart(1, "div", 3)(2, "button", 4);
|
|
24
|
+
i0.ɵɵlistener("click", function ActionableCommandsComponent_Conditional_0_For_5_Template_button_click_2_listener() { const command_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCommandClick(command_r2)); });
|
|
25
|
+
i0.ɵɵconditionalCreate(3, ActionableCommandsComponent_Conditional_0_For_5_Conditional_3_Template, 1, 3, "i", 5);
|
|
26
|
+
i0.ɵɵtext(4);
|
|
27
|
+
i0.ɵɵelementEnd();
|
|
28
|
+
i0.ɵɵconditionalCreate(5, ActionableCommandsComponent_Conditional_0_For_5_Conditional_5_Template, 2, 1, "div", 6);
|
|
16
29
|
i0.ɵɵelementEnd();
|
|
17
30
|
} if (rf & 2) {
|
|
18
31
|
const command_r2 = ctx.$implicit;
|
|
19
32
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
33
|
+
const recipients_r5 = i0.ɵɵstoreLet(ctx_r2.ComposeEmailRecipients(command_r2));
|
|
34
|
+
i0.ɵɵadvance(2);
|
|
20
35
|
i0.ɵɵproperty("variant", ctx_r2.getButtonVariant(command_r2))("disabled", ctx_r2.disabled);
|
|
21
36
|
i0.ɵɵadvance();
|
|
22
|
-
i0.ɵɵconditional(command_r2.icon ?
|
|
37
|
+
i0.ɵɵconditional(command_r2.icon ? 3 : -1);
|
|
23
38
|
i0.ɵɵadvance();
|
|
24
39
|
i0.ɵɵtextInterpolate1(" ", command_r2.label, " ");
|
|
40
|
+
i0.ɵɵadvance();
|
|
41
|
+
i0.ɵɵconditional(recipients_r5 ? 5 : -1);
|
|
25
42
|
} }
|
|
26
43
|
function ActionableCommandsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
27
44
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
28
45
|
i0.ɵɵtext(2, "Actions:");
|
|
29
46
|
i0.ɵɵelementEnd();
|
|
30
47
|
i0.ɵɵelementStart(3, "div", 2);
|
|
31
|
-
i0.ɵɵrepeaterCreate(4, ActionableCommandsComponent_Conditional_0_For_5_Template,
|
|
48
|
+
i0.ɵɵrepeaterCreate(4, ActionableCommandsComponent_Conditional_0_For_5_Template, 6, 6, "div", 3, i0.ɵɵcomponentInstance().trackByCommand, true);
|
|
32
49
|
i0.ɵɵelementEnd()();
|
|
33
50
|
} if (rf & 2) {
|
|
34
51
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -40,33 +57,112 @@ function ActionableCommandsComponent_Conditional_0_Template(rf, ctx) { if (rf &
|
|
|
40
57
|
* These are actions the user can trigger after an agent completes a task
|
|
41
58
|
*/
|
|
42
59
|
export class ActionableCommandsComponent {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
Commands = [];
|
|
61
|
+
/** @deprecated Use {@link Commands}. */
|
|
62
|
+
set commands(value) {
|
|
63
|
+
this.Commands = value;
|
|
64
|
+
}
|
|
65
|
+
/** @deprecated Use {@link Commands}. */
|
|
66
|
+
get commands() {
|
|
67
|
+
return this.Commands;
|
|
68
|
+
}
|
|
69
|
+
Disabled = false;
|
|
70
|
+
/** @deprecated Use {@link Disabled}. */
|
|
71
|
+
set disabled(value) {
|
|
72
|
+
this.Disabled = value;
|
|
73
|
+
}
|
|
74
|
+
/** @deprecated Use {@link Disabled}. */
|
|
75
|
+
get disabled() {
|
|
76
|
+
return this.Disabled;
|
|
77
|
+
}
|
|
78
|
+
IsLastMessage = false;
|
|
79
|
+
/** @deprecated Use {@link IsLastMessage}. */
|
|
80
|
+
set isLastMessage(value) {
|
|
81
|
+
this.IsLastMessage = value;
|
|
82
|
+
}
|
|
83
|
+
/** @deprecated Use {@link IsLastMessage}. */
|
|
84
|
+
get isLastMessage() {
|
|
85
|
+
return this.IsLastMessage;
|
|
86
|
+
}
|
|
87
|
+
IsConversationOwner = false;
|
|
88
|
+
/** @deprecated Use {@link IsConversationOwner}. */
|
|
89
|
+
set isConversationOwner(value) {
|
|
90
|
+
this.IsConversationOwner = value;
|
|
91
|
+
}
|
|
92
|
+
/** @deprecated Use {@link IsConversationOwner}. */
|
|
93
|
+
get isConversationOwner() {
|
|
94
|
+
return this.IsConversationOwner;
|
|
95
|
+
}
|
|
96
|
+
CommandExecuted = new EventEmitter();
|
|
97
|
+
/**
|
|
98
|
+
* @deprecated Use {@link CommandExecuted}.
|
|
99
|
+
*
|
|
100
|
+
* The same emitter under the old binding name, so a template still binding
|
|
101
|
+
* (commandExecuted) keeps working. Must stay AFTER CommandExecuted: class fields
|
|
102
|
+
* initialise in order, and the other way round this captures undefined.
|
|
103
|
+
*/
|
|
104
|
+
commandExecuted = this.CommandExecuted;
|
|
48
105
|
/**
|
|
49
106
|
* Check if component should be visible
|
|
50
107
|
*/
|
|
108
|
+
get IsVisible() {
|
|
109
|
+
return (this.IsLastMessage &&
|
|
110
|
+
this.IsConversationOwner &&
|
|
111
|
+
this.Commands &&
|
|
112
|
+
this.Commands.length > 0);
|
|
113
|
+
}
|
|
114
|
+
/** @deprecated Use {@link IsVisible}. */
|
|
51
115
|
get isVisible() {
|
|
52
|
-
return
|
|
53
|
-
this.isConversationOwner &&
|
|
54
|
-
this.commands &&
|
|
55
|
-
this.commands.length > 0);
|
|
116
|
+
return this.IsVisible;
|
|
56
117
|
}
|
|
57
118
|
/**
|
|
58
119
|
* Handle command button click
|
|
59
120
|
*/
|
|
121
|
+
OnCommandClick(command) {
|
|
122
|
+
if (!this.Disabled) {
|
|
123
|
+
this.CommandExecuted.emit(command);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** @deprecated Use {@link OnCommandClick}. */
|
|
60
127
|
onCommandClick(command) {
|
|
61
|
-
|
|
62
|
-
|
|
128
|
+
return this.OnCommandClick(command);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Recipients to show BESIDE a compose:email button, or null for any other command.
|
|
132
|
+
*
|
|
133
|
+
* SECURITY, not decoration. The button renders only the agent-authored `label`, so without this
|
|
134
|
+
* the user cannot see who a draft is addressed to until their mail client is already open and
|
|
135
|
+
* populated. An agent influenced by injected content in retrieved material could pair a benign
|
|
136
|
+
* label ("Open draft in Mail") with an attacker's address and the conversation's context as the
|
|
137
|
+
* body; showing the address is what lets the user notice before they send from their real
|
|
138
|
+
* mailbox. Empty recipients read as "no recipient" rather than rendering nothing, so an address
|
|
139
|
+
* the agent never supplied cannot be mistaken for one it did.
|
|
140
|
+
*/
|
|
141
|
+
ComposeEmailRecipients(command) {
|
|
142
|
+
if (command.type !== 'compose:email') {
|
|
143
|
+
return null;
|
|
63
144
|
}
|
|
145
|
+
const to = (command.to ?? []).map((r) => r.trim()).filter((r) => r.length > 0);
|
|
146
|
+
const cc = (command.cc ?? []).map((r) => r.trim()).filter((r) => r.length > 0);
|
|
147
|
+
const bcc = (command.bcc ?? []).map((r) => r.trim()).filter((r) => r.length > 0);
|
|
148
|
+
if (to.length === 0 && cc.length === 0 && bcc.length === 0) {
|
|
149
|
+
return 'no recipient — you\'ll add one';
|
|
150
|
+
}
|
|
151
|
+
const parts = [];
|
|
152
|
+
if (to.length > 0)
|
|
153
|
+
parts.push(`To ${to.join(', ')}`);
|
|
154
|
+
if (cc.length > 0)
|
|
155
|
+
parts.push(`Cc ${cc.join(', ')}`);
|
|
156
|
+
if (bcc.length > 0)
|
|
157
|
+
parts.push(`Bcc ${bcc.join(', ')}`);
|
|
158
|
+
return parts.join(' · ');
|
|
64
159
|
}
|
|
65
160
|
/**
|
|
66
161
|
* Get button variant based on command type
|
|
67
162
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
163
|
+
GetButtonVariant(command) {
|
|
164
|
+
// A drafted email leads the turn the same way an opened resource does.
|
|
165
|
+
if (command.type === 'open:resource' || command.type === 'compose:email') {
|
|
70
166
|
return 'primary';
|
|
71
167
|
}
|
|
72
168
|
else if (command.type === 'open:url') {
|
|
@@ -74,30 +170,48 @@ export class ActionableCommandsComponent {
|
|
|
74
170
|
}
|
|
75
171
|
return 'secondary';
|
|
76
172
|
}
|
|
173
|
+
/** @deprecated Use {@link GetButtonVariant}. */
|
|
174
|
+
getButtonVariant(command) {
|
|
175
|
+
return this.GetButtonVariant(command);
|
|
176
|
+
}
|
|
77
177
|
/**
|
|
78
178
|
* Track by function for commands list
|
|
79
179
|
*/
|
|
80
|
-
|
|
180
|
+
TrackByCommand(index, command) {
|
|
81
181
|
return `${command.type}_${index}`;
|
|
82
182
|
}
|
|
183
|
+
/** @deprecated Use {@link TrackByCommand}. */
|
|
184
|
+
trackByCommand(index, command) {
|
|
185
|
+
return this.TrackByCommand(index, command);
|
|
186
|
+
}
|
|
83
187
|
static ɵfac = function ActionableCommandsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ActionableCommandsComponent)(); };
|
|
84
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionableCommandsComponent, selectors: [["mj-actionable-commands"]], inputs: { commands: "commands", disabled: "disabled", isLastMessage: "isLastMessage", isConversationOwner: "isConversationOwner" }, outputs: { commandExecuted: "commandExecuted" }, standalone: false, decls: 1, vars: 1, consts: [[1, "actionable-commands"], [1, "commands-label"], [1, "commands-buttons"], [
|
|
188
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionableCommandsComponent, selectors: [["mj-actionable-commands"]], inputs: { Commands: "Commands", commands: "commands", Disabled: "Disabled", disabled: "disabled", IsLastMessage: "IsLastMessage", isLastMessage: "isLastMessage", IsConversationOwner: "IsConversationOwner", isConversationOwner: "isConversationOwner" }, outputs: { CommandExecuted: "CommandExecuted", commandExecuted: "commandExecuted" }, standalone: false, decls: 1, vars: 1, consts: [[1, "actionable-commands"], [1, "commands-label"], [1, "commands-buttons"], [1, "command-item"], ["mjButton", "", 1, "command-button", 3, "click", "variant", "disabled"], ["aria-hidden", "true", 3, "class"], [1, "command-recipients"], ["aria-hidden", "true"]], template: function ActionableCommandsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
85
189
|
i0.ɵɵconditionalCreate(0, ActionableCommandsComponent_Conditional_0_Template, 6, 0, "div", 0);
|
|
86
190
|
} if (rf & 2) {
|
|
87
191
|
i0.ɵɵconditional(ctx.isVisible ? 0 : -1);
|
|
88
|
-
} }, dependencies: [i1.MJButtonDirective], styles: [".actionable-commands[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-left: 3px solid var(--mj-brand-primary);\n border-radius: 4px;\n}\n\n.commands-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.commands-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n\n.command-button[_ngcontent-%COMP%] {\n padding: 8px 16px;\n font-size: 14px;\n}\n\n.command-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n@media (max-width: 768px) {\n .commands-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .command-button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}"] });
|
|
192
|
+
} }, dependencies: [i1.MJButtonDirective], styles: [".actionable-commands[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-left: 3px solid var(--mj-brand-primary);\n border-radius: 4px;\n}\n\n.commands-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.commands-buttons[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n\n.command-button[_ngcontent-%COMP%] {\n padding: 8px 16px;\n font-size: 14px;\n}\n\n.command-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n@media (max-width: 768px) {\n .commands-buttons[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .command-button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n.command-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n\n\n.command-recipients[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted, #6b6b6b);\n max-width: 320px;\n white-space: normal;\n overflow-wrap: anywhere;\n}"] });
|
|
89
193
|
}
|
|
90
194
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionableCommandsComponent, [{
|
|
91
195
|
type: Component,
|
|
92
|
-
args: [{ standalone: false, selector: 'mj-actionable-commands', template: "@if (isVisible) {\n <div class=\"actionable-commands\">\n <div class=\"commands-label\">Actions:</div>\n <div class=\"commands-buttons\">\n @for (command of commands; track trackByCommand($index, command)) {\n <button mjButton\n
|
|
93
|
-
}], null, {
|
|
196
|
+
args: [{ standalone: false, selector: 'mj-actionable-commands', template: "@if (isVisible) {\n <div class=\"actionable-commands\">\n <div class=\"commands-label\">Actions:</div>\n <div class=\"commands-buttons\">\n @for (command of commands; track trackByCommand($index, command)) {\n @let recipients = ComposeEmailRecipients(command);\n <div class=\"command-item\">\n <button mjButton\n [variant]=\"getButtonVariant(command)\"\n [disabled]=\"disabled\"\n (click)=\"onCommandClick(command)\"\n class=\"command-button\"\n >\n @if (command.icon) {\n <i class=\"fa {{ command.icon }}\" aria-hidden=\"true\"></i>\n }\n {{ command.label }}\n </button>\n @if (recipients) {\n <!-- Shown so the user can see WHO a draft is addressed to before their mail client\n opens already populated \u2014 see ComposeEmailRecipients(). -->\n <div class=\"command-recipients\">{{ recipients }}</div>\n }\n </div>\n }\n </div>\n </div>\n}\n", styles: [".actionable-commands {\n margin-top: 16px;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-left: 3px solid var(--mj-brand-primary);\n border-radius: 4px;\n}\n\n.commands-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.commands-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n}\n\n.command-button {\n padding: 8px 16px;\n font-size: 14px;\n}\n\n.command-button i {\n margin-right: 6px;\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .commands-buttons {\n flex-direction: column;\n }\n\n .command-button {\n width: 100%;\n }\n}\n\n/* compose:email shows its recipients under the button so the address is visible\n before the mail client opens. */\n.command-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n/* Wraps rather than truncating: Bcc is listed LAST, so an ellipsis would cut off exactly the\n address this line exists to expose. overflow-wrap breaks a long address that has no spaces. */\n.command-recipients {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted, #6b6b6b);\n max-width: 320px;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n"] }]
|
|
197
|
+
}], null, { Commands: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], commands: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], Disabled: [{
|
|
94
202
|
type: Input
|
|
95
203
|
}], disabled: [{
|
|
96
204
|
type: Input
|
|
205
|
+
}], IsLastMessage: [{
|
|
206
|
+
type: Input
|
|
97
207
|
}], isLastMessage: [{
|
|
98
208
|
type: Input
|
|
209
|
+
}], IsConversationOwner: [{
|
|
210
|
+
type: Input
|
|
99
211
|
}], isConversationOwner: [{
|
|
100
212
|
type: Input
|
|
213
|
+
}], CommandExecuted: [{
|
|
214
|
+
type: Output
|
|
101
215
|
}], commandExecuted: [{
|
|
102
216
|
type: Output
|
|
103
217
|
}] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionable-commands.component.js","sourceRoot":"","sources":["../../../../src/lib/components/message/actionable-commands.component.ts","../../../../src/lib/components/message/actionable-commands.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;ICY3D,uBAAwD;;;IAArD,cAAA,yCAA6B,CAAA;;;;IAPpC,iCAKG;IAFD,mOAAS,iCAAuB,KAAC;IAGjC,+GAAoB;IAGpB,YACF;IAAA,iBAAS;;;;IARP,AADA,6DAAqC,6BAChB;IAIrB,cAEC;IAFD,0CAEC;IACD,cACF;IADE,iDACF;;;IAbJ,AADF,8BAAiC,aACH;IAAA,wBAAQ;IAAA,iBAAM;IAC1C,8BAA8B;IAC5B,kJAYC;IAEL,AADE,iBAAM,EACF;;;IAdF,eAYC;IAZD,8BAYC;;ADbP;;;GAGG;AAOH,MAAM,OAAO,2BAA2B;IAC7B,QAAQ,GAAwB,EAAE,CAAC;IACnC,QAAQ,GAAY,KAAK,CAAC;IAC1B,aAAa,GAAY,KAAK,CAAC;IAC/B,mBAAmB,GAAY,KAAK,CAAC;IAEpC,eAAe,GAAG,IAAI,YAAY,EAAqB,CAAC;IAElE;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,CACL,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,OAA0B;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,OAA0B;QAChD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,KAAa,EAAE,OAA0B;QAC7D,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;IACpC,CAAC;qHA9CU,2BAA2B;6DAA3B,2BAA2B;YCbxC,6FAAiB;;YAAjB,wCAmBC;;;iFDNY,2BAA2B;cANvC,SAAS;6BACI,KAAK,YACP,wBAAwB;;kBAKjC,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kFANI,2BAA2B","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ActionableCommand } from '@memberjunction/ai-core-plus';\n\n/**\n * Component for displaying actionable command buttons\n * These are actions the user can trigger after an agent completes a task\n */\n@Component({\n standalone: false,\n selector: 'mj-actionable-commands',\n templateUrl: './actionable-commands.component.html',\n styleUrls: ['./actionable-commands.component.css']\n})\nexport class ActionableCommandsComponent {\n @Input() commands: ActionableCommand[] = [];\n @Input() disabled: boolean = false;\n @Input() isLastMessage: boolean = false;\n @Input() isConversationOwner: boolean = false;\n\n @Output() commandExecuted = new EventEmitter<ActionableCommand>();\n\n /**\n * Check if component should be visible\n */\n public get isVisible(): boolean {\n return (\n this.isLastMessage &&\n this.isConversationOwner &&\n this.commands &&\n this.commands.length > 0\n );\n }\n\n /**\n * Handle command button click\n */\n public onCommandClick(command: ActionableCommand): void {\n if (!this.disabled) {\n this.commandExecuted.emit(command);\n }\n }\n\n /**\n * Get button variant based on command type\n */\n public getButtonVariant(command: ActionableCommand): 'primary' | 'secondary' | 'outline' | 'flat' {\n if (command.type === 'open:resource') {\n return 'primary';\n } else if (command.type === 'open:url') {\n return 'outline';\n }\n return 'secondary';\n }\n\n /**\n * Track by function for commands list\n */\n public trackByCommand(index: number, command: ActionableCommand): string {\n return `${command.type}_${index}`;\n }\n}\n","@if (isVisible) {\n <div class=\"actionable-commands\">\n <div class=\"commands-label\">Actions:</div>\n <div class=\"commands-buttons\">\n @for (command of commands; track trackByCommand($index, command)) {\n <button mjButton\n [variant]=\"getButtonVariant(command)\"\n [disabled]=\"disabled\"\n (click)=\"onCommandClick(command)\"\n class=\"command-button\"\n >\n @if (command.icon) {\n <i class=\"fa {{ command.icon }}\" aria-hidden=\"true\"></i>\n }\n {{ command.label }}\n </button>\n }\n </div>\n </div>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"actionable-commands.component.js","sourceRoot":"","sources":["../../../../src/lib/components/message/actionable-commands.component.ts","../../../../src/lib/components/message/actionable-commands.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ActionableCommand } from '@memberjunction/ai-core-plus';\n\n/**\n * Component for displaying actionable command buttons\n * These are actions the user can trigger after an agent completes a task\n */\n@Component({\n standalone: false,\n selector: 'mj-actionable-commands',\n templateUrl: './actionable-commands.component.html',\n styleUrls: ['./actionable-commands.component.css']\n})\nexport class ActionableCommandsComponent {\n @Input() Commands: ActionableCommand[] = [];\n\n /** @deprecated Use {@link Commands}. */\n @Input() set commands(value: ActionableCommand[]) {\n this.Commands = value;\n }\n /** @deprecated Use {@link Commands}. */\n get commands(): ActionableCommand[] {\n return this.Commands;\n }\n @Input() Disabled: boolean = false;\n\n /** @deprecated Use {@link Disabled}. */\n @Input() set disabled(value: boolean) {\n this.Disabled = value;\n }\n /** @deprecated Use {@link Disabled}. */\n get disabled(): boolean {\n return this.Disabled;\n }\n @Input() IsLastMessage: boolean = false;\n\n /** @deprecated Use {@link IsLastMessage}. */\n @Input() set isLastMessage(value: boolean) {\n this.IsLastMessage = value;\n }\n /** @deprecated Use {@link IsLastMessage}. */\n get isLastMessage(): boolean {\n return this.IsLastMessage;\n }\n @Input() IsConversationOwner: boolean = false;\n\n /** @deprecated Use {@link IsConversationOwner}. */\n @Input() set isConversationOwner(value: boolean) {\n this.IsConversationOwner = value;\n }\n /** @deprecated Use {@link IsConversationOwner}. */\n get isConversationOwner(): boolean {\n return this.IsConversationOwner;\n }\n\n @Output() CommandExecuted = new EventEmitter<ActionableCommand>();\n\n /**\n * @deprecated Use {@link CommandExecuted}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (commandExecuted) keeps working. Must stay AFTER CommandExecuted: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() commandExecuted = this.CommandExecuted;\n\n /**\n * Check if component should be visible\n */\n public get IsVisible(): boolean {\n return (\n this.IsLastMessage &&\n this.IsConversationOwner &&\n this.Commands &&\n this.Commands.length > 0\n );\n }\n\n /** @deprecated Use {@link IsVisible}. */\n public get isVisible(): boolean {\n return this.IsVisible;\n }\n\n /**\n * Handle command button click\n */\n public OnCommandClick(command: ActionableCommand): void {\n if (!this.Disabled) {\n this.CommandExecuted.emit(command);\n }\n }\n\n /** @deprecated Use {@link OnCommandClick}. */\n public onCommandClick(command: ActionableCommand): void {\n return this.OnCommandClick(command);\n }\n\n /**\n * Recipients to show BESIDE a compose:email button, or null for any other command.\n *\n * SECURITY, not decoration. The button renders only the agent-authored `label`, so without this\n * the user cannot see who a draft is addressed to until their mail client is already open and\n * populated. An agent influenced by injected content in retrieved material could pair a benign\n * label (\"Open draft in Mail\") with an attacker's address and the conversation's context as the\n * body; showing the address is what lets the user notice before they send from their real\n * mailbox. Empty recipients read as \"no recipient\" rather than rendering nothing, so an address\n * the agent never supplied cannot be mistaken for one it did.\n */\n public ComposeEmailRecipients(command: ActionableCommand): string | null {\n if (command.type !== 'compose:email') {\n return null;\n }\n const to = (command.to ?? []).map((r) => r.trim()).filter((r) => r.length > 0);\n const cc = (command.cc ?? []).map((r) => r.trim()).filter((r) => r.length > 0);\n const bcc = (command.bcc ?? []).map((r) => r.trim()).filter((r) => r.length > 0);\n if (to.length === 0 && cc.length === 0 && bcc.length === 0) {\n return 'no recipient — you\\'ll add one';\n }\n const parts: string[] = [];\n if (to.length > 0) parts.push(`To ${to.join(', ')}`);\n if (cc.length > 0) parts.push(`Cc ${cc.join(', ')}`);\n if (bcc.length > 0) parts.push(`Bcc ${bcc.join(', ')}`);\n return parts.join(' · ');\n }\n\n /**\n * Get button variant based on command type\n */\n public GetButtonVariant(command: ActionableCommand): 'primary' | 'secondary' | 'outline' | 'flat' {\n // A drafted email leads the turn the same way an opened resource does.\n if (command.type === 'open:resource' || command.type === 'compose:email') {\n return 'primary';\n } else if (command.type === 'open:url') {\n return 'outline';\n }\n return 'secondary';\n }\n\n /** @deprecated Use {@link GetButtonVariant}. */\n public getButtonVariant(command: ActionableCommand): 'primary' | 'secondary' | 'outline' | 'flat' {\n return this.GetButtonVariant(command);\n }\n\n /**\n * Track by function for commands list\n */\n public TrackByCommand(index: number, command: ActionableCommand): string {\n return `${command.type}_${index}`;\n }\n\n /** @deprecated Use {@link TrackByCommand}. */\n public trackByCommand(index: number, command: ActionableCommand): string {\n return this.TrackByCommand(index, command);\n }\n}\n","@if (isVisible) {\n <div class=\"actionable-commands\">\n <div class=\"commands-label\">Actions:</div>\n <div class=\"commands-buttons\">\n @for (command of commands; track trackByCommand($index, command)) {\n @let recipients = ComposeEmailRecipients(command);\n <div class=\"command-item\">\n <button mjButton\n [variant]=\"getButtonVariant(command)\"\n [disabled]=\"disabled\"\n (click)=\"onCommandClick(command)\"\n class=\"command-button\"\n >\n @if (command.icon) {\n <i class=\"fa {{ command.icon }}\" aria-hidden=\"true\"></i>\n }\n {{ command.label }}\n </button>\n @if (recipients) {\n <!-- Shown so the user can see WHO a draft is addressed to before their mail client\n opens already populated — see ComposeEmailRecipients(). -->\n <div class=\"command-recipients\">{{ recipients }}</div>\n }\n </div>\n }\n </div>\n </div>\n}\n"]}
|
|
@@ -16,8 +16,16 @@ import * as i0 from "@angular/core";
|
|
|
16
16
|
export declare class ConversationMessageRatingComponent extends BaseAngularComponent implements OnInit {
|
|
17
17
|
private cdr;
|
|
18
18
|
private dialogService;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
ConversationDetailId: string;
|
|
20
|
+
/** @deprecated Use {@link ConversationDetailId}. */
|
|
21
|
+
set conversationDetailId(value: string);
|
|
22
|
+
/** @deprecated Use {@link ConversationDetailId}. */
|
|
23
|
+
get conversationDetailId(): string;
|
|
24
|
+
CurrentUser: UserInfo;
|
|
25
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
26
|
+
set currentUser(value: UserInfo);
|
|
27
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
28
|
+
get currentUser(): UserInfo;
|
|
21
29
|
/**
|
|
22
30
|
* When false, the rating UI renders as a read-only badge instead of an editable
|
|
23
31
|
* button. Set by the parent (MessageItemComponent) to `false` when the current
|
|
@@ -30,20 +38,48 @@ export declare class ConversationMessageRatingComponent extends BaseAngularCompo
|
|
|
30
38
|
* `MJ: Conversation Details` (which has `UserRating`/`UserFeedback`).
|
|
31
39
|
* Skip-Brain hosts pass `'Conversation Details__Skip'`.
|
|
32
40
|
*/
|
|
33
|
-
|
|
41
|
+
RatingEntityName: string;
|
|
42
|
+
/** @deprecated Use {@link RatingEntityName}. */
|
|
43
|
+
set ratingEntityName(value: string);
|
|
44
|
+
/** @deprecated Use {@link RatingEntityName}. */
|
|
45
|
+
get ratingEntityName(): string;
|
|
34
46
|
/** Column on the entity that stores the 1-10 rating. */
|
|
35
|
-
|
|
47
|
+
RatingField: string;
|
|
48
|
+
/** @deprecated Use {@link RatingField}. */
|
|
49
|
+
set ratingField(value: string);
|
|
50
|
+
/** @deprecated Use {@link RatingField}. */
|
|
51
|
+
get ratingField(): string;
|
|
36
52
|
/** Column on the entity that stores the free-form feedback. */
|
|
37
|
-
|
|
53
|
+
RatingCommentField: string;
|
|
54
|
+
/** @deprecated Use {@link RatingCommentField}. */
|
|
55
|
+
set ratingCommentField(value: string);
|
|
56
|
+
/** @deprecated Use {@link RatingCommentField}. */
|
|
57
|
+
get ratingCommentField(): string;
|
|
38
58
|
/**
|
|
39
59
|
* Optional: legacy pre-loaded ratings array (no longer used by storage; kept
|
|
40
60
|
* to preserve the input shape used by existing call sites like
|
|
41
61
|
* MessageItemComponent).
|
|
42
62
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
RatingsData?: RatingJSON[];
|
|
64
|
+
/** @deprecated Use {@link RatingsData}. */
|
|
65
|
+
set ratingsData(value: RatingJSON[] | undefined);
|
|
66
|
+
/** @deprecated Use {@link RatingsData}. */
|
|
67
|
+
get ratingsData(): RatingJSON[] | undefined;
|
|
68
|
+
CurrentUserRating: number | null;
|
|
69
|
+
/** @deprecated Use {@link CurrentUserRating}. */
|
|
70
|
+
get currentUserRating(): number | null;
|
|
71
|
+
/** @deprecated Use {@link CurrentUserRating}. */
|
|
72
|
+
set currentUserRating(value: number | null);
|
|
73
|
+
CurrentUserComments: string;
|
|
74
|
+
/** @deprecated Use {@link CurrentUserComments}. */
|
|
75
|
+
get currentUserComments(): string;
|
|
76
|
+
/** @deprecated Use {@link CurrentUserComments}. */
|
|
77
|
+
set currentUserComments(value: string);
|
|
78
|
+
IsSaving: boolean;
|
|
79
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
80
|
+
get isSaving(): boolean;
|
|
81
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
82
|
+
set isSaving(value: boolean);
|
|
47
83
|
constructor(cdr: ChangeDetectorRef, dialogService: DialogService);
|
|
48
84
|
ngOnInit(): Promise<void>;
|
|
49
85
|
OpenRatingDialog(): Promise<void>;
|
|
@@ -57,6 +93,6 @@ export declare class ConversationMessageRatingComponent extends BaseAngularCompo
|
|
|
57
93
|
private loadRating;
|
|
58
94
|
private saveRating;
|
|
59
95
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConversationMessageRatingComponent, never>;
|
|
60
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConversationMessageRatingComponent, "mj-conversation-message-rating", never, { "conversationDetailId": { "alias": "conversationDetailId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; "ratingEntityName": { "alias": "ratingEntityName"; "required": false; }; "ratingField": { "alias": "ratingField"; "required": false; }; "ratingCommentField": { "alias": "ratingCommentField"; "required": false; }; "ratingsData": { "alias": "ratingsData"; "required": false; }; }, {}, never, never, false, never>;
|
|
96
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConversationMessageRatingComponent, "mj-conversation-message-rating", never, { "ConversationDetailId": { "alias": "ConversationDetailId"; "required": false; }; "conversationDetailId": { "alias": "conversationDetailId"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "canEdit": { "alias": "canEdit"; "required": false; }; "RatingEntityName": { "alias": "RatingEntityName"; "required": false; }; "ratingEntityName": { "alias": "ratingEntityName"; "required": false; }; "RatingField": { "alias": "RatingField"; "required": false; }; "ratingField": { "alias": "ratingField"; "required": false; }; "RatingCommentField": { "alias": "RatingCommentField"; "required": false; }; "ratingCommentField": { "alias": "ratingCommentField"; "required": false; }; "RatingsData": { "alias": "RatingsData"; "required": false; }; "ratingsData": { "alias": "ratingsData"; "required": false; }; }, {}, never, never, false, never>;
|
|
61
97
|
}
|
|
62
98
|
//# sourceMappingURL=conversation-message-rating.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-message-rating.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/conversation-message-rating.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAqC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;;AAiB9D;;;;;;;;GAQG;AACH,qBA+Fa,kCAAmC,SAAQ,oBAAqB,YAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"conversation-message-rating.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/conversation-message-rating.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAqC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAkB,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;;AAiB9D;;;;;;;;GAQG;AACH,qBA+Fa,kCAAmC,SAAQ,oBAAqB,YAAW,MAAM;IAsH1F,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,aAAa;IAtHd,oBAAoB,EAAG,MAAM,CAAC;IAEvC,oDAAoD;IACpD,IAAa,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAE9C;IACD,oDAAoD;IACpD,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IACQ,WAAW,EAAG,QAAQ,CAAC;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,QAAQ,EAEvC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,QAAQ,CAE1B;IAED;;;;;OAKG;IACM,OAAO,EAAE,OAAO,CAAQ;IAEjC;;;;OAIG;IACM,gBAAgB,EAAE,MAAM,CAA8B;IAE/D,gDAAgD;IAChD,IAAa,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAE1C;IACD,gDAAgD;IAChD,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,wDAAwD;IAC/C,WAAW,EAAE,MAAM,CAAgB;IAE5C,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,MAAM,EAErC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,+DAA+D;IACtD,kBAAkB,EAAE,MAAM,CAAkB;IAErD,kDAAkD;IAClD,IAAa,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAE5C;IACD,kDAAkD;IAClD,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACM,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAEpC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,EAEvD;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,UAAU,EAAE,GAAG,SAAS,CAE1C;IAED,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAExC,iDAAiD;IACjD,IAAI,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAErC;IACD,iDAAiD;IACjD,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAEzC;IACD,mBAAmB,EAAE,MAAM,CAAM;IAEjC,mDAAmD;IACnD,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IACD,mDAAmD;IACnD,IAAI,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAEpC;IACD,QAAQ,UAAS;IAEjB,wCAAwC;IACxC,IAAI,QAAQ,YAEX;IACD,wCAAwC;IACxC,IAAI,QAAQ,CAAC,KAAK,SAAA,EAEjB;gBAGS,GAAG,EAAE,iBAAiB,EACtB,aAAa,EAAE,aAAa;IAKhC,QAAQ;IAIR,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6CvC;;;;;OAKG;YACW,uBAAuB;YAoCvB,UAAU;YAkBV,UAAU;yCAzOb,kCAAkC;2CAAlC,kCAAkC;CAgR9C"}
|
|
@@ -62,8 +62,24 @@ const FEEDBACK_ROLE_IDS = [
|
|
|
62
62
|
export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
63
63
|
cdr;
|
|
64
64
|
dialogService;
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
ConversationDetailId;
|
|
66
|
+
/** @deprecated Use {@link ConversationDetailId}. */
|
|
67
|
+
set conversationDetailId(value) {
|
|
68
|
+
this.ConversationDetailId = value;
|
|
69
|
+
}
|
|
70
|
+
/** @deprecated Use {@link ConversationDetailId}. */
|
|
71
|
+
get conversationDetailId() {
|
|
72
|
+
return this.ConversationDetailId;
|
|
73
|
+
}
|
|
74
|
+
CurrentUser;
|
|
75
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
76
|
+
set currentUser(value) {
|
|
77
|
+
this.CurrentUser = value;
|
|
78
|
+
}
|
|
79
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
80
|
+
get currentUser() {
|
|
81
|
+
return this.CurrentUser;
|
|
82
|
+
}
|
|
67
83
|
/**
|
|
68
84
|
* When false, the rating UI renders as a read-only badge instead of an editable
|
|
69
85
|
* button. Set by the parent (MessageItemComponent) to `false` when the current
|
|
@@ -76,20 +92,76 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
76
92
|
* `MJ: Conversation Details` (which has `UserRating`/`UserFeedback`).
|
|
77
93
|
* Skip-Brain hosts pass `'Conversation Details__Skip'`.
|
|
78
94
|
*/
|
|
79
|
-
|
|
95
|
+
RatingEntityName = 'MJ: Conversation Details';
|
|
96
|
+
/** @deprecated Use {@link RatingEntityName}. */
|
|
97
|
+
set ratingEntityName(value) {
|
|
98
|
+
this.RatingEntityName = value;
|
|
99
|
+
}
|
|
100
|
+
/** @deprecated Use {@link RatingEntityName}. */
|
|
101
|
+
get ratingEntityName() {
|
|
102
|
+
return this.RatingEntityName;
|
|
103
|
+
}
|
|
80
104
|
/** Column on the entity that stores the 1-10 rating. */
|
|
81
|
-
|
|
105
|
+
RatingField = 'UserRating';
|
|
106
|
+
/** @deprecated Use {@link RatingField}. */
|
|
107
|
+
set ratingField(value) {
|
|
108
|
+
this.RatingField = value;
|
|
109
|
+
}
|
|
110
|
+
/** @deprecated Use {@link RatingField}. */
|
|
111
|
+
get ratingField() {
|
|
112
|
+
return this.RatingField;
|
|
113
|
+
}
|
|
82
114
|
/** Column on the entity that stores the free-form feedback. */
|
|
83
|
-
|
|
115
|
+
RatingCommentField = 'UserFeedback';
|
|
116
|
+
/** @deprecated Use {@link RatingCommentField}. */
|
|
117
|
+
set ratingCommentField(value) {
|
|
118
|
+
this.RatingCommentField = value;
|
|
119
|
+
}
|
|
120
|
+
/** @deprecated Use {@link RatingCommentField}. */
|
|
121
|
+
get ratingCommentField() {
|
|
122
|
+
return this.RatingCommentField;
|
|
123
|
+
}
|
|
84
124
|
/**
|
|
85
125
|
* Optional: legacy pre-loaded ratings array (no longer used by storage; kept
|
|
86
126
|
* to preserve the input shape used by existing call sites like
|
|
87
127
|
* MessageItemComponent).
|
|
88
128
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
129
|
+
RatingsData;
|
|
130
|
+
/** @deprecated Use {@link RatingsData}. */
|
|
131
|
+
set ratingsData(value) {
|
|
132
|
+
this.RatingsData = value;
|
|
133
|
+
}
|
|
134
|
+
/** @deprecated Use {@link RatingsData}. */
|
|
135
|
+
get ratingsData() {
|
|
136
|
+
return this.RatingsData;
|
|
137
|
+
}
|
|
138
|
+
CurrentUserRating = null;
|
|
139
|
+
/** @deprecated Use {@link CurrentUserRating}. */
|
|
140
|
+
get currentUserRating() {
|
|
141
|
+
return this.CurrentUserRating;
|
|
142
|
+
}
|
|
143
|
+
/** @deprecated Use {@link CurrentUserRating}. */
|
|
144
|
+
set currentUserRating(value) {
|
|
145
|
+
this.CurrentUserRating = value;
|
|
146
|
+
}
|
|
147
|
+
CurrentUserComments = '';
|
|
148
|
+
/** @deprecated Use {@link CurrentUserComments}. */
|
|
149
|
+
get currentUserComments() {
|
|
150
|
+
return this.CurrentUserComments;
|
|
151
|
+
}
|
|
152
|
+
/** @deprecated Use {@link CurrentUserComments}. */
|
|
153
|
+
set currentUserComments(value) {
|
|
154
|
+
this.CurrentUserComments = value;
|
|
155
|
+
}
|
|
156
|
+
IsSaving = false;
|
|
157
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
158
|
+
get isSaving() {
|
|
159
|
+
return this.IsSaving;
|
|
160
|
+
}
|
|
161
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
162
|
+
set isSaving(value) {
|
|
163
|
+
this.IsSaving = value;
|
|
164
|
+
}
|
|
93
165
|
constructor(cdr, dialogService) {
|
|
94
166
|
super();
|
|
95
167
|
this.cdr = cdr;
|
|
@@ -99,7 +171,7 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
99
171
|
await this.loadRating();
|
|
100
172
|
}
|
|
101
173
|
async OpenRatingDialog() {
|
|
102
|
-
if (this.
|
|
174
|
+
if (this.IsSaving)
|
|
103
175
|
return;
|
|
104
176
|
if (!this.canEdit)
|
|
105
177
|
return;
|
|
@@ -112,10 +184,10 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
112
184
|
console.warn('[Rating] Could not read consent flag, will require acknowledgement', e);
|
|
113
185
|
}
|
|
114
186
|
const result = await this.dialogService.rating({
|
|
115
|
-
title: this.
|
|
187
|
+
title: this.CurrentUserRating != null ? 'Edit your rating' : 'Rate this response',
|
|
116
188
|
message: 'Rate the response on a 1-10 scale and (optionally) describe what was good or bad.',
|
|
117
|
-
initialRating: this.
|
|
118
|
-
initialComments: this.
|
|
189
|
+
initialRating: this.CurrentUserRating,
|
|
190
|
+
initialComments: this.CurrentUserComments,
|
|
119
191
|
okText: 'Submit',
|
|
120
192
|
requireConsent: !consentAcknowledged
|
|
121
193
|
});
|
|
@@ -178,16 +250,16 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
178
250
|
}
|
|
179
251
|
}
|
|
180
252
|
async loadRating() {
|
|
181
|
-
if (!this.
|
|
253
|
+
if (!this.ConversationDetailId)
|
|
182
254
|
return;
|
|
183
255
|
try {
|
|
184
256
|
const md = this.ProviderToUse;
|
|
185
|
-
const entity = (await md.GetEntityObject(this.
|
|
186
|
-
const loaded = await entity.Load(this.
|
|
257
|
+
const entity = (await md.GetEntityObject(this.RatingEntityName));
|
|
258
|
+
const loaded = await entity.Load(this.ConversationDetailId);
|
|
187
259
|
if (loaded) {
|
|
188
|
-
const rating = entity.Get(this.
|
|
189
|
-
this.
|
|
190
|
-
this.
|
|
260
|
+
const rating = entity.Get(this.RatingField);
|
|
261
|
+
this.CurrentUserRating = rating != null ? Number(rating) : null;
|
|
262
|
+
this.CurrentUserComments = (entity.Get(this.RatingCommentField) ?? '');
|
|
191
263
|
this.cdr.detectChanges();
|
|
192
264
|
}
|
|
193
265
|
}
|
|
@@ -197,27 +269,27 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
197
269
|
}
|
|
198
270
|
}
|
|
199
271
|
async saveRating(rating, comments) {
|
|
200
|
-
if (this.
|
|
272
|
+
if (this.IsSaving)
|
|
201
273
|
return null;
|
|
202
274
|
if (rating < 1 || rating > 10)
|
|
203
275
|
return null;
|
|
204
|
-
if (!this.
|
|
276
|
+
if (!this.ConversationDetailId)
|
|
205
277
|
return null;
|
|
206
|
-
const prevRating = this.
|
|
207
|
-
const prevComments = this.
|
|
208
|
-
this.
|
|
209
|
-
this.
|
|
210
|
-
this.
|
|
278
|
+
const prevRating = this.CurrentUserRating;
|
|
279
|
+
const prevComments = this.CurrentUserComments;
|
|
280
|
+
this.IsSaving = true;
|
|
281
|
+
this.CurrentUserRating = rating;
|
|
282
|
+
this.CurrentUserComments = comments;
|
|
211
283
|
this.cdr.detectChanges();
|
|
212
284
|
try {
|
|
213
285
|
const md = this.ProviderToUse;
|
|
214
|
-
const entity = (await md.GetEntityObject(this.
|
|
215
|
-
const loaded = await entity.Load(this.
|
|
286
|
+
const entity = (await md.GetEntityObject(this.RatingEntityName));
|
|
287
|
+
const loaded = await entity.Load(this.ConversationDetailId);
|
|
216
288
|
if (!loaded) {
|
|
217
|
-
throw new Error(`ConversationDetail ${this.
|
|
289
|
+
throw new Error(`ConversationDetail ${this.ConversationDetailId} not found in ${this.RatingEntityName}`);
|
|
218
290
|
}
|
|
219
|
-
entity.Set(this.
|
|
220
|
-
entity.Set(this.
|
|
291
|
+
entity.Set(this.RatingField, rating);
|
|
292
|
+
entity.Set(this.RatingCommentField, comments || null);
|
|
221
293
|
const saveResult = await entity.Save();
|
|
222
294
|
if (!saveResult) {
|
|
223
295
|
throw new Error(`Save failed: ${entity.LatestResult?.Message ?? 'unknown'}`);
|
|
@@ -227,18 +299,18 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
227
299
|
}
|
|
228
300
|
catch (error) {
|
|
229
301
|
console.error('[Rating] save failed:', error);
|
|
230
|
-
this.
|
|
231
|
-
this.
|
|
302
|
+
this.CurrentUserRating = prevRating;
|
|
303
|
+
this.CurrentUserComments = prevComments;
|
|
232
304
|
this.cdr.detectChanges();
|
|
233
305
|
return null;
|
|
234
306
|
}
|
|
235
307
|
finally {
|
|
236
|
-
this.
|
|
308
|
+
this.IsSaving = false;
|
|
237
309
|
this.cdr.detectChanges();
|
|
238
310
|
}
|
|
239
311
|
}
|
|
240
312
|
static ɵfac = function ConversationMessageRatingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ConversationMessageRatingComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.DialogService)); };
|
|
241
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationMessageRatingComponent, selectors: [["mj-conversation-message-rating"]], inputs: { conversationDetailId: "conversationDetailId", currentUser: "currentUser", canEdit: "canEdit", ratingEntityName: "ratingEntityName", ratingField: "ratingField", ratingCommentField: "ratingCommentField", ratingsData: "ratingsData" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [[1, "rating-container"], [1, "user-rating"], ["type", "button", 1, "rating-button", 3, "has-rated", "disabled", "title"], ["title", "Rating left by the conversation owner \u2014 read-only", 1, "rating-readonly"], ["type", "button", 1, "rating-button", 3, "click", "disabled", "title"], [1, "fa-solid", "fa-pen-to-square"], [1, "my-rating"], [1, "fa-regular", "fa-comment-dots"], [1, "fa-solid", "fa-comment-dots"]], template: function ConversationMessageRatingComponent_Template(rf, ctx) { if (rf & 1) {
|
|
313
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationMessageRatingComponent, selectors: [["mj-conversation-message-rating"]], inputs: { ConversationDetailId: "ConversationDetailId", conversationDetailId: "conversationDetailId", CurrentUser: "CurrentUser", currentUser: "currentUser", canEdit: "canEdit", RatingEntityName: "RatingEntityName", ratingEntityName: "ratingEntityName", RatingField: "RatingField", ratingField: "ratingField", RatingCommentField: "RatingCommentField", ratingCommentField: "ratingCommentField", RatingsData: "RatingsData", ratingsData: "ratingsData" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 1, consts: [[1, "rating-container"], [1, "user-rating"], ["type", "button", 1, "rating-button", 3, "has-rated", "disabled", "title"], ["title", "Rating left by the conversation owner \u2014 read-only", 1, "rating-readonly"], ["type", "button", 1, "rating-button", 3, "click", "disabled", "title"], [1, "fa-solid", "fa-pen-to-square"], [1, "my-rating"], [1, "fa-regular", "fa-comment-dots"], [1, "fa-solid", "fa-comment-dots"]], template: function ConversationMessageRatingComponent_Template(rf, ctx) { if (rf & 1) {
|
|
242
314
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
243
315
|
i0.ɵɵconditionalCreate(2, ConversationMessageRatingComponent_Conditional_2_Template, 3, 5, "button", 2)(3, ConversationMessageRatingComponent_Conditional_3_Template, 4, 1, "span", 3);
|
|
244
316
|
i0.ɵɵelementEnd()();
|
|
@@ -278,18 +350,30 @@ export class ConversationMessageRatingComponent extends BaseAngularComponent {
|
|
|
278
350
|
</div>
|
|
279
351
|
</div>
|
|
280
352
|
`, styles: ["\n .rating-container {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 4px 0;\n }\n\n .user-rating {\n display: flex;\n gap: 4px;\n margin-left: auto;\n }\n\n .rating-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n padding: 6px 12px;\n cursor: pointer;\n font-size: 13px;\n color: var(--mj-text-primary);\n opacity: 0.85;\n transition: all 0.15s ease;\n }\n\n .rating-button:hover:not(:disabled) {\n opacity: 1;\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 6%, var(--mj-bg-surface));\n }\n\n .rating-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .rating-button.has-rated {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .my-rating {\n font-weight: 500;\n }\n\n .rating-readonly {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n cursor: default;\n }\n "] }]
|
|
281
|
-
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.DialogService }], {
|
|
353
|
+
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.DialogService }], { ConversationDetailId: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], conversationDetailId: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], CurrentUser: [{
|
|
282
358
|
type: Input
|
|
283
359
|
}], currentUser: [{
|
|
284
360
|
type: Input
|
|
285
361
|
}], canEdit: [{
|
|
286
362
|
type: Input
|
|
363
|
+
}], RatingEntityName: [{
|
|
364
|
+
type: Input
|
|
287
365
|
}], ratingEntityName: [{
|
|
288
366
|
type: Input
|
|
367
|
+
}], RatingField: [{
|
|
368
|
+
type: Input
|
|
289
369
|
}], ratingField: [{
|
|
290
370
|
type: Input
|
|
371
|
+
}], RatingCommentField: [{
|
|
372
|
+
type: Input
|
|
291
373
|
}], ratingCommentField: [{
|
|
292
374
|
type: Input
|
|
375
|
+
}], RatingsData: [{
|
|
376
|
+
type: Input
|
|
293
377
|
}], ratingsData: [{
|
|
294
378
|
type: Input
|
|
295
379
|
}] }); })();
|