@memberjunction/ng-conversations 6.2.0-edge.4 → 6.2.0-edge.6
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 +29 -0
- package/dist/lib/components/attachment/image-viewer.component.d.ts +3 -1
- package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +5 -1
- package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.js +3 -3
- package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +88 -20
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +785 -387
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +60 -20
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +290 -389
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +153 -17
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +1400 -299
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +25 -2
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +79 -40
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +19 -0
- package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +125 -13
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +2 -2
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +6 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +110 -82
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts +13 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.js +21 -0
- package/dist/lib/components/realtime/realtime-call-failure-notice.js.map +1 -0
- package/dist/lib/components/realtime/realtime-composer.component.js +114 -102
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +21 -2
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +113 -76
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +7 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.js +1 -1
- package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +152 -31
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.js +2227 -214
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +4 -4
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +11 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +25 -28
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +8 -8
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/browser-realtime-media-host.d.ts +7 -7
- package/dist/lib/services/browser-realtime-media-host.js +8 -78
- package/dist/lib/services/browser-realtime-media-host.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +53 -20
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +108 -54
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-detail-window.store.d.ts +5 -0
- package/dist/lib/services/conversation-detail-window.store.d.ts.map +1 -1
- package/dist/lib/services/conversation-detail-window.store.js +52 -5
- package/dist/lib/services/conversation-detail-window.store.js.map +1 -1
- package/dist/lib/services/conversation-naming.d.ts.map +1 -1
- package/dist/lib/services/conversation-naming.js +9 -2
- package/dist/lib/services/conversation-naming.js.map +1 -1
- package/dist/lib/services/conversation-tasks-filter.d.ts +15 -0
- package/dist/lib/services/conversation-tasks-filter.d.ts.map +1 -0
- package/dist/lib/services/conversation-tasks-filter.js +69 -0
- package/dist/lib/services/conversation-tasks-filter.js.map +1 -0
- package/dist/lib/services/realtime-audio-recorder.d.ts +94 -86
- package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.js +222 -195
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts +30 -2
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +35 -7
- package/dist/lib/services/realtime-session.service.js.map +1 -1
- package/dist/lib/services/recording/libopus-wasm-binary.d.ts +3 -0
- package/dist/lib/services/recording/libopus-wasm-binary.d.ts.map +1 -0
- package/dist/lib/services/recording/libopus-wasm-binary.js +489 -0
- package/dist/lib/services/recording/libopus-wasm-binary.js.map +1 -0
- package/dist/lib/services/recording/libopus-worker-source.d.ts +48 -0
- package/dist/lib/services/recording/libopus-worker-source.d.ts.map +1 -0
- package/dist/lib/services/recording/libopus-worker-source.js +170 -0
- package/dist/lib/services/recording/libopus-worker-source.js.map +1 -0
- package/dist/lib/services/recording/linear-resampler.d.ts +45 -0
- package/dist/lib/services/recording/linear-resampler.d.ts.map +1 -0
- package/dist/lib/services/recording/linear-resampler.js +85 -0
- package/dist/lib/services/recording/linear-resampler.js.map +1 -0
- package/dist/lib/services/recording/opus-packet-encoder.d.ts +50 -0
- package/dist/lib/services/recording/opus-packet-encoder.d.ts.map +1 -0
- package/dist/lib/services/recording/opus-packet-encoder.js +41 -0
- package/dist/lib/services/recording/opus-packet-encoder.js.map +1 -0
- package/dist/lib/services/recording/wasm-opus-encoder.d.ts +86 -0
- package/dist/lib/services/recording/wasm-opus-encoder.d.ts.map +1 -0
- package/dist/lib/services/recording/wasm-opus-encoder.js +232 -0
- package/dist/lib/services/recording/wasm-opus-encoder.js.map +1 -0
- package/dist/lib/services/recording/webcodecs-opus-encoder.d.ts +39 -0
- package/dist/lib/services/recording/webcodecs-opus-encoder.d.ts.map +1 -0
- package/dist/lib/services/recording/webcodecs-opus-encoder.js +101 -0
- package/dist/lib/services/recording/webcodecs-opus-encoder.js.map +1 -0
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +3 -16
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/utils/agent-failure-display.d.ts +14 -0
- package/dist/lib/utils/agent-failure-display.d.ts.map +1 -0
- package/dist/lib/utils/agent-failure-display.js +26 -0
- package/dist/lib/utils/agent-failure-display.js.map +1 -0
- package/dist/lib/utils/distinct-artifacts.d.ts +9 -3
- package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
- package/dist/lib/utils/distinct-artifacts.js +24 -5
- package/dist/lib/utils/distinct-artifacts.js.map +1 -1
- package/dist/lib/utils/message-list-order.d.ts +13 -0
- package/dist/lib/utils/message-list-order.d.ts.map +1 -0
- package/dist/lib/utils/message-list-order.js +31 -0
- package/dist/lib/utils/message-list-order.js.map +1 -0
- package/dist/lib/utils/pin-state.d.ts +11 -0
- package/dist/lib/utils/pin-state.d.ts.map +1 -0
- package/dist/lib/utils/pin-state.js +9 -0
- package/dist/lib/utils/pin-state.js.map +1 -0
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -36
- package/dist/lib/services/browser-recording-unload-guard.d.ts +0 -30
- package/dist/lib/services/browser-recording-unload-guard.d.ts.map +0 -1
- package/dist/lib/services/browser-recording-unload-guard.js +0 -43
- package/dist/lib/services/browser-recording-unload-guard.js.map +0 -1
- package/dist/lib/services/realtime-pcm-wav.d.ts +0 -79
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +0 -1
- package/dist/lib/services/realtime-pcm-wav.js +0 -213
- package/dist/lib/services/realtime-pcm-wav.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { ActiveTasksService, ActiveTask } from '../../services/active-tasks.service';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Enhanced tasks dropdown component for chat header.\n * Shows ALL active tasks across ALL conversations, grouped by current vs other\n */\n@Component({\n standalone: false,\n selector: 'mj-tasks-dropdown',\n template: `\n <div class=\"tasks-dropdown-container\">\n <button\n class=\"active-tasks-btn\"\n (click)=\"toggleDropdown()\"\n [class.active]=\"isOpen\"\n [class.has-tasks]=\"allTasks.length > 0\"\n [title]=\"allTasks.length > 0 ? allTasks.length + ' active task' + (allTasks.length > 1 ? 's' : '') : 'View tasks'\">\n <i class=\"fas fa-bolt\"></i>\n @if (allTasks.length > 0) {\n <span class=\"task-count-badge\">{{ allTasks.length }}</span>\n }\n </button>\n \n @if (isOpen) {\n <div class=\"active-tasks-dropdown\">\n <div class=\"dropdown-header\">\n <div class=\"header-left\">\n @if (allTasks.length > 0) {\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n }\n @if (allTasks.length === 0) {\n <i class=\"fas fa-tasks\"></i>\n }\n <span>Active Tasks ({{ allTasks.length }})</span>\n </div>\n <button class=\"close-btn\" (click)=\"closeDropdown()\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"dropdown-content\">\n <!-- Current Conversation Tasks -->\n @if (currentConversationTasks.length > 0) {\n <div class=\"section\">\n <div class=\"section-header\">\n <i class=\"fas fa-comment\"></i>\n <span>Current Conversation ({{ currentConversationTasks.length }})</span>\n </div>\n @for (task of currentConversationTasks; track task) {\n <div class=\"active-task-item\"\n (click)=\"onTaskClick(task)\">\n <div class=\"task-status-indicator active\"></div>\n <div class=\"task-content\">\n <div class=\"task-title\">\n @if (getAgentLogoUrl(task.agentName)) {\n <img\n [src]=\"getAgentLogoUrl(task.agentName)\"\n class=\"agent-logo\"\n [alt]=\"task.agentName\" />\n }\n @if (!getAgentLogoUrl(task.agentName)) {\n <i\n [class]=\"getAgentIconClass(task.agentName)\"></i>\n }\n {{ task.agentName }}\n </div>\n <div class=\"task-status-text\">{{ getTrimmedStatus(task.status) }}</div>\n <div class=\"task-elapsed\">{{ getElapsedTime(task) }}</div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Other Conversations Tasks -->\n @if (otherConversationTasks.length > 0) {\n <div class=\"section\">\n <div class=\"section-header\">\n <i class=\"fas fa-comments\"></i>\n <span>Other Conversations ({{ otherConversationTasks.length }})</span>\n </div>\n @for (task of otherConversationTasks; track task) {\n <div class=\"active-task-item clickable\"\n (click)=\"onTaskClick(task)\">\n <div class=\"task-status-indicator active\"></div>\n <div class=\"task-content\">\n <div class=\"task-title\">\n @if (getAgentLogoUrl(task.agentName)) {\n <img\n [src]=\"getAgentLogoUrl(task.agentName)\"\n class=\"agent-logo\"\n [alt]=\"task.agentName\" />\n }\n @if (!getAgentLogoUrl(task.agentName)) {\n <i\n [class]=\"getAgentIconClass(task.agentName)\"></i>\n }\n {{ task.agentName }}\n <span class=\"go-btn\">\n <i class=\"fas fa-arrow-right\"></i>\n </span>\n </div>\n @if (task.conversationName) {\n <div class=\"task-conversation\">\n <i class=\"fas fa-message\"></i>\n {{ task.conversationName }}\n </div>\n }\n <div class=\"task-status-text\">{{ getTrimmedStatus(task.status) }}</div>\n <div class=\"task-elapsed\">{{ getElapsedTime(task) }}</div>\n </div>\n </div>\n }\n </div>\n }\n <!-- No Tasks State -->\n @if (allTasks.length === 0) {\n <div class=\"no-tasks\">\n <i class=\"fas fa-check-circle\"></i>\n <p>No active tasks</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n styles: [`\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: transparent;\n padding: 8px 12px;\n border-radius: 6px;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .active-tasks-btn.active {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .task-count-badge {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .header-left i {\n color: var(--mj-brand-primary);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .dropdown-content {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section:last-child {\n border-bottom: none;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header i {\n font-size: 11px;\n }\n\n .active-task-item {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable {\n cursor: pointer;\n }\n\n .active-task-item.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n transform: translateX(2px);\n }\n\n .active-task-item:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active {\n background: var(--mj-brand-primary);\n animation: pulse 2s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n }\n\n .task-title .agent-logo {\n width: 14px;\n height: 14px;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .go-btn {\n margin-left: auto;\n color: var(--mj-brand-primary);\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable:hover .go-btn {\n opacity: 1;\n }\n\n .task-conversation {\n font-size: 11px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation i {\n font-size: 10px;\n }\n\n .task-status-text {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .no-tasks {\n padding: 40px 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: var(--mj-status-success);\n }\n\n .no-tasks p {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget:last-child {\n margin-bottom: 0;\n }\n\n /* Mobile adjustments: 481px - 768px */\n @media (max-width: 768px) {\n .active-tasks-btn {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header {\n padding: 10px 12px;\n }\n\n .dropdown-content {\n max-height: calc(60vh - 48px);\n }\n\n .section {\n padding: 10px;\n }\n\n .section-header {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item {\n padding: 8px 10px;\n }\n\n .task-title {\n font-size: 13px;\n }\n\n .task-status-text {\n font-size: 11px;\n }\n\n .task-elapsed {\n font-size: 10px;\n }\n }\n\n /* Small Phone adjustments: <= 480px */\n @media (max-width: 480px) {\n .active-tasks-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header {\n padding: 8px 10px;\n }\n\n .header-left {\n font-size: 13px;\n }\n\n .dropdown-content {\n max-height: calc(70vh - 44px);\n }\n\n .section {\n padding: 8px;\n }\n\n .section-header {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title {\n font-size: 12px;\n }\n\n .task-status-text {\n font-size: 10px;\n }\n\n .task-elapsed {\n font-size: 9px;\n }\n\n .no-tasks {\n padding: 30px 12px;\n }\n\n .no-tasks i {\n font-size: 28px;\n }\n\n .no-tasks p {\n font-size: 13px;\n }\n }\n `]\n})\nexport class TasksDropdownComponent implements OnInit, OnDestroy {\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n @Input() ConversationId: string | null = null;\n\n /** @deprecated Use {@link ConversationId}. */\n @Input() set conversationId(value: string | null) {\n this.ConversationId = value;\n }\n /** @deprecated Use {@link ConversationId}. */\n get conversationId(): string | null {\n return this.ConversationId;\n }\n @Output() TaskClicked = new EventEmitter<ActiveTask>();\n\n /**\n * @deprecated Use {@link TaskClicked}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (taskClicked) keeps working. Must stay AFTER TaskClicked: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() taskClicked = this.TaskClicked;\n @Output() NavigateToConversation = new EventEmitter<{conversationId: string; taskId: string}>();\n\n /**\n * @deprecated Use {@link NavigateToConversation}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (navigateToConversation) keeps working. Must stay AFTER NavigateToConversation: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() navigateToConversation = this.NavigateToConversation;\n\n public IsOpen: boolean = false;\n\n /** @deprecated Use {@link IsOpen}. */\n public get isOpen(): boolean {\n return this.IsOpen;\n }\n /** @deprecated Use {@link IsOpen}. */\n public set isOpen(value: boolean) {\n this.IsOpen = value;\n }\n public AllTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link AllTasks}. */\n public get allTasks(): ActiveTask[] {\n return this.AllTasks;\n }\n /** @deprecated Use {@link AllTasks}. */\n public set allTasks(value: ActiveTask[]) {\n this.AllTasks = value;\n }\n public CurrentConversationTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link CurrentConversationTasks}. */\n public get currentConversationTasks(): ActiveTask[] {\n return this.CurrentConversationTasks;\n }\n /** @deprecated Use {@link CurrentConversationTasks}. */\n public set currentConversationTasks(value: ActiveTask[]) {\n this.CurrentConversationTasks = value;\n }\n public OtherConversationTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link OtherConversationTasks}. */\n public get otherConversationTasks(): ActiveTask[] {\n return this.OtherConversationTasks;\n }\n /** @deprecated Use {@link OtherConversationTasks}. */\n public set otherConversationTasks(value: ActiveTask[]) {\n this.OtherConversationTasks = value;\n }\n\n private destroy$ = new Subject<void>();\n\n /**\n * Wall-clock snapshot the elapsed-time template bindings read from. The template\n * must NOT call Date.now() (directly or via getElapsedTime) — a change-detection\n * pass that straddles a second boundary would then see two different values for\n * the same binding and throw NG0100 in dev mode. Instead this snapshot is stable\n * within a CD pass and advances via a 1s interval that runs only while the\n * dropdown is open (the only time elapsed text is rendered).\n */\n private _now = Date.now();\n private elapsedTimer: ReturnType<typeof setInterval> | null = null;\n\n constructor(\n private activeTasksService: ActiveTasksService\n ) {}\n\n ngOnInit() {\n // AIEngineBase is deferred at startup; kick off the load early so the\n // template helpers (getAgentIconClass / getAgentLogoUrl) find populated\n // .Agents data when they're called from the template. Fire-and-forget —\n // the helpers fall back to defaults until it's loaded.\n AIEngineBase.Instance.EnsureLoaded();\n\n // Subscribe to ALL active tasks across ALL conversations\n this.activeTasksService.tasks$\n .pipe(takeUntil(this.destroy$))\n .subscribe(tasks => {\n this.AllTasks = tasks;\n this.groupTasks();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.stopElapsedTimer();\n }\n\n private groupTasks(): void {\n this.CurrentConversationTasks = this.AllTasks.filter(\n task => task.conversationId === this.ConversationId\n );\n\n this.OtherConversationTasks = this.AllTasks.filter(\n task => task.conversationId && task.conversationId !== this.ConversationId\n );\n }\n\n ToggleDropdown(): void {\n this.IsOpen = !this.IsOpen;\n if (this.IsOpen) {\n this.startElapsedTimer();\n } else {\n this.stopElapsedTimer();\n }\n }\n\n /** @deprecated Use {@link ToggleDropdown}. */\n toggleDropdown(): void {\n return this.ToggleDropdown();\n }\n\n CloseDropdown(): void {\n this.IsOpen = false;\n this.stopElapsedTimer();\n }\n\n /** @deprecated Use {@link CloseDropdown}. */\n closeDropdown(): void {\n return this.CloseDropdown();\n }\n\n private startElapsedTimer(): void {\n this._now = Date.now(); // fresh snapshot for the first render\n if (this.elapsedTimer) {\n return;\n }\n // Zone-patched interval: each tick triggers CD, so the elapsed text advances\n // once per second while the dropdown is open. Stopped on close/destroy.\n this.elapsedTimer = setInterval(() => {\n this._now = Date.now();\n }, 1000);\n }\n\n private stopElapsedTimer(): void {\n if (this.elapsedTimer) {\n clearInterval(this.elapsedTimer);\n this.elapsedTimer = null;\n }\n }\n\n OnTaskClick(task: ActiveTask): void {\n // If task is from another conversation, emit navigation event\n if (task.conversationId && task.conversationId !== this.ConversationId) {\n this.NavigateToConversation.emit({\n conversationId: task.conversationId,\n taskId: task.id\n });\n }\n\n this.TaskClicked.emit(task);\n this.CloseDropdown();\n }\n\n /** @deprecated Use {@link OnTaskClick}. */\n onTaskClick(task: ActiveTask): void {\n return this.OnTaskClick(task);\n }\n\n GetElapsedTime(task: ActiveTask): string {\n // Reads the CD-stable snapshot, never Date.now() — see _now for why (NG0100).\n const elapsed = Math.max(0, this._now - task.startTime);\n const seconds = Math.floor(elapsed / 1000);\n\n if (seconds < 60) {\n return `${seconds}s`;\n }\n\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\n }\n\n /** @deprecated Use {@link GetElapsedTime}. */\n getElapsedTime(task: ActiveTask): string {\n return this.GetElapsedTime(task);\n }\n\n GetTrimmedStatus(status: string): string {\n const maxLength = 50;\n if (status.length <= maxLength) {\n return status;\n }\n return status.substring(0, maxLength) + '...';\n }\n\n /** @deprecated Use {@link GetTrimmedStatus}. */\n getTrimmedStatus(status: string): string {\n return this.GetTrimmedStatus(status);\n }\n\n /**\n * Get agent icon class by looking up agent in AIEngineBase cache\n * Similar to message-item component's aiAgentInfo getter\n */\n GetAgentIconClass(agentName: string): string {\n // Look up agent from AIEngineBase cache by name\n if (AIEngineBase.Instance?.Agents) {\n const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);\n if (agent?.IconClass) {\n return agent.IconClass;\n }\n }\n\n // Default fallback icon\n return 'fas fa-robot';\n }\n\n /** @deprecated Use {@link GetAgentIconClass}. */\n getAgentIconClass(agentName: string): string {\n return this.GetAgentIconClass(agentName);\n }\n\n /**\n * Get agent logo URL by looking up agent in AIEngineBase cache\n * Returns null if no logo URL is available\n */\n GetAgentLogoUrl(agentName: string): string | null {\n // Look up agent from AIEngineBase cache by name\n if (AIEngineBase.Instance?.Agents) {\n const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);\n if (agent?.LogoURL) {\n return agent.LogoURL;\n }\n }\n\n return null;\n }\n\n /** @deprecated Use {@link GetAgentLogoUrl}. */\n getAgentLogoUrl(agentName: string): string | null {\n return this.GetAgentLogoUrl(agentName);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { ActiveTasksService, ActiveTask } from '../../services/active-tasks.service';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Enhanced tasks dropdown component for chat header.\n * Shows ALL active tasks across ALL conversations, grouped by current vs other\n */\n@Component({\n standalone: false,\n selector: 'mj-tasks-dropdown',\n template: `\n <div class=\"tasks-dropdown-container\">\n <button\n class=\"active-tasks-btn\"\n (click)=\"toggleDropdown()\"\n [class.active]=\"isOpen\"\n [class.has-tasks]=\"allTasks.length > 0\"\n [title]=\"allTasks.length > 0 ? allTasks.length + ' active task' + (allTasks.length > 1 ? 's' : '') : 'View tasks'\">\n <i class=\"fas fa-bolt\"></i>\n @if (allTasks.length > 0) {\n <span class=\"task-count-badge\">{{ allTasks.length }}</span>\n }\n </button>\n \n @if (isOpen) {\n <div class=\"active-tasks-dropdown\">\n <div class=\"dropdown-header\">\n <div class=\"header-left\">\n @if (allTasks.length > 0) {\n <i class=\"fas fa-circle-notch fa-spin\"></i>\n }\n @if (allTasks.length === 0) {\n <i class=\"fas fa-tasks\"></i>\n }\n <span>Active Tasks ({{ allTasks.length }})</span>\n </div>\n <button class=\"close-btn\" (click)=\"closeDropdown()\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n <div class=\"dropdown-content\">\n <!-- Current Conversation Tasks -->\n @if (currentConversationTasks.length > 0) {\n <div class=\"section\">\n <div class=\"section-header\">\n <i class=\"fas fa-comment\"></i>\n <span>Current Conversation ({{ currentConversationTasks.length }})</span>\n </div>\n @for (task of currentConversationTasks; track task) {\n <div class=\"active-task-item\"\n (click)=\"onTaskClick(task)\">\n <div class=\"task-status-indicator active\"></div>\n <div class=\"task-content\">\n <div class=\"task-title\">\n @if (getAgentLogoUrl(task.agentName)) {\n <img\n [src]=\"getAgentLogoUrl(task.agentName)\"\n class=\"agent-logo\"\n [alt]=\"task.agentName\" />\n }\n @if (!getAgentLogoUrl(task.agentName)) {\n <i\n [class]=\"getAgentIconClass(task.agentName)\"></i>\n }\n {{ task.agentName }}\n </div>\n <div class=\"task-status-text\">{{ getTrimmedStatus(task.status) }}</div>\n <div class=\"task-elapsed\">{{ getElapsedTime(task) }}</div>\n </div>\n </div>\n }\n </div>\n }\n <!-- Other Conversations Tasks -->\n @if (otherConversationTasks.length > 0) {\n <div class=\"section\">\n <div class=\"section-header\">\n <i class=\"fas fa-comments\"></i>\n <span>Other Conversations ({{ otherConversationTasks.length }})</span>\n </div>\n @for (task of otherConversationTasks; track task) {\n <div class=\"active-task-item clickable\"\n (click)=\"onTaskClick(task)\">\n <div class=\"task-status-indicator active\"></div>\n <div class=\"task-content\">\n <div class=\"task-title\">\n @if (getAgentLogoUrl(task.agentName)) {\n <img\n [src]=\"getAgentLogoUrl(task.agentName)\"\n class=\"agent-logo\"\n [alt]=\"task.agentName\" />\n }\n @if (!getAgentLogoUrl(task.agentName)) {\n <i\n [class]=\"getAgentIconClass(task.agentName)\"></i>\n }\n {{ task.agentName }}\n <span class=\"go-btn\">\n <i class=\"fas fa-arrow-right\"></i>\n </span>\n </div>\n @if (task.conversationName) {\n <div class=\"task-conversation\">\n <i class=\"fas fa-message\"></i>\n {{ task.conversationName }}\n </div>\n }\n <div class=\"task-status-text\">{{ getTrimmedStatus(task.status) }}</div>\n <div class=\"task-elapsed\">{{ getElapsedTime(task) }}</div>\n </div>\n </div>\n }\n </div>\n }\n <!-- No Tasks State -->\n @if (allTasks.length === 0) {\n <div class=\"no-tasks\">\n <i class=\"fas fa-check-circle\"></i>\n <p>No active tasks</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n `,\n styles: [`\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: transparent;\n padding: 8px 12px;\n border-radius: 6px;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .active-tasks-btn.active {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .task-count-badge {\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: var(--mj-shadow-sm);\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .header-left i {\n color: var(--mj-brand-primary);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n }\n\n .dropdown-content {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section {\n padding: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .section:last-child {\n border-bottom: none;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header i {\n font-size: 11px;\n }\n\n .active-task-item {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable {\n cursor: pointer;\n }\n\n .active-task-item.clickable:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n transform: translateX(2px);\n }\n\n .active-task-item:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active {\n background: var(--mj-brand-primary);\n animation: pulse 2s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n }\n\n .task-title .agent-logo {\n width: 14px;\n height: 14px;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .go-btn {\n margin-left: auto;\n color: var(--mj-brand-primary);\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable:hover .go-btn {\n opacity: 1;\n }\n\n .task-conversation {\n font-size: 11px;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation i {\n font-size: 10px;\n }\n\n .task-status-text {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed {\n font-size: 11px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .no-tasks {\n padding: 40px 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: var(--mj-status-success);\n }\n\n .no-tasks p {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget:last-child {\n margin-bottom: 0;\n }\n\n /* Mobile adjustments: 481px - 768px */\n @media (max-width: 768px) {\n .active-tasks-btn {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header {\n padding: 10px 12px;\n }\n\n .dropdown-content {\n max-height: calc(60vh - 48px);\n }\n\n .section {\n padding: 10px;\n }\n\n .section-header {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item {\n padding: 8px 10px;\n }\n\n .task-title {\n font-size: 13px;\n }\n\n .task-status-text {\n font-size: 11px;\n }\n\n .task-elapsed {\n font-size: 10px;\n }\n }\n\n /* Small Phone adjustments: <= 480px */\n @media (max-width: 480px) {\n .active-tasks-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header {\n padding: 8px 10px;\n }\n\n .header-left {\n font-size: 13px;\n }\n\n .dropdown-content {\n max-height: calc(70vh - 44px);\n }\n\n .section {\n padding: 8px;\n }\n\n .section-header {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title {\n font-size: 12px;\n }\n\n .task-status-text {\n font-size: 10px;\n }\n\n .task-elapsed {\n font-size: 9px;\n }\n\n .no-tasks {\n padding: 30px 12px;\n }\n\n .no-tasks i {\n font-size: 28px;\n }\n\n .no-tasks p {\n font-size: 13px;\n }\n }\n `]\n})\nexport class TasksDropdownComponent implements OnInit, OnDestroy {\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n @Input() ConversationId: string | null = null;\n\n /** @deprecated Use {@link ConversationId}. */\n @Input() set conversationId(value: string | null) {\n this.ConversationId = value;\n }\n /** @deprecated Use {@link ConversationId}. */\n get conversationId(): string | null {\n return this.ConversationId;\n }\n @Output() TaskClicked = new EventEmitter<ActiveTask>();\n\n /**\n * @deprecated Use {@link TaskClicked}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (taskClicked) keeps working. Must stay AFTER TaskClicked: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() taskClicked = this.TaskClicked;\n @Output() NavigateToConversation = new EventEmitter<{conversationId: string; taskId: string}>();\n\n /**\n * @deprecated Use {@link NavigateToConversation}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (navigateToConversation) keeps working. Must stay AFTER NavigateToConversation: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() navigateToConversation = this.NavigateToConversation;\n\n public IsOpen: boolean = false;\n\n /** @deprecated Use {@link IsOpen}. */\n public get isOpen(): boolean {\n return this.IsOpen;\n }\n /** @deprecated Use {@link IsOpen}. */\n public set isOpen(value: boolean) {\n this.IsOpen = value;\n }\n public AllTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link AllTasks}. */\n public get allTasks(): ActiveTask[] {\n return this.AllTasks;\n }\n /** @deprecated Use {@link AllTasks}. */\n public set allTasks(value: ActiveTask[]) {\n this.AllTasks = value;\n }\n public CurrentConversationTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link CurrentConversationTasks}. */\n public get currentConversationTasks(): ActiveTask[] {\n return this.CurrentConversationTasks;\n }\n /** @deprecated Use {@link CurrentConversationTasks}. */\n public set currentConversationTasks(value: ActiveTask[]) {\n this.CurrentConversationTasks = value;\n }\n public OtherConversationTasks: ActiveTask[] = [];\n\n /** @deprecated Use {@link OtherConversationTasks}. */\n public get otherConversationTasks(): ActiveTask[] {\n return this.OtherConversationTasks;\n }\n /** @deprecated Use {@link OtherConversationTasks}. */\n public set otherConversationTasks(value: ActiveTask[]) {\n this.OtherConversationTasks = value;\n }\n\n private destroy$ = new Subject<void>();\n\n /**\n * Wall-clock snapshot the elapsed-time template bindings read from. The template\n * must NOT call Date.now() (directly or via getElapsedTime) — a change-detection\n * pass that straddles a second boundary would then see two different values for\n * the same binding and throw NG0100 in dev mode. Instead this snapshot is stable\n * within a CD pass and advances via a 1s interval that runs only while the\n * dropdown is open (the only time elapsed text is rendered).\n */\n private _now = Date.now();\n private elapsedTimer: ReturnType<typeof setInterval> | null = null;\n\n constructor(\n private activeTasksService: ActiveTasksService\n ) {}\n\n ngOnInit() {\n // AIEngineBase is deferred at startup; kick off the load early so the\n // template helpers (getAgentIconClass / getAgentLogoUrl) find populated\n // .Agents data when they're called from the template. Fire-and-forget —\n // the helpers fall back to defaults until it's loaded.\n AIEngineBase.Instance.EnsureLoaded();\n\n // Subscribe to ALL active tasks across ALL conversations\n this.activeTasksService.tasks$\n .pipe(takeUntil(this.destroy$))\n .subscribe(tasks => {\n this.AllTasks = tasks;\n this.groupTasks();\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.stopElapsedTimer();\n }\n\n private groupTasks(): void {\n this.CurrentConversationTasks = this.AllTasks.filter(\n task => task.conversationId === this.ConversationId\n );\n\n this.OtherConversationTasks = this.AllTasks.filter(\n task => task.conversationId && task.conversationId !== this.ConversationId\n );\n }\n\n ToggleDropdown(): void {\n this.IsOpen = !this.IsOpen;\n if (this.IsOpen) {\n this.startElapsedTimer();\n } else {\n this.stopElapsedTimer();\n }\n }\n\n /** @deprecated Use {@link ToggleDropdown}. */\n toggleDropdown(): void {\n return this.ToggleDropdown();\n }\n\n CloseDropdown(): void {\n this.IsOpen = false;\n this.stopElapsedTimer();\n }\n\n /** @deprecated Use {@link CloseDropdown}. */\n closeDropdown(): void {\n return this.CloseDropdown();\n }\n\n private startElapsedTimer(): void {\n this._now = Date.now(); // fresh snapshot for the first render\n if (this.elapsedTimer) {\n return;\n }\n // Zone-patched interval: each tick triggers CD, so the elapsed text advances\n // once per second while the dropdown is open. Stopped on close/destroy.\n this.elapsedTimer = setInterval(() => {\n this._now = Date.now();\n }, 1000);\n }\n\n private stopElapsedTimer(): void {\n if (this.elapsedTimer) {\n clearInterval(this.elapsedTimer);\n this.elapsedTimer = null;\n }\n }\n\n OnTaskClick(task: ActiveTask): void {\n // If task is from another conversation, emit navigation event\n if (task.conversationId && task.conversationId !== this.ConversationId) {\n this.NavigateToConversation.emit({\n conversationId: task.conversationId,\n taskId: task.id\n });\n }\n\n this.TaskClicked.emit(task);\n this.CloseDropdown();\n }\n\n /** @deprecated Use {@link OnTaskClick}. */\n onTaskClick(task: ActiveTask): void {\n return this.OnTaskClick(task);\n }\n\n GetElapsedTime(task: ActiveTask): string {\n // Reads the CD-stable snapshot, never Date.now() — see _now for why (NG0100).\n const elapsed = Math.max(0, this._now - task.startTime);\n const seconds = Math.floor(elapsed / 1000);\n\n if (seconds < 60) {\n return `${seconds}s`;\n }\n\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\n }\n\n /** @deprecated Use {@link GetElapsedTime}. */\n getElapsedTime(task: ActiveTask): string {\n return this.GetElapsedTime(task);\n }\n\n GetTrimmedStatus(status: string): string {\n const maxLength = 50;\n if (status.length <= maxLength) {\n return status;\n }\n return status.substring(0, maxLength) + '...';\n }\n\n /** @deprecated Use {@link GetTrimmedStatus}. */\n getTrimmedStatus(status: string): string {\n return this.GetTrimmedStatus(status);\n }\n\n /**\n * Get agent icon class by looking up agent in AIEngineBase cache\n * Similar to message-item component's aiAgentInfo getter\n */\n GetAgentIconClass(agentName: string): string {\n // Look up agent from AIEngineBase cache by name\n if (AIEngineBase.Instance.ReadableAgents.length) {\n const agent = AIEngineBase.Instance.ReadableAgents.find(a => a.Name === agentName);\n if (agent?.IconClass) {\n return agent.IconClass;\n }\n }\n\n // Default fallback icon\n return 'fas fa-robot';\n }\n\n /** @deprecated Use {@link GetAgentIconClass}. */\n getAgentIconClass(agentName: string): string {\n return this.GetAgentIconClass(agentName);\n }\n\n /**\n * Get agent logo URL by looking up agent in AIEngineBase cache\n * Returns null if no logo URL is available\n */\n GetAgentLogoUrl(agentName: string): string | null {\n // Look up agent from AIEngineBase cache by name\n if (AIEngineBase.Instance.ReadableAgents.length) {\n const agent = AIEngineBase.Instance.ReadableAgents.find(a => a.Name === agentName);\n if (agent?.LogoURL) {\n return agent.LogoURL;\n }\n }\n\n return null;\n }\n\n /** @deprecated Use {@link GetAgentLogoUrl}. */\n getAgentLogoUrl(agentName: string): string | null {\n return this.GetAgentLogoUrl(agentName);\n }\n}\n"]}
|
|
@@ -314,6 +314,7 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
314
314
|
private readonly USER_SETTING_SIDEBAR_KEY;
|
|
315
315
|
private saveSettingsTimeout;
|
|
316
316
|
private isLoadingSettings;
|
|
317
|
+
/** The user's own top-level tasks; the Tasks tab's fallback filter (see {@link TasksFilterResolver}). */
|
|
317
318
|
TasksFilter: string;
|
|
318
319
|
/** @deprecated Use {@link TasksFilter}. */
|
|
319
320
|
get tasksFilter(): string;
|
|
@@ -454,9 +455,18 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
454
455
|
}): void;
|
|
455
456
|
ngOnInit(): Promise<void>;
|
|
456
457
|
/**
|
|
457
|
-
*
|
|
458
|
+
* Sets {@link TasksFilter} to the user's own tasks. The Tasks tab builds its full filter with
|
|
459
|
+
* {@link TasksFilterResolver} each time it loads.
|
|
458
460
|
*/
|
|
459
461
|
private buildTasksFilter;
|
|
462
|
+
/**
|
|
463
|
+
* Builds the Tasks tab filter (see {@link BuildConversationTasksFilter}). The tasks view calls it
|
|
464
|
+
* on every load and refresh, so a task linked to a message created after the workspace opened
|
|
465
|
+
* appears on the next refresh. The same function is returned every time, so the input binding
|
|
466
|
+
* does not change.
|
|
467
|
+
*/
|
|
468
|
+
get TasksFilterResolver(): () => Promise<string>;
|
|
469
|
+
private tasksFilterResolver;
|
|
460
470
|
ngDoCheck(): void;
|
|
461
471
|
ngOnDestroy(): void;
|
|
462
472
|
onWindowResize(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-workspace.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace/conversation-workspace.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation-workspace.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace/conversation-workspace.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ import { UUIDsEqual } from '@memberjunction/global';
|
|
|
23
23
|
import { ArtifactMetadataEngine, UserInfoEngine, ConversationEngine } from '@memberjunction/core-entities';
|
|
24
24
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
25
25
|
import { MentionAutocompleteService } from '../../services/mention-autocomplete.service';
|
|
26
|
+
import { BuildConversationTasksFilter, OwnTasksFilter } from '../../services/conversation-tasks-filter';
|
|
26
27
|
import { ConversationChatAreaComponent } from '../conversation/conversation-chat-area.component';
|
|
27
28
|
import { Subject, takeUntil } from 'rxjs';
|
|
28
29
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
@@ -98,7 +99,7 @@ function ConversationWorkspaceComponent_Conditional_4_Conditional_6_Template(rf,
|
|
|
98
99
|
} if (rf & 2) {
|
|
99
100
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
100
101
|
i0.ɵɵadvance();
|
|
101
|
-
i0.ɵɵproperty("environmentId", ctx_r1.environmentId)("currentUser", ctx_r1.currentUser)("baseFilter", ctx_r1.tasksFilter)("activeTaskId", ctx_r1.activeTaskId);
|
|
102
|
+
i0.ɵɵproperty("environmentId", ctx_r1.environmentId)("currentUser", ctx_r1.currentUser)("baseFilter", ctx_r1.tasksFilter)("BaseFilterResolver", ctx_r1.TasksFilterResolver)("activeTaskId", ctx_r1.activeTaskId);
|
|
102
103
|
} }
|
|
103
104
|
function ConversationWorkspaceComponent_Conditional_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
104
105
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
@@ -138,7 +139,7 @@ function ConversationWorkspaceComponent_Conditional_4_Template(rf, ctx) { if (rf
|
|
|
138
139
|
i0.ɵɵconditionalCreate(3, ConversationWorkspaceComponent_Conditional_4_Conditional_3_Template, 2, 0, "button", 10);
|
|
139
140
|
i0.ɵɵconditionalCreate(4, ConversationWorkspaceComponent_Conditional_4_Conditional_4_Template, 1, 0, "div", 11);
|
|
140
141
|
i0.ɵɵconditionalCreate(5, ConversationWorkspaceComponent_Conditional_4_Conditional_5_Template, 2, 2, "div", 12);
|
|
141
|
-
i0.ɵɵconditionalCreate(6, ConversationWorkspaceComponent_Conditional_4_Conditional_6_Template, 2,
|
|
142
|
+
i0.ɵɵconditionalCreate(6, ConversationWorkspaceComponent_Conditional_4_Conditional_6_Template, 2, 5, "div", 12);
|
|
142
143
|
i0.ɵɵconditionalCreate(7, ConversationWorkspaceComponent_Conditional_4_Conditional_7_Template, 2, 11, "div", 12);
|
|
143
144
|
i0.ɵɵconditionalCreate(8, ConversationWorkspaceComponent_Conditional_4_Conditional_8_Template, 3, 16);
|
|
144
145
|
i0.ɵɵelementEnd();
|
|
@@ -579,7 +580,7 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
579
580
|
USER_SETTING_SIDEBAR_KEY = 'Conversations.SidebarState';
|
|
580
581
|
saveSettingsTimeout = null;
|
|
581
582
|
isLoadingSettings = false;
|
|
582
|
-
|
|
583
|
+
/** The user's own top-level tasks; the Tasks tab's fallback filter (see {@link TasksFilterResolver}). */
|
|
583
584
|
TasksFilter = '1=1';
|
|
584
585
|
/** @deprecated Use {@link TasksFilter}. */
|
|
585
586
|
get tasksFilter() {
|
|
@@ -907,7 +908,7 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
907
908
|
AIEngineBase.Instance.Config(false),
|
|
908
909
|
ArtifactMetadataEngine.Instance.Config(false)
|
|
909
910
|
]);
|
|
910
|
-
console.log('✅ AI Engine initialized with', AIEngineBase.Instance.
|
|
911
|
+
console.log('✅ AI Engine initialized with', AIEngineBase.Instance.ReadableAgents.length, 'agents');
|
|
911
912
|
console.log('✅ Artifact Metadata Engine initialized with', ArtifactMetadataEngine.Instance.ArtifactTypes?.length || 0, 'artifact types');
|
|
912
913
|
// Initialize mention autocomplete service immediately after AI engine
|
|
913
914
|
// This ensures the cache is built from the fully-loaded agent list
|
|
@@ -962,29 +963,23 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
962
963
|
this.buildTasksFilter();
|
|
963
964
|
}
|
|
964
965
|
/**
|
|
965
|
-
*
|
|
966
|
+
* Sets {@link TasksFilter} to the user's own tasks. The Tasks tab builds its full filter with
|
|
967
|
+
* {@link TasksFilterResolver} each time it loads.
|
|
966
968
|
*/
|
|
967
969
|
buildTasksFilter() {
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
SELECT ID FROM [${cd.SchemaName}].[${cd.BaseView}]
|
|
980
|
-
WHERE
|
|
981
|
-
UserID ='${this.CurrentUser.ID}' OR
|
|
982
|
-
ConversationID IN (
|
|
983
|
-
SELECT ID FROM [${c.SchemaName}].[${c.BaseView}] WHERE UserID='${this.CurrentUser.ID}'
|
|
984
|
-
)
|
|
985
|
-
))`;
|
|
986
|
-
console.log('📝 Conversations domain tasks filter built:', this.TasksFilter);
|
|
970
|
+
this.TasksFilter = OwnTasksFilter(this.CurrentUser);
|
|
971
|
+
}
|
|
972
|
+
/**
|
|
973
|
+
* Builds the Tasks tab filter (see {@link BuildConversationTasksFilter}). The tasks view calls it
|
|
974
|
+
* on every load and refresh, so a task linked to a message created after the workspace opened
|
|
975
|
+
* appears on the next refresh. The same function is returned every time, so the input binding
|
|
976
|
+
* does not change.
|
|
977
|
+
*/
|
|
978
|
+
get TasksFilterResolver() {
|
|
979
|
+
this.tasksFilterResolver ??= () => BuildConversationTasksFilter(this.ProviderToUse, this.CurrentUser);
|
|
980
|
+
return this.tasksFilterResolver;
|
|
987
981
|
}
|
|
982
|
+
tasksFilterResolver = null;
|
|
988
983
|
ngDoCheck() {
|
|
989
984
|
// Detect new unsaved conversation state changes
|
|
990
985
|
const currentIsNewConversation = this.IsNewUnsavedConversation;
|
|
@@ -1304,7 +1299,7 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
1304
1299
|
await AIEngineBase.Instance.Config(true);
|
|
1305
1300
|
// Refresh the mention autocomplete service to pick up new agents
|
|
1306
1301
|
await this.mentionAutocompleteService.refresh(this.CurrentUser);
|
|
1307
|
-
const agentCount = AIEngineBase.Instance.
|
|
1302
|
+
const agentCount = AIEngineBase.Instance.ReadableAgents.length;
|
|
1308
1303
|
this.notificationService.CreateSimpleNotification(`Agent cache refreshed (${agentCount} agents)`, 'success', 3000);
|
|
1309
1304
|
this.cdr.detectChanges();
|
|
1310
1305
|
}
|
|
@@ -1552,9 +1547,11 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
1552
1547
|
console.log('✨ Workspace received rename event:', event);
|
|
1553
1548
|
// Trigger animation in sidebar by setting the ID
|
|
1554
1549
|
this.RenamedConversationId = event.conversationId;
|
|
1550
|
+
this.cdr.detectChanges();
|
|
1555
1551
|
// Clear after animation completes (1500ms)
|
|
1556
1552
|
setTimeout(() => {
|
|
1557
1553
|
this.RenamedConversationId = null;
|
|
1554
|
+
this.cdr.detectChanges();
|
|
1558
1555
|
}, 1500);
|
|
1559
1556
|
}
|
|
1560
1557
|
/** @deprecated Use {@link OnConversationRenamed}. */
|
|
@@ -1806,7 +1803,7 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
1806
1803
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chatArea = _t.first);
|
|
1807
1804
|
} }, hostBindings: function ConversationWorkspaceComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1808
1805
|
i0.ɵɵlistener("resize", function ConversationWorkspaceComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow)("click", function ConversationWorkspaceComponent_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument);
|
|
1809
|
-
} }, inputs: { EnvironmentId: "EnvironmentId", environmentId: "environmentId", InitialConversationId: "InitialConversationId", initialConversationId: "initialConversationId", Layout: "Layout", layout: "layout", CurrentUser: "CurrentUser", currentUser: "currentUser", ActiveContext: "ActiveContext", activeContext: "activeContext", ContextItemId: "ContextItemId", contextItemId: "contextItemId", ShowRoutines: "ShowRoutines", ActiveTabInput: "ActiveTabInput", activeTabInput: "activeTabInput", ActiveConversationInput: "ActiveConversationInput", activeConversationInput: "activeConversationInput", ActiveCollectionInput: "ActiveCollectionInput", activeCollectionInput: "activeCollectionInput", ActiveVersionIdInput: "ActiveVersionIdInput", activeVersionIdInput: "activeVersionIdInput", ActiveTaskInput: "ActiveTaskInput", activeTaskInput: "activeTaskInput" }, outputs: { ConversationChanged: "ConversationChanged", conversationChanged: "conversationChanged", ArtifactOpened: "ArtifactOpened", artifactOpened: "artifactOpened", NavigationChanged: "NavigationChanged", navigationChanged: "navigationChanged", NewConversationStarted: "NewConversationStarted", newConversationStarted: "newConversationStarted", ActionableCommandExecuted: "ActionableCommandExecuted", actionableCommandExecuted: "actionableCommandExecuted", AutomaticCommandExecuted: "AutomaticCommandExecuted", automaticCommandExecuted: "automaticCommandExecuted", NavigationRequested: "NavigationRequested", navigationRequested: "navigationRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 13, consts: [["mjSearchShortcut", "", 1, "conversation-workspace", 3, "searchTriggered"], [1, "workspace-navigation"], [3, "tabChanged", "sidebarToggled", "searchTriggered", "refreshTriggered", "activeTab", "environmentId", "currentUser", "conversationId"], [1, "workspace-loading"], [1, "workspace-content"], [3, "close", "resultSelected", "isOpen", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "artifact", "currentUser"], ["text", "Loading agents...", "size", "large"], [1, "mobile-sidebar-backdrop", "visible"], [1, "workspace-sidebar", 3, "open", "collapsed", "no-transition", "width"], ["title", "Show conversations", 1, "sidebar-floating-toggle"], [1, "sidebar-resize-handle"], [1, "workspace-main"], [1, "mobile-sidebar-backdrop", "visible", 3, "click"], [1, "workspace-sidebar"], [3, "conversationSelected", "newConversationRequested", "openEntityRecord", "pinSidebarRequested", "unpinSidebarRequested", "activeTab", "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView", "ShowRoutines", "Provider"], ["title", "Show conversations", 1, "sidebar-floating-toggle", 3, "click"], [1, "fas", "fa-table-columns"], [1, "sidebar-resize-handle", 3, "mousedown"], [3, "collectionNavigated", "environmentId", "currentUser"], [3, "openEntityRecord", "environmentId", "currentUser", "baseFilter", "activeTaskId"], [3, "conversationRenamed", "openEntityRecord", "navigationRequest", "taskClicked", "artifactLinkClicked", "conversationCreated", "realtimeConversationReady", "pendingArtifactConsumed", "pendingMessageConsumed", "pendingMessageRequested", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingMessageConversationId", "pendingArtifactId", "pendingArtifactConversationId", "pendingArtifactVersionNumber"], [1, "artifact-panel-resize-handle"], [1, "workspace-artifact-panel"], [3, "closed", "navigateToLink", "shareRequested", "maximizeToggled", "applyFormRequested", "artifactId", "currentUser", "environmentId", "versionNumber", "showSaveToCollection", "viewContext", "Scope", "contextCollectionId", "canShare", "canEdit", "isMaximized"], [1, "artifact-panel-resize-handle", 3, "mousedown"]], template: function ConversationWorkspaceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1806
|
+
} }, inputs: { EnvironmentId: "EnvironmentId", environmentId: "environmentId", InitialConversationId: "InitialConversationId", initialConversationId: "initialConversationId", Layout: "Layout", layout: "layout", CurrentUser: "CurrentUser", currentUser: "currentUser", ActiveContext: "ActiveContext", activeContext: "activeContext", ContextItemId: "ContextItemId", contextItemId: "contextItemId", ShowRoutines: "ShowRoutines", ActiveTabInput: "ActiveTabInput", activeTabInput: "activeTabInput", ActiveConversationInput: "ActiveConversationInput", activeConversationInput: "activeConversationInput", ActiveCollectionInput: "ActiveCollectionInput", activeCollectionInput: "activeCollectionInput", ActiveVersionIdInput: "ActiveVersionIdInput", activeVersionIdInput: "activeVersionIdInput", ActiveTaskInput: "ActiveTaskInput", activeTaskInput: "activeTaskInput" }, outputs: { ConversationChanged: "ConversationChanged", conversationChanged: "conversationChanged", ArtifactOpened: "ArtifactOpened", artifactOpened: "artifactOpened", NavigationChanged: "NavigationChanged", navigationChanged: "navigationChanged", NewConversationStarted: "NewConversationStarted", newConversationStarted: "newConversationStarted", ActionableCommandExecuted: "ActionableCommandExecuted", actionableCommandExecuted: "actionableCommandExecuted", AutomaticCommandExecuted: "AutomaticCommandExecuted", automaticCommandExecuted: "automaticCommandExecuted", NavigationRequested: "NavigationRequested", navigationRequested: "navigationRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 8, vars: 13, consts: [["mjSearchShortcut", "", 1, "conversation-workspace", 3, "searchTriggered"], [1, "workspace-navigation"], [3, "tabChanged", "sidebarToggled", "searchTriggered", "refreshTriggered", "activeTab", "environmentId", "currentUser", "conversationId"], [1, "workspace-loading"], [1, "workspace-content"], [3, "close", "resultSelected", "isOpen", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "artifact", "currentUser"], ["text", "Loading agents...", "size", "large"], [1, "mobile-sidebar-backdrop", "visible"], [1, "workspace-sidebar", 3, "open", "collapsed", "no-transition", "width"], ["title", "Show conversations", 1, "sidebar-floating-toggle"], [1, "sidebar-resize-handle"], [1, "workspace-main"], [1, "mobile-sidebar-backdrop", "visible", 3, "click"], [1, "workspace-sidebar"], [3, "conversationSelected", "newConversationRequested", "openEntityRecord", "pinSidebarRequested", "unpinSidebarRequested", "activeTab", "environmentId", "currentUser", "selectedConversationId", "renamedConversationId", "isSidebarPinned", "isMobileView", "ShowRoutines", "Provider"], ["title", "Show conversations", 1, "sidebar-floating-toggle", 3, "click"], [1, "fas", "fa-table-columns"], [1, "sidebar-resize-handle", 3, "mousedown"], [3, "collectionNavigated", "environmentId", "currentUser"], [3, "openEntityRecord", "environmentId", "currentUser", "baseFilter", "BaseFilterResolver", "activeTaskId"], [3, "conversationRenamed", "openEntityRecord", "navigationRequest", "taskClicked", "artifactLinkClicked", "conversationCreated", "realtimeConversationReady", "pendingArtifactConsumed", "pendingMessageConsumed", "pendingMessageRequested", "environmentId", "currentUser", "conversationId", "conversation", "isNewConversation", "pendingMessage", "pendingAttachments", "pendingMessageConversationId", "pendingArtifactId", "pendingArtifactConversationId", "pendingArtifactVersionNumber"], [1, "artifact-panel-resize-handle"], [1, "workspace-artifact-panel"], [3, "closed", "navigateToLink", "shareRequested", "maximizeToggled", "applyFormRequested", "artifactId", "currentUser", "environmentId", "versionNumber", "showSaveToCollection", "viewContext", "Scope", "contextCollectionId", "canShare", "canEdit", "isMaximized"], [1, "artifact-panel-resize-handle", 3, "mousedown"]], template: function ConversationWorkspaceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1810
1807
|
i0.ɵɵelementStart(0, "div", 0);
|
|
1811
1808
|
i0.ɵɵlistener("searchTriggered", function ConversationWorkspaceComponent_Template_div_searchTriggered_0_listener() { return ctx.openSearch(); });
|
|
1812
1809
|
i0.ɵɵelementStart(1, "div", 1)(2, "mj-conversation-navigation", 2);
|
|
@@ -1837,7 +1834,7 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
1837
1834
|
}
|
|
1838
1835
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationWorkspaceComponent, [{
|
|
1839
1836
|
type: Component,
|
|
1840
|
-
args: [{ standalone: false, selector: 'mj-conversation-workspace', template: "<div class=\"conversation-workspace\" [attr.data-layout]=\"layout\" mjSearchShortcut (searchTriggered)=\"openSearch()\">\n <!-- Top Navigation Bar -->\n <div class=\"workspace-navigation\">\n <mj-conversation-navigation\n [activeTab]=\"activeTab\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [conversationId]=\"selectedConversationId\"\n (tabChanged)=\"onTabChanged($event)\"\n (sidebarToggled)=\"toggleSidebar()\"\n (searchTriggered)=\"openSearch()\"\n (refreshTriggered)=\"onRefreshAgentCache()\">\n </mj-conversation-navigation>\n </div>\n\n <!-- Loading spinner while initializing agents -->\n @if (!isWorkspaceReady) {\n <div class=\"workspace-loading\">\n <mj-loading text=\"Loading agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Main workspace content - only renders when agents are ready -->\n @if (isWorkspaceReady) {\n <div class=\"workspace-content\">\n <!-- Mobile sidebar backdrop -->\n @if (isMobileView && isSidebarVisible && activeTab !== 'collections' && activeTab !== 'tasks') {\n <div class=\"mobile-sidebar-backdrop visible\" (click)=\"closeSidebar()\"></div>\n }\n\n <!-- Left Sidebar (hidden when Collections or Tasks view is active) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarSettingsLoaded) {\n <div class=\"workspace-sidebar\"\n [class.open]=\"isSidebarVisible\"\n [class.collapsed]=\"isSidebarCollapsed\"\n [class.no-transition]=\"!sidebarTransitionsEnabled\"\n [style.width.px]=\"isSidebarCollapsed ? 0 : sidebarWidth\">\n <mj-conversation-sidebar\n [activeTab]=\"activeTab\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [selectedConversationId]=\"selectedConversationId\"\n [renamedConversationId]=\"renamedConversationId\"\n [isSidebarPinned]=\"isSidebarPinned\"\n [isMobileView]=\"isMobileView\"\n [ShowRoutines]=\"ShowRoutines\"\n [Provider]=\"Provider\"\n (conversationSelected)=\"onConversationSelected($event)\"\n (newConversationRequested)=\"startNewConversation()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (pinSidebarRequested)=\"pinSidebar()\"\n (unpinSidebarRequested)=\"unpinSidebar()\">\n </mj-conversation-sidebar>\n </div>\n }\n\n <!-- Floating toggle button (only visible when sidebar is collapsed and settings loaded) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarCollapsed && isSidebarSettingsLoaded) {\n <button class=\"sidebar-floating-toggle\"\n (click)=\"expandSidebar()\"\n title=\"Show conversations\">\n <i class=\"fas fa-table-columns\"></i>\n </button>\n }\n\n <!-- Resize handle for sidebar (only when expanded and settings loaded) -->\n @if (isSidebarVisible && !isSidebarCollapsed && activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarSettingsLoaded) {\n <div class=\"sidebar-resize-handle\"\n (mousedown)=\"onSidebarResizeStart($event)\"></div>\n }\n\n <!-- Collections Full-Panel View -->\n @if (activeTab === 'collections') {\n <div class=\"workspace-main\">\n <mj-collections-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n (collectionNavigated)=\"onCollectionNavigated($event)\">\n </mj-collections-full-view>\n </div>\n }\n\n <!-- Tasks Full-Panel View -->\n @if (activeTab === 'tasks') {\n <div class=\"workspace-main\">\n <mj-tasks-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [baseFilter]=\"tasksFilter\"\n [activeTaskId]=\"activeTaskId\"\n (openEntityRecord)=\"onOpenEntityRecordFromTasks($event)\">\n </mj-tasks-full-view>\n </div>\n }\n\n <!-- Main Chat Area (only shown when not in Collections or Tasks view) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks') {\n <div class=\"workspace-main\">\n <mj-conversation-chat-area\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [conversationId]=\"selectedConversationId\"\n [conversation]=\"selectedConversation\"\n [isNewConversation]=\"isNewUnsavedConversation\"\n [pendingMessage]=\"pendingMessageToSend\"\n [pendingAttachments]=\"pendingAttachmentsToSend\"\n [pendingMessageConversationId]=\"pendingMessageConversationId\"\n [pendingArtifactId]=\"pendingArtifactId\"\n [pendingArtifactConversationId]=\"pendingArtifactConversationId\"\n [pendingArtifactVersionNumber]=\"pendingArtifactVersionNumber\"\n (conversationRenamed)=\"onConversationRenamed($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (navigationRequest)=\"onNavigationRequest($event)\"\n (taskClicked)=\"onTaskClicked($event)\"\n (artifactLinkClicked)=\"onArtifactLinkNavigation($event)\"\n (conversationCreated)=\"onConversationCreated($event)\"\n (realtimeConversationReady)=\"onRealtimeConversationReady($event)\"\n (pendingArtifactConsumed)=\"pendingArtifactId = null; pendingArtifactConversationId = null; pendingArtifactVersionNumber = null\"\n (pendingMessageConsumed)=\"pendingMessageToSend = null; pendingAttachmentsToSend = null; pendingMessageConversationId = null\"\n (pendingMessageRequested)=\"onPendingMessageRequested($event)\">\n </mj-conversation-chat-area>\n </div>\n }\n\n <!-- Right Artifact Panel -->\n @if (isArtifactPanelOpen && activeArtifactId) {\n @if (!isArtifactPanelMaximized) {\n <div class=\"artifact-panel-resize-handle\" (mousedown)=\"onArtifactPanelResizeStart($event)\"></div>\n }\n <div class=\"workspace-artifact-panel\"\n [style.width.%]=\"artifactPanelWidth\"\n [class.maximized]=\"isArtifactPanelMaximized\">\n <mj-artifact-viewer-panel\n [artifactId]=\"activeArtifactId\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [versionNumber]=\"activeVersionNumber ?? undefined\"\n [showSaveToCollection]=\"activeTab !== 'collections'\"\n [viewContext]=\"activeTab === 'collections' ? 'collection' : 'conversation'\"\n [Scope]=\"activeTab === 'collections' ? null : ArtifactViewerScope\"\n [contextCollectionId]=\"collectionState.activeCollectionId ?? undefined\"\n [canShare]=\"canShareActiveArtifact\"\n [canEdit]=\"canEditActiveArtifact\"\n [isMaximized]=\"isArtifactPanelMaximized\"\n (closed)=\"closeArtifactPanel()\"\n (navigateToLink)=\"onArtifactLinkNavigation($event)\"\n (shareRequested)=\"onArtifactShareRequested($event)\"\n (maximizeToggled)=\"toggleMaximizeArtifactPanel()\"\n (applyFormRequested)=\"onApplyFormRequested($event)\">\n </mj-artifact-viewer-panel>\n </div>\n }\n </div>\n }\n\n <!-- Global Search Panel -->\n <mj-search-panel\n [isOpen]=\"isSearchPanelOpen\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n (close)=\"closeSearch()\"\n (resultSelected)=\"handleSearchResult($event)\">\n </mj-search-panel>\n\n <!-- Toast Notifications -->\n <mj-toast></mj-toast>\n\n <!-- Artifact Share Modal -->\n <mj-artifact-share-modal\n [isOpen]=\"isArtifactShareModalOpen\"\n [artifact]=\"artifactToShare\"\n [currentUser]=\"currentUser\"\n (saved)=\"onArtifactShared()\"\n (cancelled)=\"onArtifactShareModalClose()\">\n </mj-artifact-share-modal>\n</div>", styles: [".conversation-workspace {\n display: flex;\n flex-direction: column;\n height: 100%; /* Fill parent container - works in any context (tabs, embedded, etc.) */\n min-height: 0; /* Allow flex shrinking in nested flex containers */\n background-color: var(--mj-bg-surface-sunken);\n position: relative;\n}\n\n.workspace-navigation {\n flex-shrink: 0;\n height: 48px;\n background-color: var(--mj-text-primary);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n}\n\n.workspace-content {\n flex: 1;\n display: flex;\n overflow: hidden;\n min-height: 0;\n position: relative;\n}\n\n.workspace-sidebar {\n flex-shrink: 0;\n background-color: var(--mj-text-primary);\n border-right: 1px solid var(--mj-border-default);\n overflow-y: auto;\n transition: width 0.3s ease;\n}\n\n/* Disable transitions during initial load to prevent jarring animation */\n.workspace-sidebar.no-transition {\n transition: none !important;\n}\n\n.workspace-sidebar.collapsed {\n width: 0 !important;\n min-width: 0;\n border-right: none;\n overflow: hidden;\n}\n\n/* Floating toggle button (only visible when sidebar is collapsed) */\n.sidebar-floating-toggle {\n position: absolute;\n top: 12px;\n left: 12px;\n z-index: 100;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-text-primary);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: 8px;\n cursor: pointer;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n transition: all 0.2s ease;\n}\n\n.sidebar-floating-toggle:hover {\n background: var(--mj-text-primary);\n border-color: color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n transform: scale(1.05);\n}\n\n.sidebar-floating-toggle:active {\n transform: scale(0.98);\n}\n\n.sidebar-floating-toggle i {\n color: color-mix(in srgb, var(--mj-text-inverse) 85%, transparent);\n font-size: 16px;\n transition: color 0.15s ease;\n}\n\n.sidebar-floating-toggle:hover i {\n color: var(--mj-text-inverse);\n}\n\n.sidebar-resize-handle {\n width: 4px;\n background: transparent;\n cursor: ew-resize;\n flex-shrink: 0;\n position: relative;\n transition: background-color 0.2s;\n}\n\n.sidebar-resize-handle:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.sidebar-resize-handle:active {\n background: var(--mj-brand-primary-hover);\n}\n\n.sidebar-resize-handle::before {\n content: '';\n position: absolute;\n left: -4px;\n right: -4px;\n top: 0;\n bottom: 0;\n cursor: ew-resize;\n}\n\n.workspace-main {\n flex: 1;\n display: flex;\n flex-direction: column;\n background-color: var(--mj-bg-surface-card);\n overflow: hidden;\n min-height: 0;\n}\n\n.workspace-main > mj-conversation-chat-area {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n.workspace-artifact-panel {\n flex-shrink: 0;\n background-color: var(--mj-bg-surface-card);\n overflow: hidden;\n min-width: 300px;\n max-width: 70%;\n}\n\n.artifact-panel-resize-handle {\n width: 4px;\n background-color: transparent;\n cursor: ew-resize;\n flex-shrink: 0;\n transition: background-color 0.2s;\n position: relative;\n z-index: 10;\n}\n\n/* Wider hit area for easier grabbing */\n.artifact-panel-resize-handle::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: -4px;\n right: -4px;\n cursor: ew-resize;\n}\n\n.artifact-panel-resize-handle:hover {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.artifact-panel-resize-handle:active {\n background-color: var(--mj-brand-primary-hover);\n}\n\n/* Maximized artifact panel */\n.workspace-artifact-panel.maximized {\n width: 100% !important;\n max-width: 100%;\n}\n\n/* Compact layout */\n.conversation-workspace[data-layout=\"compact\"] .workspace-sidebar {\n width: 240px;\n}\n\n.conversation-workspace[data-layout=\"compact\"] .workspace-artifact-panel {\n width: 400px;\n}\n\n/* Embedded layout */\n.conversation-workspace[data-layout=\"embedded\"] {\n height: 100%;\n}\n\n.conversation-workspace[data-layout=\"embedded\"] .workspace-navigation {\n height: 48px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .workspace-sidebar {\n position: absolute;\n left: 0;\n top: 60px;\n bottom: 0;\n z-index: 100;\n box-shadow: 2px 0 8px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n }\n\n .workspace-artifact-panel {\n position: fixed;\n right: 0;\n top: 60px;\n bottom: 0;\n z-index: 100;\n box-shadow: -2px 0 8px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n }\n}\n\n/* Desktop sidebar toggle animation */\n@media (min-width: 769px) {\n .workspace-sidebar {\n transition: width 0.3s ease, min-width 0.3s ease;\n overflow: hidden;\n }\n\n .workspace-sidebar:not(.open) {\n width: 0 !important;\n min-width: 0;\n border-right: none;\n }\n\n .sidebar-resize-handle {\n transition: opacity 0.3s ease, width 0.3s ease;\n }\n\n .workspace-sidebar:not(.open) ~ .sidebar-resize-handle {\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n}\n\n/* Mobile adjustments: 481px - 768px */\n@media (max-width: 768px) {\n .workspace-sidebar {\n position: fixed;\n left: 0;\n top: 80px;\n z-index: 1000;\n width: 260px !important;\n height: calc(100vh - 80px);\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n }\n\n .workspace-sidebar.open {\n transform: translateX(0);\n }\n\n .workspace-artifact-panel {\n position: fixed;\n width: 100%;\n left: 0;\n right: 0;\n top: 56px; /* 48px nav + 8px dark strip above blue border */\n bottom: 0;\n z-index: 1000;\n max-width: 100%;\n height: auto;\n }\n\n .sidebar-resize-handle,\n .artifact-panel-resize-handle,\n .sidebar-floating-toggle {\n display: none;\n }\n\n /* Mobile sidebar backdrop */\n .mobile-sidebar-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s ease;\n z-index: 999;\n }\n\n .mobile-sidebar-backdrop.visible {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n/* Small Phone adjustments: <= 480px */\n@media (max-width: 480px) {\n .workspace-navigation {\n height: 48px;\n }\n\n .workspace-sidebar {\n width: 100%;\n }\n}\n\n/* Loading spinner (shown while initializing agents) */\n.workspace-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n width: 100%;\n background: var(--mj-bg-surface-card);\n gap: 1rem;\n}\n\n.loading-spinner {\n font-size: 3rem;\n color: var(--mj-brand-primary);\n}\n\n.workspace-loading p {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n margin: 0;\n}"] }]
|
|
1837
|
+
args: [{ standalone: false, selector: 'mj-conversation-workspace', template: "<div class=\"conversation-workspace\" [attr.data-layout]=\"layout\" mjSearchShortcut (searchTriggered)=\"openSearch()\">\n <!-- Top Navigation Bar -->\n <div class=\"workspace-navigation\">\n <mj-conversation-navigation\n [activeTab]=\"activeTab\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [conversationId]=\"selectedConversationId\"\n (tabChanged)=\"onTabChanged($event)\"\n (sidebarToggled)=\"toggleSidebar()\"\n (searchTriggered)=\"openSearch()\"\n (refreshTriggered)=\"onRefreshAgentCache()\">\n </mj-conversation-navigation>\n </div>\n\n <!-- Loading spinner while initializing agents -->\n @if (!isWorkspaceReady) {\n <div class=\"workspace-loading\">\n <mj-loading text=\"Loading agents...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Main workspace content - only renders when agents are ready -->\n @if (isWorkspaceReady) {\n <div class=\"workspace-content\">\n <!-- Mobile sidebar backdrop -->\n @if (isMobileView && isSidebarVisible && activeTab !== 'collections' && activeTab !== 'tasks') {\n <div class=\"mobile-sidebar-backdrop visible\" (click)=\"closeSidebar()\"></div>\n }\n\n <!-- Left Sidebar (hidden when Collections or Tasks view is active) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarSettingsLoaded) {\n <div class=\"workspace-sidebar\"\n [class.open]=\"isSidebarVisible\"\n [class.collapsed]=\"isSidebarCollapsed\"\n [class.no-transition]=\"!sidebarTransitionsEnabled\"\n [style.width.px]=\"isSidebarCollapsed ? 0 : sidebarWidth\">\n <mj-conversation-sidebar\n [activeTab]=\"activeTab\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [selectedConversationId]=\"selectedConversationId\"\n [renamedConversationId]=\"renamedConversationId\"\n [isSidebarPinned]=\"isSidebarPinned\"\n [isMobileView]=\"isMobileView\"\n [ShowRoutines]=\"ShowRoutines\"\n [Provider]=\"Provider\"\n (conversationSelected)=\"onConversationSelected($event)\"\n (newConversationRequested)=\"startNewConversation()\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (pinSidebarRequested)=\"pinSidebar()\"\n (unpinSidebarRequested)=\"unpinSidebar()\">\n </mj-conversation-sidebar>\n </div>\n }\n\n <!-- Floating toggle button (only visible when sidebar is collapsed and settings loaded) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarCollapsed && isSidebarSettingsLoaded) {\n <button class=\"sidebar-floating-toggle\"\n (click)=\"expandSidebar()\"\n title=\"Show conversations\">\n <i class=\"fas fa-table-columns\"></i>\n </button>\n }\n\n <!-- Resize handle for sidebar (only when expanded and settings loaded) -->\n @if (isSidebarVisible && !isSidebarCollapsed && activeTab !== 'collections' && activeTab !== 'tasks' && isSidebarSettingsLoaded) {\n <div class=\"sidebar-resize-handle\"\n (mousedown)=\"onSidebarResizeStart($event)\"></div>\n }\n\n <!-- Collections Full-Panel View -->\n @if (activeTab === 'collections') {\n <div class=\"workspace-main\">\n <mj-collections-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n (collectionNavigated)=\"onCollectionNavigated($event)\">\n </mj-collections-full-view>\n </div>\n }\n\n <!-- Tasks Full-Panel View -->\n @if (activeTab === 'tasks') {\n <div class=\"workspace-main\">\n <mj-tasks-full-view\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [baseFilter]=\"tasksFilter\"\n [BaseFilterResolver]=\"TasksFilterResolver\"\n [activeTaskId]=\"activeTaskId\"\n (openEntityRecord)=\"onOpenEntityRecordFromTasks($event)\">\n </mj-tasks-full-view>\n </div>\n }\n\n <!-- Main Chat Area (only shown when not in Collections or Tasks view) -->\n @if (activeTab !== 'collections' && activeTab !== 'tasks') {\n <div class=\"workspace-main\">\n <mj-conversation-chat-area\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n [conversationId]=\"selectedConversationId\"\n [conversation]=\"selectedConversation\"\n [isNewConversation]=\"isNewUnsavedConversation\"\n [pendingMessage]=\"pendingMessageToSend\"\n [pendingAttachments]=\"pendingAttachmentsToSend\"\n [pendingMessageConversationId]=\"pendingMessageConversationId\"\n [pendingArtifactId]=\"pendingArtifactId\"\n [pendingArtifactConversationId]=\"pendingArtifactConversationId\"\n [pendingArtifactVersionNumber]=\"pendingArtifactVersionNumber\"\n (conversationRenamed)=\"onConversationRenamed($event)\"\n (openEntityRecord)=\"onOpenEntityRecord($event)\"\n (navigationRequest)=\"onNavigationRequest($event)\"\n (taskClicked)=\"onTaskClicked($event)\"\n (artifactLinkClicked)=\"onArtifactLinkNavigation($event)\"\n (conversationCreated)=\"onConversationCreated($event)\"\n (realtimeConversationReady)=\"onRealtimeConversationReady($event)\"\n (pendingArtifactConsumed)=\"pendingArtifactId = null; pendingArtifactConversationId = null; pendingArtifactVersionNumber = null\"\n (pendingMessageConsumed)=\"pendingMessageToSend = null; pendingAttachmentsToSend = null; pendingMessageConversationId = null\"\n (pendingMessageRequested)=\"onPendingMessageRequested($event)\">\n </mj-conversation-chat-area>\n </div>\n }\n\n <!-- Right Artifact Panel -->\n @if (isArtifactPanelOpen && activeArtifactId) {\n @if (!isArtifactPanelMaximized) {\n <div class=\"artifact-panel-resize-handle\" (mousedown)=\"onArtifactPanelResizeStart($event)\"></div>\n }\n <div class=\"workspace-artifact-panel\"\n [style.width.%]=\"artifactPanelWidth\"\n [class.maximized]=\"isArtifactPanelMaximized\">\n <mj-artifact-viewer-panel\n [artifactId]=\"activeArtifactId\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [versionNumber]=\"activeVersionNumber ?? undefined\"\n [showSaveToCollection]=\"activeTab !== 'collections'\"\n [viewContext]=\"activeTab === 'collections' ? 'collection' : 'conversation'\"\n [Scope]=\"activeTab === 'collections' ? null : ArtifactViewerScope\"\n [contextCollectionId]=\"collectionState.activeCollectionId ?? undefined\"\n [canShare]=\"canShareActiveArtifact\"\n [canEdit]=\"canEditActiveArtifact\"\n [isMaximized]=\"isArtifactPanelMaximized\"\n (closed)=\"closeArtifactPanel()\"\n (navigateToLink)=\"onArtifactLinkNavigation($event)\"\n (shareRequested)=\"onArtifactShareRequested($event)\"\n (maximizeToggled)=\"toggleMaximizeArtifactPanel()\"\n (applyFormRequested)=\"onApplyFormRequested($event)\">\n </mj-artifact-viewer-panel>\n </div>\n }\n </div>\n }\n\n <!-- Global Search Panel -->\n <mj-search-panel\n [isOpen]=\"isSearchPanelOpen\"\n [environmentId]=\"environmentId\"\n [currentUser]=\"currentUser\"\n (close)=\"closeSearch()\"\n (resultSelected)=\"handleSearchResult($event)\">\n </mj-search-panel>\n\n <!-- Toast Notifications -->\n <mj-toast></mj-toast>\n\n <!-- Artifact Share Modal -->\n <mj-artifact-share-modal\n [isOpen]=\"isArtifactShareModalOpen\"\n [artifact]=\"artifactToShare\"\n [currentUser]=\"currentUser\"\n (saved)=\"onArtifactShared()\"\n (cancelled)=\"onArtifactShareModalClose()\">\n </mj-artifact-share-modal>\n</div>", styles: [".conversation-workspace {\n display: flex;\n flex-direction: column;\n height: 100%; /* Fill parent container - works in any context (tabs, embedded, etc.) */\n min-height: 0; /* Allow flex shrinking in nested flex containers */\n background-color: var(--mj-bg-surface-sunken);\n position: relative;\n}\n\n.workspace-navigation {\n flex-shrink: 0;\n height: 48px;\n background-color: var(--mj-text-primary);\n border-bottom: 1px solid color-mix(in srgb, var(--mj-text-inverse) 10%, transparent);\n}\n\n.workspace-content {\n flex: 1;\n display: flex;\n overflow: hidden;\n min-height: 0;\n position: relative;\n}\n\n.workspace-sidebar {\n flex-shrink: 0;\n background-color: var(--mj-text-primary);\n border-right: 1px solid var(--mj-border-default);\n overflow-y: auto;\n transition: width 0.3s ease;\n}\n\n/* Disable transitions during initial load to prevent jarring animation */\n.workspace-sidebar.no-transition {\n transition: none !important;\n}\n\n.workspace-sidebar.collapsed {\n width: 0 !important;\n min-width: 0;\n border-right: none;\n overflow: hidden;\n}\n\n/* Floating toggle button (only visible when sidebar is collapsed) */\n.sidebar-floating-toggle {\n position: absolute;\n top: 12px;\n left: 12px;\n z-index: 100;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-text-primary);\n border: 1px solid color-mix(in srgb, var(--mj-text-inverse) 20%, transparent);\n border-radius: 8px;\n cursor: pointer;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-text-primary) 15%, transparent);\n transition: all 0.2s ease;\n}\n\n.sidebar-floating-toggle:hover {\n background: var(--mj-text-primary);\n border-color: color-mix(in srgb, var(--mj-text-inverse) 30%, transparent);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 20%, transparent);\n transform: scale(1.05);\n}\n\n.sidebar-floating-toggle:active {\n transform: scale(0.98);\n}\n\n.sidebar-floating-toggle i {\n color: color-mix(in srgb, var(--mj-text-inverse) 85%, transparent);\n font-size: 16px;\n transition: color 0.15s ease;\n}\n\n.sidebar-floating-toggle:hover i {\n color: var(--mj-text-inverse);\n}\n\n.sidebar-resize-handle {\n width: 4px;\n background: transparent;\n cursor: ew-resize;\n flex-shrink: 0;\n position: relative;\n transition: background-color 0.2s;\n}\n\n.sidebar-resize-handle:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n.sidebar-resize-handle:active {\n background: var(--mj-brand-primary-hover);\n}\n\n.sidebar-resize-handle::before {\n content: '';\n position: absolute;\n left: -4px;\n right: -4px;\n top: 0;\n bottom: 0;\n cursor: ew-resize;\n}\n\n.workspace-main {\n flex: 1;\n display: flex;\n flex-direction: column;\n background-color: var(--mj-bg-surface-card);\n overflow: hidden;\n min-height: 0;\n}\n\n.workspace-main > mj-conversation-chat-area {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n\n.workspace-artifact-panel {\n flex-shrink: 0;\n background-color: var(--mj-bg-surface-card);\n overflow: hidden;\n min-width: 300px;\n max-width: 70%;\n}\n\n.artifact-panel-resize-handle {\n width: 4px;\n background-color: transparent;\n cursor: ew-resize;\n flex-shrink: 0;\n transition: background-color 0.2s;\n position: relative;\n z-index: 10;\n}\n\n/* Wider hit area for easier grabbing */\n.artifact-panel-resize-handle::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: -4px;\n right: -4px;\n cursor: ew-resize;\n}\n\n.artifact-panel-resize-handle:hover {\n background-color: var(--mj-brand-primary-hover);\n}\n\n.artifact-panel-resize-handle:active {\n background-color: var(--mj-brand-primary-hover);\n}\n\n/* Maximized artifact panel */\n.workspace-artifact-panel.maximized {\n width: 100% !important;\n max-width: 100%;\n}\n\n/* Compact layout */\n.conversation-workspace[data-layout=\"compact\"] .workspace-sidebar {\n width: 240px;\n}\n\n.conversation-workspace[data-layout=\"compact\"] .workspace-artifact-panel {\n width: 400px;\n}\n\n/* Embedded layout */\n.conversation-workspace[data-layout=\"embedded\"] {\n height: 100%;\n}\n\n.conversation-workspace[data-layout=\"embedded\"] .workspace-navigation {\n height: 48px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .workspace-sidebar {\n position: absolute;\n left: 0;\n top: 60px;\n bottom: 0;\n z-index: 100;\n box-shadow: 2px 0 8px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n }\n\n .workspace-artifact-panel {\n position: fixed;\n right: 0;\n top: 60px;\n bottom: 0;\n z-index: 100;\n box-shadow: -2px 0 8px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n }\n}\n\n/* Desktop sidebar toggle animation */\n@media (min-width: 769px) {\n .workspace-sidebar {\n transition: width 0.3s ease, min-width 0.3s ease;\n overflow: hidden;\n }\n\n .workspace-sidebar:not(.open) {\n width: 0 !important;\n min-width: 0;\n border-right: none;\n }\n\n .sidebar-resize-handle {\n transition: opacity 0.3s ease, width 0.3s ease;\n }\n\n .workspace-sidebar:not(.open) ~ .sidebar-resize-handle {\n opacity: 0;\n width: 0;\n pointer-events: none;\n }\n}\n\n/* Mobile adjustments: 481px - 768px */\n@media (max-width: 768px) {\n .workspace-sidebar {\n position: fixed;\n left: 0;\n top: 80px;\n z-index: 1000;\n width: 260px !important;\n height: calc(100vh - 80px);\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n }\n\n .workspace-sidebar.open {\n transform: translateX(0);\n }\n\n .workspace-artifact-panel {\n position: fixed;\n width: 100%;\n left: 0;\n right: 0;\n top: 56px; /* 48px nav + 8px dark strip above blue border */\n bottom: 0;\n z-index: 1000;\n max-width: 100%;\n height: auto;\n }\n\n .sidebar-resize-handle,\n .artifact-panel-resize-handle,\n .sidebar-floating-toggle {\n display: none;\n }\n\n /* Mobile sidebar backdrop */\n .mobile-sidebar-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s ease;\n z-index: 999;\n }\n\n .mobile-sidebar-backdrop.visible {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n/* Small Phone adjustments: <= 480px */\n@media (max-width: 480px) {\n .workspace-navigation {\n height: 48px;\n }\n\n .workspace-sidebar {\n width: 100%;\n }\n}\n\n/* Loading spinner (shown while initializing agents) */\n.workspace-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n width: 100%;\n background: var(--mj-bg-surface-card);\n gap: 1rem;\n}\n\n.loading-spinner {\n font-size: 3rem;\n color: var(--mj-brand-primary);\n}\n\n.workspace-loading p {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n margin: 0;\n}"] }]
|
|
1841
1838
|
}], () => [{ type: i1.ArtifactStateService }, { type: i2.CollectionStateService }, { type: i3.ArtifactPermissionService }, { type: i4.MJNotificationService }, { type: i5.ConversationStreamingService }, { type: i6.UICommandHandlerService }, { type: i0.ChangeDetectorRef }], { EnvironmentId: [{
|
|
1842
1839
|
type: Input
|
|
1843
1840
|
}], environmentId: [{
|
|
@@ -1922,5 +1919,5 @@ export class ConversationWorkspaceComponent extends BaseAngularComponent {
|
|
|
1922
1919
|
type: HostListener,
|
|
1923
1920
|
args: ['document:click', ['$event']]
|
|
1924
1921
|
}] }); })();
|
|
1925
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationWorkspaceComponent, { className: "ConversationWorkspaceComponent", filePath: "src/lib/components/workspace/conversation-workspace.component.ts", lineNumber:
|
|
1922
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationWorkspaceComponent, { className: "ConversationWorkspaceComponent", filePath: "src/lib/components/workspace/conversation-workspace.component.ts", lineNumber: 70 }); })();
|
|
1926
1923
|
//# sourceMappingURL=conversation-workspace.component.js.map
|