@memberjunction/ng-conversations 5.43.0 → 5.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +0 -1
- 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 +56 -52
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +37 -41
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +10 -14
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +41 -45
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +22 -36
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +134 -166
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +73 -8
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +487 -123
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +6 -9
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +20 -24
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +10 -11
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +49 -28
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +24 -10
- package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
- package/dist/lib/components/message/message-input-box.component.d.ts +11 -16
- package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input-box.component.js +52 -46
- package/dist/lib/components/message/message-input-box.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +83 -18
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +238 -151
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +10 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +67 -15
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.js +6 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +3 -0
- package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +9 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +45 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +10 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts +46 -0
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js +174 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts +123 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +397 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts +103 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.js +143 -0
- package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts +24 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js +107 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts +89 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.js +253 -0
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +141 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +574 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -0
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +59 -14
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +277 -74
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +28 -27
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +144 -143
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -0
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.js +105 -43
- package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +41 -7
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +216 -102
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +0 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +67 -71
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +364 -44
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +839 -153
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.d.ts +5 -5
- package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts +70 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js +115 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +55 -57
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +165 -143
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +80 -71
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +83 -113
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +270 -0
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-ui-config.js +212 -0
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +2 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +92 -101
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +10 -11
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +12 -15
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +5 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +18 -7
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +29 -26
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +37 -6
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +6 -3
- 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/services/conversation-agent.service.d.ts +2 -2
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +6 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts +17 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +58 -2
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +143 -0
- package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -0
- package/dist/lib/services/realtime-audio-recorder.js +379 -0
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts +75 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.js +205 -0
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -0
- package/dist/lib/services/realtime-session-review.service.d.ts +28 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js +12 -3
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts +210 -20
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +452 -21
- package/dist/lib/services/realtime-session.service.js.map +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +7 -2
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +6 -2
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +62 -0
- package/dist/lib/utils/plan-mode-preference.d.ts.map +1 -0
- package/dist/lib/utils/plan-mode-preference.js +130 -0
- package/dist/lib/utils/plan-mode-preference.js.map +1 -0
- package/dist/public-api.d.ts +6 -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 +28 -26
- package/dist/__tests__/attachment-badge.test.d.ts +0 -2
- package/dist/__tests__/attachment-badge.test.d.ts.map +0 -1
- package/dist/__tests__/attachment-badge.test.js +0 -66
- package/dist/__tests__/attachment-badge.test.js.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.d.ts +0 -2
- package/dist/__tests__/channel-optional-surface.test.d.ts.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.js +0 -53
- package/dist/__tests__/channel-optional-surface.test.js.map +0 -1
- package/dist/__tests__/chat-events.test.d.ts +0 -14
- package/dist/__tests__/chat-events.test.d.ts.map +0 -1
- package/dist/__tests__/chat-events.test.js +0 -109
- package/dist/__tests__/chat-events.test.js.map +0 -1
- package/dist/__tests__/collections-full-view.test.d.ts +0 -2
- package/dist/__tests__/collections-full-view.test.d.ts.map +0 -1
- package/dist/__tests__/collections-full-view.test.js +0 -225
- package/dist/__tests__/collections-full-view.test.js.map +0 -1
- package/dist/__tests__/conversation-cache.test.d.ts +0 -2
- package/dist/__tests__/conversation-cache.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-cache.test.js +0 -233
- package/dist/__tests__/conversation-cache.test.js.map +0 -1
- package/dist/__tests__/conversation-naming.test.d.ts +0 -2
- package/dist/__tests__/conversation-naming.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-naming.test.js +0 -110
- package/dist/__tests__/conversation-naming.test.js.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.d.ts +0 -2
- package/dist/__tests__/delegation-result-parser.test.d.ts.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.js +0 -107
- package/dist/__tests__/delegation-result-parser.test.js.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.d.ts +0 -2
- package/dist/__tests__/distinct-artifacts.test.d.ts.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.js +0 -56
- package/dist/__tests__/distinct-artifacts.test.js.map +0 -1
- package/dist/__tests__/event-wiring.test.d.ts +0 -15
- package/dist/__tests__/event-wiring.test.d.ts.map +0 -1
- package/dist/__tests__/event-wiring.test.js +0 -100
- package/dist/__tests__/event-wiring.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/narration-template.test.d.ts +0 -2
- package/dist/__tests__/narration-template.test.d.ts.map +0 -1
- package/dist/__tests__/narration-template.test.js +0 -76
- package/dist/__tests__/narration-template.test.js.map +0 -1
- package/dist/__tests__/notification-model.test.d.ts +0 -2
- package/dist/__tests__/notification-model.test.d.ts.map +0 -1
- package/dist/__tests__/notification-model.test.js +0 -68
- package/dist/__tests__/notification-model.test.js.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts +0 -2
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.js +0 -49
- package/dist/__tests__/realtime-agent-picker-models.test.js.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.d.ts +0 -2
- package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.js +0 -123
- package/dist/__tests__/realtime-audio-visuals.test.js.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +0 -2
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.js +0 -48
- package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.d.ts +0 -2
- package/dist/__tests__/realtime-disclosure.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.js +0 -164
- package/dist/__tests__/realtime-disclosure.test.js.map +0 -1
- package/dist/__tests__/realtime-pairing.test.d.ts +0 -2
- package/dist/__tests__/realtime-pairing.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-pairing.test.js +0 -207
- package/dist/__tests__/realtime-pairing.test.js.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts +0 -2
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.js +0 -154
- package/dist/__tests__/realtime-review-lifecycle.test.js.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.js +0 -230
- package/dist/__tests__/realtime-session-cancel-usage.test.js.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-channels.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.js +0 -252
- package/dist/__tests__/realtime-session-channels.test.js.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.js +0 -103
- package/dist/__tests__/realtime-session-client-tools.test.js.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-minimized.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.js +0 -32
- package/dist/__tests__/realtime-session-minimized.test.js.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-mint.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.js +0 -69
- package/dist/__tests__/realtime-session-mint.test.js.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-policy.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.js +0 -303
- package/dist/__tests__/realtime-session-policy.test.js.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-review.service.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.js +0 -743
- package/dist/__tests__/realtime-session-review.service.test.js.map +0 -1
- package/dist/__tests__/realtime-session-state.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-state.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-state.test.js +0 -83
- package/dist/__tests__/realtime-session-state.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.js +0 -106
- package/dist/__tests__/realtime-session-timeline-card.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.js +0 -142
- package/dist/__tests__/realtime-session-timeline.test.js.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts +0 -19
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.js +0 -188
- package/dist/__tests__/realtime-sessions-adapter.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.js +0 -100
- package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.js +0 -193
- package/dist/__tests__/realtime-surface-tabs-model.test.js.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.js +0 -137
- package/dist/__tests__/remote-browser-audio-player.test.js.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-channel.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.js +0 -585
- package/dist/__tests__/remote-browser-channel.test.js.map +0 -1
- package/dist/__tests__/search-service.test.d.ts +0 -2
- package/dist/__tests__/search-service.test.d.ts.map +0 -1
- package/dist/__tests__/search-service.test.js +0 -114
- package/dist/__tests__/search-service.test.js.map +0 -1
- package/dist/__tests__/slot-defaults.test.d.ts +0 -24
- package/dist/__tests__/slot-defaults.test.d.ts.map +0 -1
- package/dist/__tests__/slot-defaults.test.js +0 -63
- package/dist/__tests__/slot-defaults.test.js.map +0 -1
- package/dist/__tests__/toast-service.test.d.ts +0 -2
- package/dist/__tests__/toast-service.test.d.ts.map +0 -1
- package/dist/__tests__/toast-service.test.js +0 -143
- package/dist/__tests__/toast-service.test.js.map +0 -1
- package/dist/__tests__/user-authorization.test.d.ts +0 -2
- package/dist/__tests__/user-authorization.test.d.ts.map +0 -1
- package/dist/__tests__/user-authorization.test.js +0 -97
- package/dist/__tests__/user-authorization.test.js.map +0 -1
- package/dist/__tests__/voice-session-narration.test.d.ts +0 -2
- package/dist/__tests__/voice-session-narration.test.d.ts.map +0 -1
- package/dist/__tests__/voice-session-narration.test.js +0 -609
- package/dist/__tests__/voice-session-narration.test.js.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.js +0 -101
- package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-channel.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.js +0 -260
- package/dist/__tests__/whiteboard-channel.test.js.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.js +0 -108
- package/dist/__tests__/whiteboard-restore-state.test.js.map +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Declarative UI configuration for the realtime voice widget.
|
|
3
|
+
*
|
|
4
|
+
* The realtime widget historically decided *what to show* from an internal
|
|
5
|
+
* "disclosure ratchet" ({@link import('./realtime-disclosure').RealtimeDisclosureModel})
|
|
6
|
+
* plus a handful of scattered getters. That made it impossible for a host
|
|
7
|
+
* (the chat overlay, a full-screen route, an embedded demo surface, a kiosk,
|
|
8
|
+
* a mobile sheet…) to tailor the surface to its context.
|
|
9
|
+
*
|
|
10
|
+
* This module introduces a single, pure, side-effect-free resolution step that
|
|
11
|
+
* sits between three concerns:
|
|
12
|
+
*
|
|
13
|
+
* 1. **{@link RealtimeUiInputs}** — the *consumer's intent*. A flat bag of
|
|
14
|
+
* `@Input()`-friendly feature switches ("show the surface panel?",
|
|
15
|
+
* "allow text?", "which chrome?") with documented defaults. A host sets
|
|
16
|
+
* only what it cares about; everything else stays on its sensible default,
|
|
17
|
+
* so the widget behaves exactly as before when no inputs are provided.
|
|
18
|
+
*
|
|
19
|
+
* 2. **{@link RealtimeUiSignals}** — the *live runtime state*. Read-only facts
|
|
20
|
+
* the widget already knows: how wide its container is, whether the user has
|
|
21
|
+
* revealed text, what the disclosure model currently permits, whether a
|
|
22
|
+
* surface/channel/activity exists, the connection state, review/focus modes.
|
|
23
|
+
*
|
|
24
|
+
* 3. **{@link ResolvedRealtimeUi}** — the *answer*. A fully-resolved, boolean
|
|
25
|
+
* view-model the template binds to directly. No `&&` chains in the HTML; no
|
|
26
|
+
* business logic in getters. One source of truth, trivially unit-testable.
|
|
27
|
+
*
|
|
28
|
+
* ## The headline behaviour: auto orb ↔ console
|
|
29
|
+
*
|
|
30
|
+
* The default {@link RealtimeChromeMode} is `'auto'`. In auto mode the widget is
|
|
31
|
+
* a calm **orb** until *two* things are true at once:
|
|
32
|
+
*
|
|
33
|
+
* - the container is at least {@link RealtimeUiInputs.consoleBreakpointPx}
|
|
34
|
+
* wide (there's room for a structured console), **and**
|
|
35
|
+
* - the user has actually asked to see text (`textRevealed`), or the widget
|
|
36
|
+
* is reviewing a past session (which always shows the transcript).
|
|
37
|
+
*
|
|
38
|
+
* In other words: **getting bigger is not enough — if the user hasn't asked for
|
|
39
|
+
* text, we keep the orb.** This preserves the loved "ambient by default"
|
|
40
|
+
* feeling while letting the experience graduate to a full command console the
|
|
41
|
+
* moment it earns the space *and* the intent. Hosts that want to force one
|
|
42
|
+
* chrome forever can pass `chrome: 'orb'` or `chrome: 'console'`.
|
|
43
|
+
*
|
|
44
|
+
* The resolver is intentionally framework-free (no Angular import) so it can be
|
|
45
|
+
* unit-tested in isolation and reused by any host.
|
|
46
|
+
*
|
|
47
|
+
* @module realtime-ui-config
|
|
48
|
+
*/
|
|
49
|
+
/**
|
|
50
|
+
* The default container width (px) at or above which `'auto'` chrome is *allowed*
|
|
51
|
+
* to graduate from orb to console — provided the user has also revealed text.
|
|
52
|
+
* Chosen so a typical 390px chat overlay stays an orb, while a half-screen or
|
|
53
|
+
* full-screen surface can become a console. Override per-host via
|
|
54
|
+
* {@link RealtimeUiInputs.consoleBreakpointPx}.
|
|
55
|
+
*/
|
|
56
|
+
export const REALTIME_CONSOLE_BREAKPOINT_DEFAULT = 560;
|
|
57
|
+
/**
|
|
58
|
+
* The complete, defaulted input set. Spreading this over a partial
|
|
59
|
+
* {@link RealtimeUiInputs} yields a fully-populated config; the resolver does
|
|
60
|
+
* exactly that, so callers never deal with `undefined`.
|
|
61
|
+
*/
|
|
62
|
+
export const DEFAULT_REALTIME_UI_INPUTS = {
|
|
63
|
+
chrome: 'auto',
|
|
64
|
+
consoleBreakpointPx: REALTIME_CONSOLE_BREAKPOINT_DEFAULT,
|
|
65
|
+
compact: false,
|
|
66
|
+
autoHideControls: true,
|
|
67
|
+
allowTextReveal: true,
|
|
68
|
+
showCaptionsControl: true,
|
|
69
|
+
showDensityPicker: true,
|
|
70
|
+
showMinimize: true,
|
|
71
|
+
showEnd: true,
|
|
72
|
+
showSurfacePanel: true,
|
|
73
|
+
showChannels: true,
|
|
74
|
+
showActivityRail: true,
|
|
75
|
+
showDevLinks: true,
|
|
76
|
+
allowResize: true,
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* A safe, dependency-free baseline {@link RealtimeUiSignals}. Use this to seed a
|
|
80
|
+
* resolved view-model **before** the component's runtime dependencies (the
|
|
81
|
+
* disclosure model, the session state, the `ResizeObserver`) exist — e.g. in a
|
|
82
|
+
* field initializer. It describes a freshly-connecting widget at zero width with
|
|
83
|
+
* nothing earned yet, so the first paint is a calm orb until `recomputeUi()`
|
|
84
|
+
* runs with real signals. Never read `this` to build the first value.
|
|
85
|
+
*/
|
|
86
|
+
export const DEFAULT_REALTIME_UI_SIGNALS = {
|
|
87
|
+
containerWidthPx: 0,
|
|
88
|
+
textRevealed: false,
|
|
89
|
+
disclosureShowThread: false,
|
|
90
|
+
disclosureShowComposer: false,
|
|
91
|
+
disclosureShowPanel: false,
|
|
92
|
+
disclosureShowGear: false,
|
|
93
|
+
surfacePanelEarned: false,
|
|
94
|
+
hasChannels: false,
|
|
95
|
+
hasActivity: false,
|
|
96
|
+
devMode: false,
|
|
97
|
+
isReviewing: false,
|
|
98
|
+
channelFocus: false,
|
|
99
|
+
connectionState: 'connecting',
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the consumer config + live signals into a render-ready view-model.
|
|
103
|
+
*
|
|
104
|
+
* Pure and deterministic: same inputs ⇒ same output, no side effects, no clock,
|
|
105
|
+
* no DOM. Safe to call on every change-detection pass and trivial to unit test.
|
|
106
|
+
*
|
|
107
|
+
* The resolution order is:
|
|
108
|
+
* 1. fill defaults,
|
|
109
|
+
* 2. decide the effective {@link RealtimeChromeMode} (the orb↔console rule),
|
|
110
|
+
* 3. for each affordance, AND the consumer's switch with the runtime gate.
|
|
111
|
+
*
|
|
112
|
+
* @param inputs consumer configuration (partial; defaults fill the rest)
|
|
113
|
+
* @param signals live runtime facts
|
|
114
|
+
* @returns the fully-resolved {@link ResolvedRealtimeUi}
|
|
115
|
+
*
|
|
116
|
+
* @example Chat overlay (lean, ambient):
|
|
117
|
+
* ```ts
|
|
118
|
+
* resolveRealtimeUi(
|
|
119
|
+
* { chrome: 'auto', showSurfacePanel: false, showActivityRail: false, showDevLinks: false },
|
|
120
|
+
* signals
|
|
121
|
+
* );
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @example Full-screen route (rich console):
|
|
125
|
+
* ```ts
|
|
126
|
+
* resolveRealtimeUi({ chrome: 'auto', consoleBreakpointPx: 480 }, wideSignals);
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export function resolveRealtimeUi(inputs, signals) {
|
|
130
|
+
const cfg = { ...DEFAULT_REALTIME_UI_INPUTS, ...(inputs ?? {}) };
|
|
131
|
+
const connecting = signals.connectionState === 'connecting';
|
|
132
|
+
const allowTextReveal = cfg.allowTextReveal;
|
|
133
|
+
const chrome = resolveChrome(cfg, signals, allowTextReveal);
|
|
134
|
+
const isConsole = chrome === 'console';
|
|
135
|
+
const compact = cfg.compact || signals.containerWidthPx < cfg.consoleBreakpointPx;
|
|
136
|
+
// The transcript shows when the user has EXPLICITLY revealed text this session
|
|
137
|
+
// (`textRevealed`), OR we're in a console (consoles always carry the thread), OR we're
|
|
138
|
+
// reviewing a recording. We deliberately do NOT consult the disclosure ratchet here: a
|
|
139
|
+
// power user with a high base level still opens to the calm orb, exactly like the historical
|
|
140
|
+
// `ShowHero = !ShowCaptions` behaviour — "keep the orb until the user asks for text".
|
|
141
|
+
const showThread = allowTextReveal && (signals.textRevealed || isConsole || signals.isReviewing);
|
|
142
|
+
// The hero orb owns the surface in orb chrome (and there's nothing else to show).
|
|
143
|
+
const showHero = chrome === 'orb' && !showThread;
|
|
144
|
+
const showComposer = isConsole && allowTextReveal && signals.disclosureShowComposer && !signals.isReviewing;
|
|
145
|
+
// The surface/Details panel opens ON DEMAND when earned (the Details peek, the agent's
|
|
146
|
+
// OpenSurfacePanel, content auto-reveal — all set surfacePanelEarned). It is an INDEPENDENT
|
|
147
|
+
// right-hand peek that rides ALONGSIDE whatever the main column shows — it must NOT require the
|
|
148
|
+
// cross-session disclosure ratchet (disclosureShowPanel = SessionLevel >= 2), and it must NOT
|
|
149
|
+
// require the user to have revealed text.
|
|
150
|
+
//
|
|
151
|
+
// It was previously gated on `isConsole`, which bundled TWO things: "there's room" (legitimate —
|
|
152
|
+
// don't cram a side panel into a narrow overlay) AND "the user revealed text" (wrong for a peek).
|
|
153
|
+
// The text-reveal coupling meant opening Details with captions OFF flipped the whole left column
|
|
154
|
+
// from the hero orb to an empty transcript (the orb vanished), and toggling captions back off
|
|
155
|
+
// yanked the panel out from under an open peek. The design intent (see the auto-reveal comment in
|
|
156
|
+
// the overlay component: "the left column stays exactly as it was, pure audio included") is a peek
|
|
157
|
+
// beside the orb. So we keep only the ROOM half: the panel shows when earned and either the chrome
|
|
158
|
+
// is already a console (incl. review / forced-console at any width) OR the container is at least as
|
|
159
|
+
// wide as the console breakpoint — never in a cramped narrow overlay, and never dependent on text.
|
|
160
|
+
const roomForSurfacePanel = isConsole || signals.containerWidthPx >= cfg.consoleBreakpointPx;
|
|
161
|
+
const showSurfacePanel = cfg.showSurfacePanel && signals.surfacePanelEarned && !signals.channelFocus && roomForSurfacePanel;
|
|
162
|
+
const showActivityTab = cfg.showActivityRail && (signals.hasActivity || signals.isReviewing) && isConsole;
|
|
163
|
+
const showChannelStrip = cfg.showChannels && signals.hasChannels && isConsole && !signals.channelFocus;
|
|
164
|
+
const showGear = signals.disclosureShowGear || isConsole;
|
|
165
|
+
return {
|
|
166
|
+
chrome,
|
|
167
|
+
compact,
|
|
168
|
+
connecting,
|
|
169
|
+
showHero,
|
|
170
|
+
showThread,
|
|
171
|
+
showComposer,
|
|
172
|
+
showSurfacePanel,
|
|
173
|
+
showActivityTab,
|
|
174
|
+
showChannelStrip,
|
|
175
|
+
showCaptionsControl: cfg.showCaptionsControl,
|
|
176
|
+
showDensityPicker: cfg.showDensityPicker && showGear,
|
|
177
|
+
showGear,
|
|
178
|
+
showDevLinks: cfg.showDevLinks && signals.devMode,
|
|
179
|
+
showMinimize: cfg.showMinimize && !signals.isReviewing,
|
|
180
|
+
showEnd: cfg.showEnd,
|
|
181
|
+
allowResize: cfg.allowResize && showSurfacePanel,
|
|
182
|
+
allowTextReveal,
|
|
183
|
+
autoHideControls: cfg.autoHideControls && chrome === 'orb',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Decide the effective chrome. Forced modes win outright; `'auto'` graduates to a
|
|
188
|
+
* console only when there's both **room** (width ≥ breakpoint) and **intent**
|
|
189
|
+
* (text revealed) — or when reviewing, which always wants the transcript.
|
|
190
|
+
*
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
function resolveChrome(cfg, signals, allowTextReveal) {
|
|
194
|
+
if (cfg.chrome === 'orb') {
|
|
195
|
+
return 'orb';
|
|
196
|
+
}
|
|
197
|
+
if (cfg.chrome === 'console') {
|
|
198
|
+
return 'console';
|
|
199
|
+
}
|
|
200
|
+
// auto
|
|
201
|
+
if (signals.isReviewing) {
|
|
202
|
+
return 'console';
|
|
203
|
+
}
|
|
204
|
+
if (!allowTextReveal) {
|
|
205
|
+
return 'orb';
|
|
206
|
+
}
|
|
207
|
+
// Intent is the USER explicitly revealing text this session — NOT the disclosure ratchet.
|
|
208
|
+
// Wider-alone keeps the orb; a power user who hasn't asked for text keeps the orb too.
|
|
209
|
+
const hasRoom = signals.containerWidthPx >= cfg.consoleBreakpointPx;
|
|
210
|
+
return hasRoom && signals.textRevealed ? 'console' : 'orb';
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=realtime-ui-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-ui-config.js","sourceRoot":"","sources":["../../../../src/lib/components/realtime/realtime-ui-config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Declarative UI configuration for the realtime voice widget.\n *\n * The realtime widget historically decided *what to show* from an internal\n * \"disclosure ratchet\" ({@link import('./realtime-disclosure').RealtimeDisclosureModel})\n * plus a handful of scattered getters. That made it impossible for a host\n * (the chat overlay, a full-screen route, an embedded demo surface, a kiosk,\n * a mobile sheet…) to tailor the surface to its context.\n *\n * This module introduces a single, pure, side-effect-free resolution step that\n * sits between three concerns:\n *\n * 1. **{@link RealtimeUiInputs}** — the *consumer's intent*. A flat bag of\n * `@Input()`-friendly feature switches (\"show the surface panel?\",\n * \"allow text?\", \"which chrome?\") with documented defaults. A host sets\n * only what it cares about; everything else stays on its sensible default,\n * so the widget behaves exactly as before when no inputs are provided.\n *\n * 2. **{@link RealtimeUiSignals}** — the *live runtime state*. Read-only facts\n * the widget already knows: how wide its container is, whether the user has\n * revealed text, what the disclosure model currently permits, whether a\n * surface/channel/activity exists, the connection state, review/focus modes.\n *\n * 3. **{@link ResolvedRealtimeUi}** — the *answer*. A fully-resolved, boolean\n * view-model the template binds to directly. No `&&` chains in the HTML; no\n * business logic in getters. One source of truth, trivially unit-testable.\n *\n * ## The headline behaviour: auto orb ↔ console\n *\n * The default {@link RealtimeChromeMode} is `'auto'`. In auto mode the widget is\n * a calm **orb** until *two* things are true at once:\n *\n * - the container is at least {@link RealtimeUiInputs.consoleBreakpointPx}\n * wide (there's room for a structured console), **and**\n * - the user has actually asked to see text (`textRevealed`), or the widget\n * is reviewing a past session (which always shows the transcript).\n *\n * In other words: **getting bigger is not enough — if the user hasn't asked for\n * text, we keep the orb.** This preserves the loved \"ambient by default\"\n * feeling while letting the experience graduate to a full command console the\n * moment it earns the space *and* the intent. Hosts that want to force one\n * chrome forever can pass `chrome: 'orb'` or `chrome: 'console'`.\n *\n * The resolver is intentionally framework-free (no Angular import) so it can be\n * unit-tested in isolation and reused by any host.\n *\n * @module realtime-ui-config\n */\n\nimport { RealtimeUxDensity } from './realtime-disclosure';\n\n/**\n * Which visual chrome the widget renders.\n *\n * - `'orb'` — the ambient hero orb. Minimal controls; transcript/console hidden\n * unless the user reveals them. Best for narrow/overlay/mobile contexts.\n * - `'console'` — the structured command console: header, transcript, composer\n * dock, and (when room allows) the surface panel. Best for full-screen.\n * - `'auto'` — *(default)* start as an orb; graduate to a console when the\n * container is wide enough **and** the user has revealed text. See the module\n * docs for the exact rule.\n */\nexport type RealtimeChromeMode = 'orb' | 'console' | 'auto';\n\n/**\n * Identifies a control the user invoked. Emitted by the widget's `ControlInvoked`\n * output so a host can observe (or react to) any control — even one it has hidden\n * via inputs and re-rendered itself. Extend the union as new controls are added.\n */\nexport type RealtimeControlId =\n | 'mute'\n | 'captions'\n | 'type'\n | 'end'\n | 'minimize'\n | 'surface'\n | 'gear'\n | 'reveal-text'\n | 'pure-audio'\n | 'density';\n\n/**\n * The connection lifecycle states the widget cares about for layout decisions.\n * Mirrors the widget's runtime `RealtimeConnectionState`; duplicated as a string\n * union here so this module stays import-free of the Angular component.\n */\nexport type RealtimeUiConnectionState =\n | 'connecting'\n | 'listening'\n | 'speaking'\n | 'thinking'\n | 'idle'\n | 'error';\n\n/**\n * The default container width (px) at or above which `'auto'` chrome is *allowed*\n * to graduate from orb to console — provided the user has also revealed text.\n * Chosen so a typical 390px chat overlay stays an orb, while a half-screen or\n * full-screen surface can become a console. Override per-host via\n * {@link RealtimeUiInputs.consoleBreakpointPx}.\n */\nexport const REALTIME_CONSOLE_BREAKPOINT_DEFAULT = 560;\n\n/**\n * Consumer-facing configuration for the realtime widget — every field is a\n * declarative switch a host can set via an `@Input()`. **All fields are\n * optional**; omitted fields fall back to {@link DEFAULT_REALTIME_UI_INPUTS},\n * which reproduces the widget's historical behaviour. This is the surface that\n * lets the chat overlay slim the widget down, a full-screen route open it up,\n * and unexpected hosts (kiosks, demos, embeds) compose their own variant.\n *\n * A `false` here is a **hard disable** — it removes the affordance regardless of\n * what the disclosure model or runtime state would otherwise permit. A `true`\n * means \"allow it\"; the affordance still only appears when it's also *earned* by\n * the runtime (e.g. a surface panel only renders once a channel actually exists).\n */\nexport interface RealtimeUiInputs {\n /** Which chrome to render. Default `'auto'`. */\n chrome?: RealtimeChromeMode;\n /**\n * In `'auto'` chrome, the container width (px) at/above which the widget may\n * graduate to a console (still gated on text being revealed). Default\n * {@link REALTIME_CONSOLE_BREAKPOINT_DEFAULT}.\n */\n consoleBreakpointPx?: number;\n /**\n * Force compact spacing/typography regardless of size — useful for dense\n * mobile sheets. Default `false` (the widget infers compactness from width).\n */\n compact?: boolean;\n /**\n * Fade non-essential controls when the session is idle (orb chrome only), for\n * a cinematic feel. Default `true`.\n */\n autoHideControls?: boolean;\n /**\n * May the user reveal the transcript at all? When `false`, the widget is a\n * pure voice orb with no path to text (and therefore never graduates to a\n * console in `'auto'` mode). Default `true`.\n */\n allowTextReveal?: boolean;\n\n /** Show the captions toggle. Default `true`. */\n showCaptionsControl?: boolean;\n /** Show the density picker inside the gear menu. Default `true`. */\n showDensityPicker?: boolean;\n /** Show the minimize control (collapse the call without ending it). Default `true`. */\n showMinimize?: boolean;\n /** Show the end-call control. Default `true`. (Hosts that own their own end button may hide it.) */\n showEnd?: boolean;\n /**\n * Show the right-hand surface panel (whiteboard / browser / interactive\n * channels). Default `true`. Only renders in console chrome and once a panel\n * is actually earned.\n */\n showSurfacePanel?: boolean;\n /** Show the channel strip (active interactive channels). Default `true`. */\n showChannels?: boolean;\n /** Show the Activity rail/tab (delegations, artifacts timeline). Default `true`. */\n showActivityRail?: boolean;\n /**\n * Show developer affordances (\"open session / open run\" links, dev-only\n * panels). Default `true`, but still additionally gated by the per-session\n * dev-mode toggle, so this is a hard *ceiling*, not a force-on.\n */\n showDevLinks?: boolean;\n /** Allow drag-to-resize of the surface panel. Default `true`. */\n allowResize?: boolean;\n}\n\n/**\n * The complete, defaulted input set. Spreading this over a partial\n * {@link RealtimeUiInputs} yields a fully-populated config; the resolver does\n * exactly that, so callers never deal with `undefined`.\n */\nexport const DEFAULT_REALTIME_UI_INPUTS: Required<RealtimeUiInputs> = {\n chrome: 'auto',\n consoleBreakpointPx: REALTIME_CONSOLE_BREAKPOINT_DEFAULT,\n compact: false,\n autoHideControls: true,\n allowTextReveal: true,\n showCaptionsControl: true,\n showDensityPicker: true,\n showMinimize: true,\n showEnd: true,\n showSurfacePanel: true,\n showChannels: true,\n showActivityRail: true,\n showDevLinks: true,\n allowResize: true,\n};\n\n/**\n * Live runtime facts the widget feeds into the resolver. These are *observed*,\n * not configured — they come from the disclosure model, a `ResizeObserver`, and\n * the session/channel state. Pure data so the resolver stays testable.\n */\nexport interface RealtimeUiSignals {\n /** Current width of the widget's container, in px (from a `ResizeObserver`). */\n containerWidthPx: number;\n /**\n * Has the user revealed text this session? (i.e. tapped \"show the\n * conversation\" / engaged the composer — disclosure level ≥ 1.) This is the\n * intent half of the auto orb↔console rule.\n */\n textRevealed: boolean;\n /** Disclosure model says a transcript may be shown. */\n disclosureShowThread: boolean;\n /** Disclosure model says the composer/text dock may be shown. */\n disclosureShowComposer: boolean;\n /** Disclosure model says a surface panel may be shown. */\n disclosureShowPanel: boolean;\n /** Disclosure model says the gear/settings menu may be shown. */\n disclosureShowGear: boolean;\n /** A surface/channel actually exists to populate the panel. */\n surfacePanelEarned: boolean;\n /** ≥ 1 interactive channel is active. */\n hasChannels: boolean;\n /** ≥ 1 delegation/activity has occurred (Activity rail has content). */\n hasActivity: boolean;\n /** Per-session developer mode is on. */\n devMode: boolean;\n /** The widget is reviewing a past (recorded) session, not a live call. */\n isReviewing: boolean;\n /** A single channel surface is maximized (focus mode); the main column is hidden. */\n channelFocus: boolean;\n /** Current connection lifecycle state. */\n connectionState: RealtimeUiConnectionState;\n}\n\n/**\n * The resolved, render-ready view-model. Every field is a final boolean (or the\n * effective chrome) — the template binds straight to these with no further\n * logic. This is the single source of truth for \"what is on screen right now\".\n */\nexport interface ResolvedRealtimeUi {\n /** The effective chrome after resolving `'auto'`. */\n chrome: 'orb' | 'console';\n /** Whether compact spacing/typography applies. */\n compact: boolean;\n /** True while connecting — hosts can show a single, size-independent loader. */\n connecting: boolean;\n\n /** The big ambient hero orb is the primary surface. */\n showHero: boolean;\n /** The transcript/thread is visible. */\n showThread: boolean;\n /** The text composer dock is visible. */\n showComposer: boolean;\n /** The right-hand surface panel is visible. */\n showSurfacePanel: boolean;\n /** The Activity tab/rail is available. */\n showActivityTab: boolean;\n /** The channel strip is visible. */\n showChannelStrip: boolean;\n\n /** The captions toggle is available. */\n showCaptionsControl: boolean;\n /** The density picker is available (inside the gear). */\n showDensityPicker: boolean;\n /** The gear/settings affordance is available. */\n showGear: boolean;\n /** Developer links/panels are available. */\n showDevLinks: boolean;\n /** The minimize control is available. */\n showMinimize: boolean;\n /** The end-call control is available. */\n showEnd: boolean;\n\n /** The surface panel may be drag-resized. */\n allowResize: boolean;\n /** The user has a path to reveal text. */\n allowTextReveal: boolean;\n /** Non-essential controls should auto-fade when idle. */\n autoHideControls: boolean;\n}\n\n/**\n * A safe, dependency-free baseline {@link RealtimeUiSignals}. Use this to seed a\n * resolved view-model **before** the component's runtime dependencies (the\n * disclosure model, the session state, the `ResizeObserver`) exist — e.g. in a\n * field initializer. It describes a freshly-connecting widget at zero width with\n * nothing earned yet, so the first paint is a calm orb until `recomputeUi()`\n * runs with real signals. Never read `this` to build the first value.\n */\nexport const DEFAULT_REALTIME_UI_SIGNALS: RealtimeUiSignals = {\n containerWidthPx: 0,\n textRevealed: false,\n disclosureShowThread: false,\n disclosureShowComposer: false,\n disclosureShowPanel: false,\n disclosureShowGear: false,\n surfacePanelEarned: false,\n hasChannels: false,\n hasActivity: false,\n devMode: false,\n isReviewing: false,\n channelFocus: false,\n connectionState: 'connecting',\n};\n\n/**\n * Resolve the consumer config + live signals into a render-ready view-model.\n *\n * Pure and deterministic: same inputs ⇒ same output, no side effects, no clock,\n * no DOM. Safe to call on every change-detection pass and trivial to unit test.\n *\n * The resolution order is:\n * 1. fill defaults,\n * 2. decide the effective {@link RealtimeChromeMode} (the orb↔console rule),\n * 3. for each affordance, AND the consumer's switch with the runtime gate.\n *\n * @param inputs consumer configuration (partial; defaults fill the rest)\n * @param signals live runtime facts\n * @returns the fully-resolved {@link ResolvedRealtimeUi}\n *\n * @example Chat overlay (lean, ambient):\n * ```ts\n * resolveRealtimeUi(\n * { chrome: 'auto', showSurfacePanel: false, showActivityRail: false, showDevLinks: false },\n * signals\n * );\n * ```\n *\n * @example Full-screen route (rich console):\n * ```ts\n * resolveRealtimeUi({ chrome: 'auto', consoleBreakpointPx: 480 }, wideSignals);\n * ```\n */\nexport function resolveRealtimeUi(\n inputs: RealtimeUiInputs | null | undefined,\n signals: RealtimeUiSignals,\n): ResolvedRealtimeUi {\n const cfg: Required<RealtimeUiInputs> = { ...DEFAULT_REALTIME_UI_INPUTS, ...(inputs ?? {}) };\n\n const connecting = signals.connectionState === 'connecting';\n const allowTextReveal = cfg.allowTextReveal;\n const chrome = resolveChrome(cfg, signals, allowTextReveal);\n const isConsole = chrome === 'console';\n const compact = cfg.compact || signals.containerWidthPx < cfg.consoleBreakpointPx;\n\n // The transcript shows when the user has EXPLICITLY revealed text this session\n // (`textRevealed`), OR we're in a console (consoles always carry the thread), OR we're\n // reviewing a recording. We deliberately do NOT consult the disclosure ratchet here: a\n // power user with a high base level still opens to the calm orb, exactly like the historical\n // `ShowHero = !ShowCaptions` behaviour — \"keep the orb until the user asks for text\".\n const showThread = allowTextReveal && (signals.textRevealed || isConsole || signals.isReviewing);\n\n // The hero orb owns the surface in orb chrome (and there's nothing else to show).\n const showHero = chrome === 'orb' && !showThread;\n\n const showComposer = isConsole && allowTextReveal && signals.disclosureShowComposer && !signals.isReviewing;\n\n // The surface/Details panel opens ON DEMAND when earned (the Details peek, the agent's\n // OpenSurfacePanel, content auto-reveal — all set surfacePanelEarned). It is an INDEPENDENT\n // right-hand peek that rides ALONGSIDE whatever the main column shows — it must NOT require the\n // cross-session disclosure ratchet (disclosureShowPanel = SessionLevel >= 2), and it must NOT\n // require the user to have revealed text.\n //\n // It was previously gated on `isConsole`, which bundled TWO things: \"there's room\" (legitimate —\n // don't cram a side panel into a narrow overlay) AND \"the user revealed text\" (wrong for a peek).\n // The text-reveal coupling meant opening Details with captions OFF flipped the whole left column\n // from the hero orb to an empty transcript (the orb vanished), and toggling captions back off\n // yanked the panel out from under an open peek. The design intent (see the auto-reveal comment in\n // the overlay component: \"the left column stays exactly as it was, pure audio included\") is a peek\n // beside the orb. So we keep only the ROOM half: the panel shows when earned and either the chrome\n // is already a console (incl. review / forced-console at any width) OR the container is at least as\n // wide as the console breakpoint — never in a cramped narrow overlay, and never dependent on text.\n const roomForSurfacePanel = isConsole || signals.containerWidthPx >= cfg.consoleBreakpointPx;\n const showSurfacePanel =\n cfg.showSurfacePanel && signals.surfacePanelEarned && !signals.channelFocus && roomForSurfacePanel;\n\n const showActivityTab = cfg.showActivityRail && (signals.hasActivity || signals.isReviewing) && isConsole;\n\n const showChannelStrip = cfg.showChannels && signals.hasChannels && isConsole && !signals.channelFocus;\n\n const showGear = signals.disclosureShowGear || isConsole;\n\n return {\n chrome,\n compact,\n connecting,\n showHero,\n showThread,\n showComposer,\n showSurfacePanel,\n showActivityTab,\n showChannelStrip,\n showCaptionsControl: cfg.showCaptionsControl,\n showDensityPicker: cfg.showDensityPicker && showGear,\n showGear,\n showDevLinks: cfg.showDevLinks && signals.devMode,\n showMinimize: cfg.showMinimize && !signals.isReviewing,\n showEnd: cfg.showEnd,\n allowResize: cfg.allowResize && showSurfacePanel,\n allowTextReveal,\n autoHideControls: cfg.autoHideControls && chrome === 'orb',\n };\n}\n\n/**\n * Decide the effective chrome. Forced modes win outright; `'auto'` graduates to a\n * console only when there's both **room** (width ≥ breakpoint) and **intent**\n * (text revealed) — or when reviewing, which always wants the transcript.\n *\n * @internal\n */\nfunction resolveChrome(\n cfg: Required<RealtimeUiInputs>,\n signals: RealtimeUiSignals,\n allowTextReveal: boolean,\n): 'orb' | 'console' {\n if (cfg.chrome === 'orb') {\n return 'orb';\n }\n if (cfg.chrome === 'console') {\n return 'console';\n }\n // auto\n if (signals.isReviewing) {\n return 'console';\n }\n if (!allowTextReveal) {\n return 'orb';\n }\n // Intent is the USER explicitly revealing text this session — NOT the disclosure ratchet.\n // Wider-alone keeps the orb; a power user who hasn't asked for text keeps the orb too.\n const hasRoom = signals.containerWidthPx >= cfg.consoleBreakpointPx;\n return hasRoom && signals.textRevealed ? 'console' : 'orb';\n}\n"]}
|
|
@@ -22,6 +22,8 @@ export declare class SearchPanelComponent implements OnInit, OnDestroy {
|
|
|
22
22
|
results: GroupedSearchResults;
|
|
23
23
|
recentSearches: string[];
|
|
24
24
|
selectedIndex: number;
|
|
25
|
+
/** Message for the "no results" empty state, echoing the search term. */
|
|
26
|
+
get NoResultsMessage(): string;
|
|
25
27
|
private destroy$;
|
|
26
28
|
constructor(searchService: SearchService);
|
|
27
29
|
ngOnInit(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/search/search-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,SAAS,EAET,YAAY,EAIZ,UAAU,EACX,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACV,MAAM,+BAA+B,CAAC;;AAEvC;;;;GAIG;AACH,qBAMa,oBAAqB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"search-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/search/search-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,SAAS,EAET,YAAY,EAIZ,UAAU,EACX,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,SAAS,EACV,MAAM,+BAA+B,CAAC;;AAEvC;;;;GAIG;AACH,qBAMa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAgChD,OAAO,CAAC,aAAa;IA/BxB,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IACvB,MAAM,EAAE,OAAO,CAAS;IAEvB,KAAK,qBAA4B;IACjC,cAAc,6BAAoC;IAElC,WAAW,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE9D,WAAW,EAAE,MAAM,CAAM;IACzB,YAAY,EAAE,YAAY,CAAS;IACnC,SAAS,EAAE,SAAS,CAA8B;IAClD,WAAW,EAAE,OAAO,CAAS;IAC7B,OAAO,EAAE,oBAAoB,CAOlC;IACK,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,aAAa,EAAE,MAAM,CAAM;IAElC,yEAAyE;IACzE,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,aAAa,EAAE,aAAa;IAEhD,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACI,aAAa,IAAI,IAAI;IAQ5B;;OAEG;YACW,aAAa;IAQ3B;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAO5C;;OAEG;IACI,WAAW,IAAI,IAAI;IAM1B;;OAEG;IACI,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAK/C;;OAEG;IACI,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACI,mBAAmB,IAAI,IAAI;IAKlC;;OAEG;IACI,UAAU,IAAI,IAAI;IAIzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IAEI,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAoCjD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACI,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;IAMtD;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiB1C;;OAEG;IACI,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAmBlD;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAarC,0FAA0F;IACnF,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI1D;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAOhC;;OAEG;IACI,cAAc,IAAI,IAAI;IAQ7B;;OAEG;IACH,WAAW,IAAI,IAAI;yCAvTR,oBAAoB;2CAApB,oBAAoB;CA4ThC"}
|