@memberjunction/ng-conversations 6.2.0-edge.0 → 6.2.0-edge.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/README.md +43 -2
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  12. package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  14. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
  15. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  16. package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
  17. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  18. package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
  19. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/attachment/image-viewer.component.js +181 -47
  21. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  22. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
  23. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
  25. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  26. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
  27. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  28. package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
  29. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
  31. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  32. package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
  33. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  34. package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
  35. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  36. package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
  37. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  38. package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
  39. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  40. package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
  41. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  42. package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
  43. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  44. package/dist/lib/components/collection/collection-tree.component.js +220 -70
  45. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  46. package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
  47. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  48. package/dist/lib/components/collection/collection-view.component.js +154 -40
  49. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  50. package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
  51. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  52. package/dist/lib/components/collection/collections-full-view.component.js +951 -367
  53. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  54. package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
  55. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  56. package/dist/lib/components/composer/ai-composer.component.js +388 -44
  57. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  58. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
  59. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
  60. package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
  61. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  62. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
  63. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  64. package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
  65. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  66. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
  67. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  68. package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
  69. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  70. package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
  71. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  72. package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
  73. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  74. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
  75. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
  76. package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
  77. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  78. package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
  79. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
  81. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  82. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
  83. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
  84. package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
  85. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
  86. package/dist/lib/components/export/export-modal.component.d.ts +84 -10
  87. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  88. package/dist/lib/components/export/export-modal.component.js +173 -49
  89. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  90. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
  91. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  92. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
  93. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  94. package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
  95. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  96. package/dist/lib/components/library/library-full-view.component.js +119 -35
  97. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  98. package/dist/lib/components/members/members-modal.component.d.ts +76 -10
  99. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  100. package/dist/lib/components/members/members-modal.component.js +164 -50
  101. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  102. package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
  103. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  104. package/dist/lib/components/message/actionable-commands.component.js +140 -26
  105. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  106. package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
  107. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  108. package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
  109. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  110. package/dist/lib/components/message/message-input.component.d.ts +613 -74
  111. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  112. package/dist/lib/components/message/message-input.component.js +1390 -422
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +490 -29
  115. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  116. package/dist/lib/components/message/message-item.component.js +1088 -244
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +297 -29
  119. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  120. package/dist/lib/components/message/message-list.component.js +598 -123
  121. package/dist/lib/components/message/message-list.component.js.map +1 -1
  122. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
  123. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  124. package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
  125. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  126. package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
  127. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  128. package/dist/lib/components/notification/activity-indicator.component.js +13 -3
  129. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  130. package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
  131. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  132. package/dist/lib/components/notification/notification-badge.component.js +36 -8
  133. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  134. package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
  135. package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
  136. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  137. package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
  138. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  139. package/dist/lib/components/project/project-form-modal.component.js +348 -87
  140. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  141. package/dist/lib/components/project/project-selector.component.d.ts +78 -8
  142. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  143. package/dist/lib/components/project/project-selector.component.js +177 -46
  144. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  145. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
  146. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  147. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  148. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
  149. package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
  150. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  151. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
  152. package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
  153. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  154. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
  155. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
  156. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
  157. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
  158. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
  159. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
  160. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  161. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
  162. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
  163. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  164. package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
  165. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  166. package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
  167. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  168. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
  169. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  170. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
  171. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  172. package/dist/lib/components/search/search-panel.component.d.ts +133 -22
  173. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  174. package/dist/lib/components/search/search-panel.component.js +312 -83
  175. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  176. package/dist/lib/components/share/share-modal.component.d.ts +69 -9
  177. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  178. package/dist/lib/components/share/share-modal.component.js +139 -31
  179. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  180. package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
  181. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  182. package/dist/lib/components/shared/user-picker.component.js +110 -30
  183. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  184. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
  185. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  186. package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
  187. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  188. package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
  189. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
  190. package/dist/lib/components/sidebar/routines-section.component.js +25 -5
  191. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  192. package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
  193. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  194. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  195. package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
  196. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  197. package/dist/lib/components/task/tasks-full-view.component.js +223 -75
  198. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  199. package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
  200. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  201. package/dist/lib/components/tasks/task-widget.component.js +100 -16
  202. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  203. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
  204. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  205. package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
  206. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  207. package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
  208. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  209. package/dist/lib/components/thread/thread-panel.component.js +146 -36
  210. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  211. package/dist/lib/components/toast/toast.component.d.ts +11 -1
  212. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  213. package/dist/lib/components/toast/toast.component.js +25 -5
  214. package/dist/lib/components/toast/toast.component.js.map +1 -1
  215. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
  216. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  217. package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
  218. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  219. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
  220. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
  221. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
  222. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
  223. package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
  224. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  225. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  226. package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
  227. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  228. package/dist/lib/directives/search-shortcut.directive.js +14 -4
  229. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  230. package/dist/lib/events/chat-events.d.ts +34 -7
  231. package/dist/lib/events/chat-events.d.ts.map +1 -1
  232. package/dist/lib/events/chat-events.js +37 -7
  233. package/dist/lib/events/chat-events.js.map +1 -1
  234. package/dist/lib/models/agent-turn.model.d.ts +113 -0
  235. package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
  236. package/dist/lib/models/agent-turn.model.js +12 -0
  237. package/dist/lib/models/agent-turn.model.js.map +1 -0
  238. package/dist/lib/models/collection-view.model.js.map +1 -1
  239. package/dist/lib/models/conversation-state.model.d.ts +8 -0
  240. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  241. package/dist/lib/models/conversation-state.model.js.map +1 -1
  242. package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
  243. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  244. package/dist/lib/models/lazy-artifact-info.js +98 -34
  245. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  246. package/dist/lib/services/active-tasks.service.d.ts +30 -4
  247. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  248. package/dist/lib/services/active-tasks.service.js +71 -19
  249. package/dist/lib/services/active-tasks.service.js.map +1 -1
  250. package/dist/lib/services/agent-state.service.d.ts +17 -1
  251. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  252. package/dist/lib/services/agent-state.service.js +48 -16
  253. package/dist/lib/services/agent-state.service.js.map +1 -1
  254. package/dist/lib/services/artifact-permission.service.d.ts +39 -0
  255. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  256. package/dist/lib/services/artifact-permission.service.js +152 -17
  257. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  258. package/dist/lib/services/artifact-state.service.d.ts +58 -5
  259. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  260. package/dist/lib/services/artifact-state.service.js +135 -35
  261. package/dist/lib/services/artifact-state.service.js.map +1 -1
  262. package/dist/lib/services/collection-permission.service.d.ts +28 -0
  263. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  264. package/dist/lib/services/collection-permission.service.js +88 -32
  265. package/dist/lib/services/collection-permission.service.js.map +1 -1
  266. package/dist/lib/services/collection-state.service.d.ts +11 -1
  267. package/dist/lib/services/collection-state.service.d.ts.map +1 -1
  268. package/dist/lib/services/collection-state.service.js +25 -5
  269. package/dist/lib/services/collection-state.service.js.map +1 -1
  270. package/dist/lib/services/conversation-agent.service.d.ts +47 -4
  271. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  272. package/dist/lib/services/conversation-agent.service.js +85 -20
  273. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  274. package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
  275. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  276. package/dist/lib/services/conversation-attachment.service.js +38 -10
  277. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  278. package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
  279. package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
  280. package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
  281. package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
  282. package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
  283. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  284. package/dist/lib/services/conversation-streaming.service.js +50 -10
  285. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  286. package/dist/lib/services/data-cache.service.d.ts +31 -0
  287. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  288. package/dist/lib/services/data-cache.service.js +71 -15
  289. package/dist/lib/services/data-cache.service.js.map +1 -1
  290. package/dist/lib/services/dialog.service.d.ts +13 -0
  291. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  292. package/dist/lib/services/dialog.service.js +25 -5
  293. package/dist/lib/services/dialog.service.js.map +1 -1
  294. package/dist/lib/services/export.service.d.ts +2 -0
  295. package/dist/lib/services/export.service.d.ts.map +1 -1
  296. package/dist/lib/services/export.service.js +5 -1
  297. package/dist/lib/services/export.service.js.map +1 -1
  298. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  299. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  300. package/dist/lib/services/mention-parser.service.js +25 -5
  301. package/dist/lib/services/mention-parser.service.js.map +1 -1
  302. package/dist/lib/services/notification.service.d.ts +54 -6
  303. package/dist/lib/services/notification.service.d.ts.map +1 -1
  304. package/dist/lib/services/notification.service.js +123 -27
  305. package/dist/lib/services/notification.service.js.map +1 -1
  306. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  307. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  308. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  309. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  310. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  311. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  312. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  313. package/dist/lib/services/search.service.d.ts +42 -9
  314. package/dist/lib/services/search.service.d.ts.map +1 -1
  315. package/dist/lib/services/search.service.js +103 -23
  316. package/dist/lib/services/search.service.js.map +1 -1
  317. package/dist/lib/services/toast.service.d.ts +19 -1
  318. package/dist/lib/services/toast.service.d.ts.map +1 -1
  319. package/dist/lib/services/toast.service.js +45 -9
  320. package/dist/lib/services/toast.service.js.map +1 -1
  321. package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
  322. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  323. package/dist/lib/services/ui-command-handler.service.js +113 -16
  324. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  325. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  326. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  327. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  328. package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
  329. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  330. package/dist/lib/utils/agent-turn-routing.js +84 -0
  331. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  332. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  333. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  334. package/dist/lib/utils/artifact-panel-action.js +10 -2
  335. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  336. package/dist/lib/utils/decision-routing.d.ts +68 -0
  337. package/dist/lib/utils/decision-routing.d.ts.map +1 -0
  338. package/dist/lib/utils/decision-routing.js +101 -0
  339. package/dist/lib/utils/decision-routing.js.map +1 -0
  340. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  341. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  342. package/dist/lib/utils/distinct-artifacts.js +5 -1
  343. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  344. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  345. package/dist/lib/utils/plan-mode-preference.js +6 -6
  346. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  347. package/dist/public-api.d.ts +5 -0
  348. package/dist/public-api.d.ts.map +1 -1
  349. package/dist/public-api.js +8 -0
  350. package/dist/public-api.js.map +1 -1
  351. package/package.json +32 -32
@@ -3,7 +3,7 @@ import { NormalizeUUID, UUIDsEqual } from '@memberjunction/global';
3
3
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
4
4
  import { MessageItemComponent } from './message-item.component';
5
5
  import { RealtimeSessionTimelineCardComponent } from '../realtime/realtime-session-timeline-card.component';
6
- import { selectDistinctLatestArtifacts } from '../../utils/distinct-artifacts';
6
+ import { SelectDistinctLatestArtifacts } from '../../utils/distinct-artifacts';
7
7
  import { BuildConversationTimeline } from '../../utils/realtime-session-timeline';
8
8
  import { DEFAULT_TRANSCRIPT_PAGE_SIZE } from '../../utils/conversation-detail-window';
9
9
  import { ResolveDateJumpTarget } from '../../utils/date-jump';
@@ -95,21 +95,124 @@ export class MessageListComponent extends BaseAngularComponent {
95
95
  cdRef;
96
96
  hostRef;
97
97
  messages = [];
98
- conversation;
99
- currentUser;
100
- isProcessing = false;
98
+ Conversation;
99
+ /** @deprecated Use {@link Conversation}. */
100
+ set conversation(value) {
101
+ this.Conversation = value;
102
+ }
103
+ /** @deprecated Use {@link Conversation}. */
104
+ get conversation() {
105
+ return this.Conversation;
106
+ }
107
+ CurrentUser;
108
+ /** @deprecated Use {@link CurrentUser}. */
109
+ set currentUser(value) {
110
+ this.CurrentUser = value;
111
+ }
112
+ /** @deprecated Use {@link CurrentUser}. */
113
+ get currentUser() {
114
+ return this.CurrentUser;
115
+ }
116
+ IsProcessing = false;
117
+ /** @deprecated Use {@link IsProcessing}. */
118
+ set isProcessing(value) {
119
+ this.IsProcessing = value;
120
+ }
121
+ /** @deprecated Use {@link IsProcessing}. */
122
+ get isProcessing() {
123
+ return this.IsProcessing;
124
+ }
101
125
  /** Whether the built-in "No messages yet" filler renders for empty conversations. Hosts with their own empty-state chrome set false. */
102
- showEmptyFill = true;
126
+ ShowEmptyFill = true;
127
+ /** @deprecated Use {@link ShowEmptyFill}. */
128
+ set showEmptyFill(value) {
129
+ this.ShowEmptyFill = value;
130
+ }
131
+ /** @deprecated Use {@link ShowEmptyFill}. */
132
+ get showEmptyFill() {
133
+ return this.ShowEmptyFill;
134
+ }
103
135
  /** Whether the sticky date header + jump-to-date dropdown render. */
104
- showDateNavigation = true;
136
+ ShowDateNavigation = true;
137
+ /** @deprecated Use {@link ShowDateNavigation}. */
138
+ set showDateNavigation(value) {
139
+ this.ShowDateNavigation = value;
140
+ }
141
+ /** @deprecated Use {@link ShowDateNavigation}. */
142
+ get showDateNavigation() {
143
+ return this.ShowDateNavigation;
144
+ }
105
145
  // Per-message feature gates — forwarded onto each MessageItemComponent instance
106
146
  // (see applyMessageItemFeatureFlags). All default true.
107
- showAgentRunDetails = true;
108
- showReactions = true;
109
- showMessageRating = true;
110
- allowPinning = true;
111
- allowMessageEdit = true;
112
- allowMessageDelete = true;
147
+ ShowAgentRunDetails = true;
148
+ /** @deprecated Use {@link ShowAgentRunDetails}. */
149
+ set showAgentRunDetails(value) {
150
+ this.ShowAgentRunDetails = value;
151
+ }
152
+ /** @deprecated Use {@link ShowAgentRunDetails}. */
153
+ get showAgentRunDetails() {
154
+ return this.ShowAgentRunDetails;
155
+ }
156
+ ShowReactions = true;
157
+ /** @deprecated Use {@link ShowReactions}. */
158
+ set showReactions(value) {
159
+ this.ShowReactions = value;
160
+ }
161
+ /** @deprecated Use {@link ShowReactions}. */
162
+ get showReactions() {
163
+ return this.ShowReactions;
164
+ }
165
+ ShowMessageRating = true;
166
+ /** @deprecated Use {@link ShowMessageRating}. */
167
+ set showMessageRating(value) {
168
+ this.ShowMessageRating = value;
169
+ }
170
+ /** @deprecated Use {@link ShowMessageRating}. */
171
+ get showMessageRating() {
172
+ return this.ShowMessageRating;
173
+ }
174
+ AllowPinning = true;
175
+ /** @deprecated Use {@link AllowPinning}. */
176
+ set allowPinning(value) {
177
+ this.AllowPinning = value;
178
+ }
179
+ /** @deprecated Use {@link AllowPinning}. */
180
+ get allowPinning() {
181
+ return this.AllowPinning;
182
+ }
183
+ AllowMessageEdit = true;
184
+ /** @deprecated Use {@link AllowMessageEdit}. */
185
+ set allowMessageEdit(value) {
186
+ this.AllowMessageEdit = value;
187
+ }
188
+ /** @deprecated Use {@link AllowMessageEdit}. */
189
+ get allowMessageEdit() {
190
+ return this.AllowMessageEdit;
191
+ }
192
+ AllowMessageDelete = true;
193
+ /** @deprecated Use {@link AllowMessageDelete}. */
194
+ set allowMessageDelete(value) {
195
+ this.AllowMessageDelete = value;
196
+ }
197
+ /** @deprecated Use {@link AllowMessageDelete}. */
198
+ get allowMessageDelete() {
199
+ return this.AllowMessageDelete;
200
+ }
201
+ /**
202
+ * Hides response forms and actionable commands on each message.
203
+ * Restamped onto already-rendered items — they are created dynamically.
204
+ */
205
+ set ReadOnly(value) {
206
+ if (value === this._readOnly) {
207
+ return;
208
+ }
209
+ this._readOnly = value;
210
+ this.restampAssistantIdentity();
211
+ }
212
+ get ReadOnly() {
213
+ return this._readOnly;
214
+ }
215
+ _readOnly = false;
113
216
  // ── Windowed-transcript paging state ────────────────────────────────────────
114
217
  // The list renders only the LOADED window, not the whole conversation. These two
115
218
  // describe what lies above it. Unused until the Phase 5 sentinel lands; wired now so
@@ -192,39 +295,103 @@ export class MessageListComponent extends BaseAngularComponent {
192
295
  // restamp the ALREADY-rendered items or existing bubbles keep the old identity
193
296
  // until the next messages-array mutation. ──
194
297
  /** Display name shown on AI messages. Null = the engine-resolved agent name. */
195
- set assistantDisplayName(value) {
298
+ set AssistantDisplayName(value) {
196
299
  if (value !== this._assistantDisplayName) {
197
300
  this._assistantDisplayName = value;
198
301
  this.restampAssistantIdentity();
199
302
  }
200
303
  }
201
- get assistantDisplayName() {
304
+ get AssistantDisplayName() {
202
305
  return this._assistantDisplayName;
203
306
  }
307
+ /** @deprecated Use {@link AssistantDisplayName}. */
308
+ get assistantDisplayName() {
309
+ return this.AssistantDisplayName;
310
+ }
311
+ /** @deprecated Use {@link AssistantDisplayName}. */
312
+ set assistantDisplayName(value) {
313
+ this.AssistantDisplayName = value;
314
+ }
204
315
  _assistantDisplayName = null;
205
316
  /** Image URL for the AI message avatar. Null = the agent's Font Awesome icon. */
206
- set assistantAvatarUrl(value) {
317
+ set AssistantAvatarUrl(value) {
207
318
  if (value !== this._assistantAvatarUrl) {
208
319
  this._assistantAvatarUrl = value;
209
320
  this.restampAssistantIdentity();
210
321
  }
211
322
  }
212
- get assistantAvatarUrl() {
323
+ get AssistantAvatarUrl() {
213
324
  return this._assistantAvatarUrl;
214
325
  }
326
+ /** @deprecated Use {@link AssistantAvatarUrl}. */
327
+ get assistantAvatarUrl() {
328
+ return this.AssistantAvatarUrl;
329
+ }
330
+ /** @deprecated Use {@link AssistantAvatarUrl}. */
331
+ set assistantAvatarUrl(value) {
332
+ this.AssistantAvatarUrl = value;
333
+ }
215
334
  _assistantAvatarUrl = null;
216
- artifactMap = new Map();
217
- agentRunMap = new Map();
218
- ratingsMap = new Map();
219
- userAvatarMap = new Map();
220
- attachmentsMap = new Map();
335
+ ArtifactMap = new Map();
336
+ /** @deprecated Use {@link ArtifactMap}. */
337
+ set artifactMap(value) {
338
+ this.ArtifactMap = value;
339
+ }
340
+ /** @deprecated Use {@link ArtifactMap}. */
341
+ get artifactMap() {
342
+ return this.ArtifactMap;
343
+ }
344
+ AgentRunMap = new Map();
345
+ /** @deprecated Use {@link AgentRunMap}. */
346
+ set agentRunMap(value) {
347
+ this.AgentRunMap = value;
348
+ }
349
+ /** @deprecated Use {@link AgentRunMap}. */
350
+ get agentRunMap() {
351
+ return this.AgentRunMap;
352
+ }
353
+ RatingsMap = new Map();
354
+ /** @deprecated Use {@link RatingsMap}. */
355
+ set ratingsMap(value) {
356
+ this.RatingsMap = value;
357
+ }
358
+ /** @deprecated Use {@link RatingsMap}. */
359
+ get ratingsMap() {
360
+ return this.RatingsMap;
361
+ }
362
+ UserAvatarMap = new Map();
363
+ /** @deprecated Use {@link UserAvatarMap}. */
364
+ set userAvatarMap(value) {
365
+ this.UserAvatarMap = value;
366
+ }
367
+ /** @deprecated Use {@link UserAvatarMap}. */
368
+ get userAvatarMap() {
369
+ return this.UserAvatarMap;
370
+ }
371
+ AttachmentsMap = new Map();
372
+ /** @deprecated Use {@link AttachmentsMap}. */
373
+ set attachmentsMap(value) {
374
+ this.AttachmentsMap = value;
375
+ }
376
+ /** @deprecated Use {@link AttachmentsMap}. */
377
+ get attachmentsMap() {
378
+ return this.AttachmentsMap;
379
+ }
221
380
  /**
222
381
  * Optional session-row enrichment for realtime SESSION BLOCKS, keyed by
223
382
  * `NormalizeUUID(sessionId)` (agent name / status / close reason). Details stamped
224
383
  * with an `AgentSessionID` collapse into one timeline card per session — see
225
384
  * `BuildConversationTimeline` — and this map dresses those cards up when present.
226
385
  */
227
- sessionMetaMap = new Map();
386
+ SessionMetaMap = new Map();
387
+ /** @deprecated Use {@link SessionMetaMap}. */
388
+ set sessionMetaMap(value) {
389
+ this.SessionMetaMap = value;
390
+ }
391
+ /** @deprecated Use {@link SessionMetaMap}. */
392
+ get sessionMetaMap() {
393
+ return this.SessionMetaMap;
394
+ }
228
395
  /**
229
396
  * Optional per-iteration custom message renderer. When set, the list renders each
230
397
  * message via this template (full replacement) instead of the default
@@ -237,33 +404,179 @@ export class MessageListComponent extends BaseAngularComponent {
237
404
  * etc. The minimal `MJChatMessageBubbleDefaultComponent` ships as a ready-to-use
238
405
  * bubble renderer.
239
406
  */
240
- messageRendererTemplate = null;
407
+ MessageRendererTemplate = null;
408
+ /** @deprecated Use {@link MessageRendererTemplate}. */
409
+ set messageRendererTemplate(value) {
410
+ this.MessageRendererTemplate = value;
411
+ }
412
+ /** @deprecated Use {@link MessageRendererTemplate}. */
413
+ get messageRendererTemplate() {
414
+ return this.MessageRendererTemplate;
415
+ }
241
416
  /**
242
417
  * Optional per-message additive decoration template, projected INSIDE the default
243
418
  * `MessageItemComponent` (after the message text). Forwarded by chat-area when a
244
419
  * consumer projects `mjChatSlot="messageExtra"`. Ignored when
245
420
  * `messageRendererTemplate` is set (custom renderers own all per-message content).
246
421
  */
247
- messageExtraTemplate = null;
248
- editMessage = new EventEmitter();
249
- deleteMessage = new EventEmitter();
250
- retryMessage = new EventEmitter();
251
- testFeedbackMessage = new EventEmitter();
252
- artifactClicked = new EventEmitter();
253
- replyInThread = new EventEmitter();
254
- viewThread = new EventEmitter();
255
- messageEdited = new EventEmitter();
256
- openEntityRecord = new EventEmitter();
257
- suggestedResponseSelected = new EventEmitter();
258
- attachmentClicked = new EventEmitter();
259
- diagnosticRequested = new EventEmitter(); // emits messageId
260
- messagePinToggled = new EventEmitter();
422
+ MessageExtraTemplate = null;
423
+ /** @deprecated Use {@link MessageExtraTemplate}. */
424
+ set messageExtraTemplate(value) {
425
+ this.MessageExtraTemplate = value;
426
+ }
427
+ /** @deprecated Use {@link MessageExtraTemplate}. */
428
+ get messageExtraTemplate() {
429
+ return this.MessageExtraTemplate;
430
+ }
431
+ EditMessage = new EventEmitter();
432
+ /**
433
+ * @deprecated Use {@link EditMessage}.
434
+ *
435
+ * The same emitter under the old binding name, so a template still binding
436
+ * (editMessage) keeps working. Must stay AFTER EditMessage: class fields
437
+ * initialise in order, and the other way round this captures undefined.
438
+ */
439
+ editMessage = this.EditMessage;
440
+ DeleteMessage = new EventEmitter();
441
+ /**
442
+ * @deprecated Use {@link DeleteMessage}.
443
+ *
444
+ * The same emitter under the old binding name, so a template still binding
445
+ * (deleteMessage) keeps working. Must stay AFTER DeleteMessage: class fields
446
+ * initialise in order, and the other way round this captures undefined.
447
+ */
448
+ deleteMessage = this.DeleteMessage;
449
+ RetryMessage = new EventEmitter();
450
+ /**
451
+ * @deprecated Use {@link RetryMessage}.
452
+ *
453
+ * The same emitter under the old binding name, so a template still binding
454
+ * (retryMessage) keeps working. Must stay AFTER RetryMessage: class fields
455
+ * initialise in order, and the other way round this captures undefined.
456
+ */
457
+ retryMessage = this.RetryMessage;
458
+ TestFeedbackMessage = new EventEmitter();
459
+ /**
460
+ * @deprecated Use {@link TestFeedbackMessage}.
461
+ *
462
+ * The same emitter under the old binding name, so a template still binding
463
+ * (testFeedbackMessage) keeps working. Must stay AFTER TestFeedbackMessage: class fields
464
+ * initialise in order, and the other way round this captures undefined.
465
+ */
466
+ testFeedbackMessage = this.TestFeedbackMessage;
467
+ ArtifactClicked = new EventEmitter();
468
+ /**
469
+ * @deprecated Use {@link ArtifactClicked}.
470
+ *
471
+ * The same emitter under the old binding name, so a template still binding
472
+ * (artifactClicked) keeps working. Must stay AFTER ArtifactClicked: class fields
473
+ * initialise in order, and the other way round this captures undefined.
474
+ */
475
+ artifactClicked = this.ArtifactClicked;
476
+ ReplyInThread = new EventEmitter();
477
+ /**
478
+ * @deprecated Use {@link ReplyInThread}.
479
+ *
480
+ * The same emitter under the old binding name, so a template still binding
481
+ * (replyInThread) keeps working. Must stay AFTER ReplyInThread: class fields
482
+ * initialise in order, and the other way round this captures undefined.
483
+ */
484
+ replyInThread = this.ReplyInThread;
485
+ ViewThread = new EventEmitter();
486
+ /**
487
+ * @deprecated Use {@link ViewThread}.
488
+ *
489
+ * The same emitter under the old binding name, so a template still binding
490
+ * (viewThread) keeps working. Must stay AFTER ViewThread: class fields
491
+ * initialise in order, and the other way round this captures undefined.
492
+ */
493
+ viewThread = this.ViewThread;
494
+ MessageEdited = new EventEmitter();
495
+ /**
496
+ * @deprecated Use {@link MessageEdited}.
497
+ *
498
+ * The same emitter under the old binding name, so a template still binding
499
+ * (messageEdited) keeps working. Must stay AFTER MessageEdited: class fields
500
+ * initialise in order, and the other way round this captures undefined.
501
+ */
502
+ messageEdited = this.MessageEdited;
503
+ OpenEntityRecord = new EventEmitter();
504
+ /**
505
+ * @deprecated Use {@link OpenEntityRecord}.
506
+ *
507
+ * The same emitter under the old binding name, so a template still binding
508
+ * (openEntityRecord) keeps working. Must stay AFTER OpenEntityRecord: class fields
509
+ * initialise in order, and the other way round this captures undefined.
510
+ */
511
+ openEntityRecord = this.OpenEntityRecord;
512
+ SuggestedResponseSelected = new EventEmitter();
513
+ /**
514
+ * @deprecated Use {@link SuggestedResponseSelected}.
515
+ *
516
+ * The same emitter under the old binding name, so a template still binding
517
+ * (suggestedResponseSelected) keeps working. Must stay AFTER SuggestedResponseSelected: class fields
518
+ * initialise in order, and the other way round this captures undefined.
519
+ */
520
+ suggestedResponseSelected = this.SuggestedResponseSelected;
521
+ AttachmentClicked = new EventEmitter();
522
+ /**
523
+ * @deprecated Use {@link AttachmentClicked}.
524
+ *
525
+ * The same emitter under the old binding name, so a template still binding
526
+ * (attachmentClicked) keeps working. Must stay AFTER AttachmentClicked: class fields
527
+ * initialise in order, and the other way round this captures undefined.
528
+ */
529
+ attachmentClicked = this.AttachmentClicked;
530
+ DiagnosticRequested = new EventEmitter();
531
+ /**
532
+ * @deprecated Use {@link DiagnosticRequested}.
533
+ *
534
+ * The same emitter under the old binding name, so a template still binding
535
+ * (diagnosticRequested) keeps working. Must stay AFTER DiagnosticRequested: class fields
536
+ * initialise in order, and the other way round this captures undefined.
537
+ */
538
+ diagnosticRequested = this.DiagnosticRequested; // emits messageId
539
+ MessagePinToggled = new EventEmitter();
540
+ /**
541
+ * @deprecated Use {@link MessagePinToggled}.
542
+ *
543
+ * The same emitter under the old binding name, so a template still binding
544
+ * (messagePinToggled) keeps working. Must stay AFTER MessagePinToggled: class fields
545
+ * initialise in order, and the other way round this captures undefined.
546
+ */
547
+ messagePinToggled = this.MessagePinToggled;
548
+ /** A message's run has gone quiet; the host should re-read durable state. Emits messageId. */
549
+ LivenessCheckRequested = new EventEmitter();
261
550
  /** Emitted with the `MJ: AI Agent Sessions.ID` when a realtime session block's Open affordance is clicked. */
262
- realtimeSessionOpenRequested = new EventEmitter();
551
+ RealtimeSessionOpenRequested = new EventEmitter();
552
+ /**
553
+ * @deprecated Use {@link RealtimeSessionOpenRequested}.
554
+ *
555
+ * The same emitter under the old binding name, so a template still binding
556
+ * (realtimeSessionOpenRequested) keeps working. Must stay AFTER RealtimeSessionOpenRequested: class fields
557
+ * initialise in order, and the other way round this captures undefined.
558
+ */
559
+ realtimeSessionOpenRequested = this.RealtimeSessionOpenRequested;
263
560
  /** Forwarded from MessageItemComponent — see its docs. */
264
- beforeResponseFormSubmitted = new EventEmitter();
561
+ BeforeResponseFormSubmitted = new EventEmitter();
562
+ /**
563
+ * @deprecated Use {@link BeforeResponseFormSubmitted}.
564
+ *
565
+ * The same emitter under the old binding name, so a template still binding
566
+ * (beforeResponseFormSubmitted) keeps working. Must stay AFTER BeforeResponseFormSubmitted: class fields
567
+ * initialise in order, and the other way round this captures undefined.
568
+ */
569
+ beforeResponseFormSubmitted = this.BeforeResponseFormSubmitted;
265
570
  /** Forwarded from MessageItemComponent — see its docs. */
266
- afterResponseFormSubmitted = new EventEmitter();
571
+ AfterResponseFormSubmitted = new EventEmitter();
572
+ /**
573
+ * @deprecated Use {@link AfterResponseFormSubmitted}.
574
+ *
575
+ * The same emitter under the old binding name, so a template still binding
576
+ * (afterResponseFormSubmitted) keeps working. Must stay AFTER AfterResponseFormSubmitted: class fields
577
+ * initialise in order, and the other way round this captures undefined.
578
+ */
579
+ afterResponseFormSubmitted = this.AfterResponseFormSubmitted;
267
580
  /**
268
581
  * Asks the host to load the next older page. Fired when the "earlier messages"
269
582
  * sentinel scrolls into view — never on a raw scroll event, so a fast scroll costs
@@ -275,10 +588,34 @@ export class MessageListComponent extends BaseAngularComponent {
275
588
  * Emitted instead of handled locally because paging belongs to the window store.
276
589
  */
277
590
  DateJumpRequested = new EventEmitter();
278
- messageContainerRef;
279
- scrollContainer;
591
+ MessageContainerRef;
592
+ /** @deprecated Use {@link MessageContainerRef}. */
593
+ get messageContainerRef() {
594
+ return this.MessageContainerRef;
595
+ }
596
+ /** @deprecated Use {@link MessageContainerRef}. */
597
+ set messageContainerRef(value) {
598
+ this.MessageContainerRef = value;
599
+ }
600
+ ScrollContainer;
601
+ /** @deprecated Use {@link ScrollContainer}. */
602
+ get scrollContainer() {
603
+ return this.ScrollContainer;
604
+ }
605
+ /** @deprecated Use {@link ScrollContainer}. */
606
+ set scrollContainer(value) {
607
+ this.ScrollContainer = value;
608
+ }
280
609
  /** Only present while `HasMoreAbove` is true — the `@if` creates and destroys it. */
281
- olderSentinel;
610
+ OlderSentinel;
611
+ /** @deprecated Use {@link OlderSentinel}. */
612
+ get olderSentinel() {
613
+ return this.OlderSentinel;
614
+ }
615
+ /** @deprecated Use {@link OlderSentinel}. */
616
+ set olderSentinel(value) {
617
+ this.OlderSentinel = value;
618
+ }
282
619
  /** Template rendered in place of an unmounted timeline item. */
283
620
  spacerTemplate;
284
621
  /**
@@ -354,16 +691,44 @@ export class MessageListComponent extends BaseAngularComponent {
354
691
  * since both grow `messages.length`.
355
692
  */
356
693
  _previousFirstKey = null;
357
- currentDateDisplay = 'Today';
358
- showDateNav = false;
359
- shouldShowDateFilter = false;
694
+ CurrentDateDisplay = 'Today';
695
+ /** @deprecated Use {@link CurrentDateDisplay}. */
696
+ get currentDateDisplay() {
697
+ return this.CurrentDateDisplay;
698
+ }
699
+ /** @deprecated Use {@link CurrentDateDisplay}. */
700
+ set currentDateDisplay(value) {
701
+ this.CurrentDateDisplay = value;
702
+ }
703
+ ShowDateNav = false;
704
+ /** @deprecated Use {@link ShowDateNav}. */
705
+ get showDateNav() {
706
+ return this.ShowDateNav;
707
+ }
708
+ /** @deprecated Use {@link ShowDateNav}. */
709
+ set showDateNav(value) {
710
+ this.ShowDateNav = value;
711
+ }
712
+ ShouldShowDateFilter = false;
713
+ /** @deprecated Use {@link ShouldShowDateFilter}. */
714
+ get shouldShowDateFilter() {
715
+ return this.ShouldShowDateFilter;
716
+ }
717
+ /** @deprecated Use {@link ShouldShowDateFilter}. */
718
+ set shouldShowDateFilter(value) {
719
+ this.ShouldShowDateFilter = value;
720
+ }
360
721
  constructor(cdRef, hostRef) {
361
722
  super();
362
723
  this.cdRef = cdRef;
363
724
  this.hostRef = hostRef;
364
725
  }
726
+ ToggleDateNav() {
727
+ this.ShowDateNav = !this.ShowDateNav;
728
+ }
729
+ /** @deprecated Use {@link ToggleDateNav}. */
365
730
  toggleDateNav() {
366
- this.showDateNav = !this.showDateNav;
731
+ return this.ToggleDateNav();
367
732
  }
368
733
  /**
369
734
  * Handles a date-navigator selection.
@@ -373,14 +738,18 @@ export class MessageListComponent extends BaseAngularComponent {
373
738
  * {@link ScrollToDateTarget}. The label updates immediately so the dropdown feels responsive
374
739
  * while paging runs.
375
740
  */
376
- jumpToDate(period) {
377
- this.showDateNav = false;
741
+ JumpToDate(period) {
742
+ this.ShowDateNav = false;
378
743
  if (!isDateJumpPeriod(period)) {
379
744
  return;
380
745
  }
381
- this.currentDateDisplay = DATE_JUMP_LABELS[period];
746
+ this.CurrentDateDisplay = DATE_JUMP_LABELS[period];
382
747
  this.DateJumpRequested.emit(period);
383
748
  }
749
+ /** @deprecated Use {@link JumpToDate}. */
750
+ jumpToDate(period) {
751
+ return this.JumpToDate(period);
752
+ }
384
753
  /**
385
754
  * Scrolls to the start of `period` within the currently loaded messages.
386
755
  *
@@ -484,7 +853,7 @@ export class MessageListComponent extends BaseAngularComponent {
484
853
  }
485
854
  ngAfterViewInit() {
486
855
  // ViewContainerRef is now available - perform initial render if we have messages
487
- if (this.messages && this.messages.length > 0 && this.messageContainerRef && !this._initialRenderComplete) {
856
+ if (this.messages && this.messages.length > 0 && this.MessageContainerRef && !this._initialRenderComplete) {
488
857
  this._initialRenderComplete = true;
489
858
  this.updateMessages(this.messages);
490
859
  this.updateDateFilterVisibility();
@@ -494,7 +863,7 @@ export class MessageListComponent extends BaseAngularComponent {
494
863
  // React to messages array changes
495
864
  // Note: On initial load, messageContainerRef may not be available yet (ngOnChanges runs before ngAfterViewInit)
496
865
  // In that case, ngAfterViewInit will handle the initial render
497
- if (changes['messages'] && this.messages && this.messageContainerRef) {
866
+ if (changes['messages'] && this.messages && this.MessageContainerRef) {
498
867
  this._initialRenderComplete = true;
499
868
  // Capture the pre-render height so a prepend can be corrected for. Must happen
500
869
  // BEFORE updateMessages — afterwards the new rows are already in the layout — and
@@ -507,18 +876,32 @@ export class MessageListComponent extends BaseAngularComponent {
507
876
  // While artifacts are pre-loaded during initial peripheral data load,
508
877
  // new artifacts can be created mid-conversation (e.g., by agent runs)
509
878
  // This ensures artifact cards appear in messages immediately without requiring a refresh
510
- if (changes['artifactMap'] && this.messages && this.messageContainerRef) {
879
+ if (changes['artifactMap'] && this.messages && this.MessageContainerRef) {
511
880
  this.updateMessages(this.messages);
512
881
  }
513
882
  // Watch for attachmentsMap changes to handle newly created attachments
514
883
  // This ensures media attachments (e.g., images generated by agents) appear
515
884
  // immediately without requiring a page refresh
516
- if (changes['attachmentsMap'] && this.messages && this.messageContainerRef) {
885
+ if (changes['attachmentsMap'] && this.messages && this.MessageContainerRef) {
517
886
  this.updateMessages(this.messages);
518
887
  }
519
888
  // Watch for session-meta changes so realtime session blocks pick up their
520
889
  // agent name / status chip once the (async, batched) session lookup lands
521
- if (changes['sessionMetaMap'] && this.messages && this.messageContainerRef) {
890
+ if (changes['sessionMetaMap'] && this.messages && this.MessageContainerRef) {
891
+ this.updateMessages(this.messages);
892
+ }
893
+ // Watch for agent-run changes so a run refreshed mid-flight reaches the rendered bubble.
894
+ // `agentRun` is stamped onto each item as static config at create/update time, so a replaced
895
+ // map alone never reaches an item already on screen — it keeps the object it was given.
896
+ //
897
+ // This became load-bearing with per-message liveness (MJ #4222): reconciliation re-reads the
898
+ // run over HTTP precisely when the socket is dead, and if the fresh `LastHeartbeatAt` cannot
899
+ // reach the bubble, the pill stays degraded while the client is in fact being told the run is
900
+ // healthy. Observed directly — the pill held 'checking…' for a full minute across successful
901
+ // reconciles.
902
+ // Keyed by whichever input name the host bound — the deprecated alias or the current one.
903
+ const agentRunMapChanged = changes['AgentRunMap'] ?? changes['agentRunMap'];
904
+ if (agentRunMapChanged && this.messages && this.MessageContainerRef) {
522
905
  this.updateMessages(this.messages);
523
906
  }
524
907
  }
@@ -611,7 +994,7 @@ export class MessageListComponent extends BaseAngularComponent {
611
994
  }
612
995
  this._warnedNoScrollParent = true;
613
996
  const chain = [];
614
- let el = this.findSentinelElement() ?? this.scrollContainer?.nativeElement ?? null;
997
+ let el = this.findSentinelElement() ?? this.ScrollContainer?.nativeElement ?? null;
615
998
  while (el && chain.length < 20) {
616
999
  const style = getComputedStyle(el);
617
1000
  chain.push({
@@ -626,7 +1009,7 @@ export class MessageListComponent extends BaseAngularComponent {
626
1009
  + 'older pages cannot auto-load. The host must give the transcript a scrollable container '
627
1010
  + '(overflow-y: auto AND a bounded height, e.g. min-height: 0 on a flex child). '
628
1011
  + 'Walked from '
629
- + (this.olderSentinel ? 'the sentinel' : this.scrollContainer ? 'the list container' : 'NOTHING — both view children are undefined')
1012
+ + (this.OlderSentinel ? 'the sentinel' : this.ScrollContainer ? 'the list container' : 'NOTHING — both view children are undefined')
630
1013
  + ':', chain);
631
1014
  }
632
1015
  /**
@@ -654,7 +1037,7 @@ export class MessageListComponent extends BaseAngularComponent {
654
1037
  // guaranteed present exactly when the walk matters. `@ViewChild('scrollContainer')`
655
1038
  // resolves on Angular's own schedule and can still be undefined here, which would end
656
1039
  // the walk before it began.
657
- let el = this.findSentinelElement() ?? this.scrollContainer?.nativeElement ?? null;
1040
+ let el = this.findSentinelElement() ?? this.ScrollContainer?.nativeElement ?? null;
658
1041
  while (el) {
659
1042
  const overflowY = getComputedStyle(el).overflowY;
660
1043
  if ((overflowY === 'auto' || overflowY === 'scroll') && el.scrollHeight > el.clientHeight) {
@@ -778,19 +1161,23 @@ export class MessageListComponent extends BaseAngularComponent {
778
1161
  }
779
1162
  });
780
1163
  this._renderedMessages.clear();
781
- if (this.messageContainerRef) {
782
- this.messageContainerRef.clear();
1164
+ if (this.MessageContainerRef) {
1165
+ this.MessageContainerRef.clear();
783
1166
  }
784
1167
  }
785
1168
  /**
786
1169
  * Called when messages array changes
787
1170
  * Efficiently updates the DOM without re-rendering everything
788
1171
  */
789
- set messagesUpdate(messages) {
790
- if (messages && this.messageContainerRef) {
1172
+ set MessagesUpdate(messages) {
1173
+ if (messages && this.MessageContainerRef) {
791
1174
  this.updateMessages(messages);
792
1175
  }
793
1176
  }
1177
+ /** @deprecated Use {@link MessagesUpdate}. */
1178
+ set messagesUpdate(value) {
1179
+ this.MessagesUpdate = value;
1180
+ }
794
1181
  /**
795
1182
  * Updates the message list using dynamic component creation
796
1183
  * Only adds/removes changed messages for optimal performance
@@ -1016,7 +1403,7 @@ export class MessageListComponent extends BaseAngularComponent {
1016
1403
  existing.ref.destroy();
1017
1404
  this._renderedMessages.delete(key);
1018
1405
  }
1019
- const viewRef = this.messageContainerRef.createEmbeddedView(this.spacerTemplate, { height: this.heightFor(key, item) }, { index: timelineIndex });
1406
+ const viewRef = this.MessageContainerRef.createEmbeddedView(this.spacerTemplate, { height: this.heightFor(key, item) }, { index: timelineIndex });
1020
1407
  this._renderedMessages.set(key, { kind: 'spacer', ref: viewRef });
1021
1408
  }
1022
1409
  /**
@@ -1141,7 +1528,7 @@ export class MessageListComponent extends BaseAngularComponent {
1141
1528
  */
1142
1529
  renderSessionBlock(group, timelineIndex) {
1143
1530
  const key = this.getSessionKey(group.SessionID);
1144
- const meta = this.sessionMetaMap.get(NormalizeUUID(group.SessionID)) ?? null;
1531
+ const meta = this.SessionMetaMap.get(NormalizeUUID(group.SessionID)) ?? null;
1145
1532
  const existing = this._renderedMessages.get(key);
1146
1533
  if (existing && existing.kind === 'realtime-session') {
1147
1534
  // Update existing card in place.
@@ -1156,11 +1543,13 @@ export class MessageListComponent extends BaseAngularComponent {
1156
1543
  existing.ref.destroy();
1157
1544
  this._renderedMessages.delete(key);
1158
1545
  }
1159
- const componentRef = this.messageContainerRef.createComponent(RealtimeSessionTimelineCardComponent, { index: timelineIndex });
1546
+ const componentRef = this.MessageContainerRef.createComponent(RealtimeSessionTimelineCardComponent, { index: timelineIndex });
1160
1547
  componentRef.instance.Group = group;
1161
1548
  componentRef.instance.Meta = meta;
1162
- componentRef.instance.UserName = this.currentUser?.Name || 'You';
1163
- componentRef.instance.OpenRequested.subscribe((sessionId) => this.realtimeSessionOpenRequested.emit(sessionId));
1549
+ // The card says "You" on the viewer's own call and names the caller on anyone else's, which is
1550
+ // why it takes the viewer's id rather than their name.
1551
+ componentRef.instance.CurrentUserID = this.CurrentUser?.ID ?? null;
1552
+ componentRef.instance.OpenRequested.subscribe((sessionId) => this.RealtimeSessionOpenRequested.emit(sessionId));
1164
1553
  this._renderedMessages.set(key, { kind: 'realtime-session', ref: componentRef });
1165
1554
  }
1166
1555
  /**
@@ -1177,7 +1566,7 @@ export class MessageListComponent extends BaseAngularComponent {
1177
1566
  // boolean (last index when `isLastMessage` is true, else 0 — any non-last
1178
1567
  // index works since it just affects that one comparison).
1179
1568
  const index = isLastMessage ? messages.length - 1 : 0;
1180
- const useCustomRenderer = this.messageRendererTemplate !== null;
1569
+ const useCustomRenderer = this.MessageRendererTemplate !== null;
1181
1570
  const existing = this._renderedMessages.get(key);
1182
1571
  if (existing && existing.kind === 'embedded' && useCustomRenderer) {
1183
1572
  // Update existing embedded view from messageRenderer slot
@@ -1209,14 +1598,14 @@ export class MessageListComponent extends BaseAngularComponent {
1209
1598
  const previousMessage = instance.message;
1210
1599
  instance.message = message;
1211
1600
  instance.allMessages = messages;
1212
- instance.isProcessing = this.isProcessing;
1213
- instance.userAvatarMap = this.userAvatarMap;
1601
+ instance.isProcessing = this.IsProcessing;
1602
+ instance.userAvatarMap = this.UserAvatarMap;
1214
1603
  instance.isLastMessage = (index === messages.length - 1);
1215
- instance.messageExtraTemplate = this.messageExtraTemplate;
1604
+ instance.messageExtraTemplate = this.MessageExtraTemplate;
1216
1605
  this.applyMessageItemFeatureFlags(instance);
1217
- instance.agentRun = this.agentRunMap.get(message.ID) || null;
1218
- instance.ratings = this.ratingsMap.get(message.ID);
1219
- instance.attachments = this.attachmentsMap.get(message.ID) || [];
1606
+ instance.agentRun = this.AgentRunMap.get(message.ID) || null;
1607
+ instance.ratings = this.RatingsMap.get(message.ID);
1608
+ instance.attachments = this.AttachmentsMap.get(message.ID) || [];
1220
1609
  // After the inputs above, for the same reason as the create path: this can force a
1221
1610
  // synchronous child pass, which would otherwise paint the previous refresh's agent run,
1222
1611
  // ratings and attachments.
@@ -1233,14 +1622,15 @@ export class MessageListComponent extends BaseAngularComponent {
1233
1622
  * paths so a mid-session rebind stays consistent.
1234
1623
  */
1235
1624
  applyMessageItemFeatureFlags(instance) {
1236
- instance.showAgentRunDetails = this.showAgentRunDetails;
1237
- instance.showReactions = this.showReactions;
1238
- instance.showMessageRating = this.showMessageRating;
1239
- instance.allowPinning = this.allowPinning;
1240
- instance.allowMessageEdit = this.allowMessageEdit;
1241
- instance.allowMessageDelete = this.allowMessageDelete;
1242
- instance.assistantDisplayName = this.assistantDisplayName;
1243
- instance.assistantAvatarUrl = this.assistantAvatarUrl;
1625
+ instance.showAgentRunDetails = this.ShowAgentRunDetails;
1626
+ instance.showReactions = this.ShowReactions;
1627
+ instance.showMessageRating = this.ShowMessageRating;
1628
+ instance.allowPinning = this.AllowPinning;
1629
+ instance.allowMessageEdit = this.AllowMessageEdit;
1630
+ instance.allowMessageDelete = this.AllowMessageDelete;
1631
+ instance.ReadOnly = this.ReadOnly;
1632
+ instance.assistantDisplayName = this.AssistantDisplayName;
1633
+ instance.assistantAvatarUrl = this.AssistantAvatarUrl;
1244
1634
  }
1245
1635
  /**
1246
1636
  * Creates a new rendered entry — either a `MessageItemComponent` (default path)
@@ -1249,43 +1639,44 @@ export class MessageListComponent extends BaseAngularComponent {
1249
1639
  * message entity.
1250
1640
  */
1251
1641
  createRenderedEntry(message, messages, index, key, useCustomRenderer, timelineIndex) {
1252
- if (useCustomRenderer && this.messageRendererTemplate) {
1642
+ if (useCustomRenderer && this.MessageRendererTemplate) {
1253
1643
  // The slot directive carries TemplateRef<unknown>; assert the contract here
1254
1644
  // (consumers' `let-message` bindings consume the message context shape below).
1255
- const template = this.messageRendererTemplate;
1256
- const viewRef = this.messageContainerRef.createEmbeddedView(template, { $implicit: message, message }, { index: timelineIndex });
1645
+ const template = this.MessageRendererTemplate;
1646
+ const viewRef = this.MessageContainerRef.createEmbeddedView(template, { $implicit: message, message }, { index: timelineIndex });
1257
1647
  this._renderedMessages.set(key, { kind: 'embedded', ref: viewRef });
1258
1648
  // Stamp back-ref for parity with the component path.
1259
1649
  message._viewRef = viewRef;
1260
1650
  return;
1261
1651
  }
1262
- const componentRef = this.messageContainerRef.createComponent(MessageItemComponent, { index: timelineIndex });
1652
+ const componentRef = this.MessageContainerRef.createComponent(MessageItemComponent, { index: timelineIndex });
1263
1653
  const instance = componentRef.instance;
1264
1654
  instance.message = message;
1265
- instance.conversation = this.conversation;
1266
- instance.currentUser = this.currentUser;
1655
+ instance.conversation = this.Conversation;
1656
+ instance.currentUser = this.CurrentUser;
1267
1657
  instance.allMessages = messages;
1268
- instance.isProcessing = this.isProcessing;
1269
- instance.userAvatarMap = this.userAvatarMap;
1658
+ instance.isProcessing = this.IsProcessing;
1659
+ instance.userAvatarMap = this.UserAvatarMap;
1270
1660
  instance.isLastMessage = (index === messages.length - 1);
1271
- instance.messageExtraTemplate = this.messageExtraTemplate;
1661
+ instance.messageExtraTemplate = this.MessageExtraTemplate;
1272
1662
  this.applyMessageItemFeatureFlags(instance);
1273
- instance.agentRun = this.agentRunMap.get(message.ID) || null;
1274
- instance.ratings = this.ratingsMap.get(message.ID);
1275
- instance.attachments = this.attachmentsMap.get(message.ID) || [];
1276
- instance.editClicked.subscribe((msg) => this.editMessage.emit(msg));
1277
- instance.deleteClicked.subscribe((msg) => this.deleteMessage.emit(msg));
1278
- instance.retryClicked.subscribe((msg) => this.retryMessage.emit(msg));
1279
- instance.testFeedbackClicked.subscribe((msg) => this.testFeedbackMessage.emit(msg));
1280
- instance.artifactClicked.subscribe((data) => this.artifactClicked.emit(data));
1281
- instance.messageEdited.subscribe((msg) => this.messageEdited.emit(msg));
1282
- instance.openEntityRecord.subscribe((data) => this.openEntityRecord.emit(data));
1283
- instance.suggestedResponseSelected.subscribe((data) => this.suggestedResponseSelected.emit(data));
1284
- instance.attachmentClicked.subscribe((attachment) => this.attachmentClicked.emit(attachment));
1285
- instance.diagnosticRequested.subscribe((messageId) => this.diagnosticRequested.emit(messageId));
1286
- instance.messagePinToggled.subscribe((msg) => this.messagePinToggled.emit(msg));
1287
- instance.beforeResponseFormSubmitted.subscribe((e) => this.beforeResponseFormSubmitted.emit(e));
1288
- instance.afterResponseFormSubmitted.subscribe((e) => this.afterResponseFormSubmitted.emit(e));
1663
+ instance.agentRun = this.AgentRunMap.get(message.ID) || null;
1664
+ instance.ratings = this.RatingsMap.get(message.ID);
1665
+ instance.attachments = this.AttachmentsMap.get(message.ID) || [];
1666
+ instance.editClicked.subscribe((msg) => this.EditMessage.emit(msg));
1667
+ instance.deleteClicked.subscribe((msg) => this.DeleteMessage.emit(msg));
1668
+ instance.retryClicked.subscribe((msg) => this.RetryMessage.emit(msg));
1669
+ instance.testFeedbackClicked.subscribe((msg) => this.TestFeedbackMessage.emit(msg));
1670
+ instance.artifactClicked.subscribe((data) => this.ArtifactClicked.emit(data));
1671
+ instance.messageEdited.subscribe((msg) => this.MessageEdited.emit(msg));
1672
+ instance.openEntityRecord.subscribe((data) => this.OpenEntityRecord.emit(data));
1673
+ instance.suggestedResponseSelected.subscribe((data) => this.SuggestedResponseSelected.emit(data));
1674
+ instance.attachmentClicked.subscribe((attachment) => this.AttachmentClicked.emit(attachment));
1675
+ instance.diagnosticRequested.subscribe((messageId) => this.DiagnosticRequested.emit(messageId));
1676
+ instance.LivenessCheckRequested.subscribe((messageId) => this.LivenessCheckRequested.emit(messageId));
1677
+ instance.messagePinToggled.subscribe((msg) => this.MessagePinToggled.emit(msg));
1678
+ instance.beforeResponseFormSubmitted.subscribe((e) => this.BeforeResponseFormSubmitted.emit(e));
1679
+ instance.afterResponseFormSubmitted.subscribe((e) => this.AfterResponseFormSubmitted.emit(e));
1289
1680
  if (instance.artifactActionPerformed) {
1290
1681
  instance.artifactActionPerformed.subscribe((data) => {
1291
1682
  // Parent can handle artifact actions (save, fork, history, share)
@@ -1399,11 +1790,11 @@ export class MessageListComponent extends BaseAngularComponent {
1399
1790
  * while genuinely distinct artifacts are all retained.
1400
1791
  */
1401
1792
  resolveDistinctArtifacts(messageId) {
1402
- const list = this.artifactMap.get(messageId);
1793
+ const list = this.ArtifactMap.get(messageId);
1403
1794
  if (!list || list.length === 0) {
1404
1795
  return [];
1405
1796
  }
1406
- return selectDistinctLatestArtifacts(list);
1797
+ return SelectDistinctLatestArtifacts(list);
1407
1798
  }
1408
1799
  /**
1409
1800
  * Generates a unique key for a message
@@ -1425,11 +1816,11 @@ export class MessageListComponent extends BaseAngularComponent {
1425
1816
  // the one case where it is most useful. `HasMoreAbove` is the only windowing-safe signal
1426
1817
  // that more conversation exists above, so it short-circuits the heuristic.
1427
1818
  if (this.HasMoreAbove) {
1428
- this.shouldShowDateFilter = true;
1819
+ this.ShouldShowDateFilter = true;
1429
1820
  return;
1430
1821
  }
1431
1822
  if (!this.messages || this.messages.length < 20) {
1432
- this.shouldShowDateFilter = false;
1823
+ this.ShouldShowDateFilter = false;
1433
1824
  return;
1434
1825
  }
1435
1826
  // Check if messages span more than 2 days
@@ -1438,21 +1829,21 @@ export class MessageListComponent extends BaseAngularComponent {
1438
1829
  .filter(d => d != null)
1439
1830
  .map(d => new Date(d).setHours(0, 0, 0, 0));
1440
1831
  if (dates.length === 0) {
1441
- this.shouldShowDateFilter = false;
1832
+ this.ShouldShowDateFilter = false;
1442
1833
  return;
1443
1834
  }
1444
1835
  const uniqueDates = new Set(dates);
1445
1836
  const daySpan = uniqueDates.size;
1446
1837
  // Show filter if conversation has 20+ messages and spans 3+ days
1447
- this.shouldShowDateFilter = daySpan >= 3;
1838
+ this.ShouldShowDateFilter = daySpan >= 3;
1448
1839
  }
1449
1840
  /**
1450
1841
  * Scrolls the message list to the bottom
1451
1842
  */
1452
1843
  scrollToBottom() {
1453
- if (this.scrollContainer && this.scrollContainer.nativeElement) {
1844
+ if (this.ScrollContainer && this.ScrollContainer.nativeElement) {
1454
1845
  Promise.resolve().then(() => {
1455
- const element = this.scrollContainer.nativeElement;
1846
+ const element = this.ScrollContainer.nativeElement;
1456
1847
  element.scrollTop = element.scrollHeight;
1457
1848
  });
1458
1849
  }
@@ -1461,7 +1852,7 @@ export class MessageListComponent extends BaseAngularComponent {
1461
1852
  * Removes a message from the rendered list
1462
1853
  * Called externally when a message is deleted
1463
1854
  */
1464
- removeMessage(message) {
1855
+ RemoveMessage(message) {
1465
1856
  const key = this.getMessageKey(message);
1466
1857
  const entry = this._renderedMessages.get(key);
1467
1858
  if (entry) {
@@ -1469,18 +1860,22 @@ export class MessageListComponent extends BaseAngularComponent {
1469
1860
  this._renderedMessages.delete(key);
1470
1861
  }
1471
1862
  }
1863
+ /** @deprecated Use {@link RemoveMessage}. */
1864
+ removeMessage(message) {
1865
+ return this.RemoveMessage(message);
1866
+ }
1472
1867
  static ɵfac = function MessageListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MessageListComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
1473
1868
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MessageListComponent, selectors: [["mj-conversation-message-list"]], viewQuery: function MessageListComponent_Query(rf, ctx) { if (rf & 1) {
1474
1869
  i0.ɵɵviewQuery(_c0, 5, ViewContainerRef)(_c1, 5)(_c2, 5)(_c3, 5);
1475
1870
  } if (rf & 2) {
1476
1871
  let _t;
1477
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.messageContainerRef = _t.first);
1478
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scrollContainer = _t.first);
1479
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.olderSentinel = _t.first);
1872
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.MessageContainerRef = _t.first);
1873
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ScrollContainer = _t.first);
1874
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.OlderSentinel = _t.first);
1480
1875
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.spacerTemplate = _t.first);
1481
1876
  } }, hostVars: 2, hostBindings: function MessageListComponent_HostBindings(rf, ctx) { if (rf & 2) {
1482
1877
  i0.ɵɵclassProp("mj-list-host-scrolled", ctx.HostSuppliesScroller);
1483
- } }, inputs: { messages: "messages", conversation: "conversation", currentUser: "currentUser", isProcessing: "isProcessing", showEmptyFill: "showEmptyFill", showDateNavigation: "showDateNavigation", showAgentRunDetails: "showAgentRunDetails", showReactions: "showReactions", showMessageRating: "showMessageRating", allowPinning: "allowPinning", allowMessageEdit: "allowMessageEdit", allowMessageDelete: "allowMessageDelete", HasMoreAbove: "HasMoreAbove", IsLoadingOlder: "IsLoadingOlder", ScrollRoot: "ScrollRoot", assistantDisplayName: "assistantDisplayName", assistantAvatarUrl: "assistantAvatarUrl", artifactMap: "artifactMap", agentRunMap: "agentRunMap", ratingsMap: "ratingsMap", userAvatarMap: "userAvatarMap", attachmentsMap: "attachmentsMap", sessionMetaMap: "sessionMetaMap", messageRendererTemplate: "messageRendererTemplate", messageExtraTemplate: "messageExtraTemplate", messagesUpdate: "messagesUpdate" }, outputs: { editMessage: "editMessage", deleteMessage: "deleteMessage", retryMessage: "retryMessage", testFeedbackMessage: "testFeedbackMessage", artifactClicked: "artifactClicked", replyInThread: "replyInThread", viewThread: "viewThread", messageEdited: "messageEdited", openEntityRecord: "openEntityRecord", suggestedResponseSelected: "suggestedResponseSelected", attachmentClicked: "attachmentClicked", diagnosticRequested: "diagnosticRequested", messagePinToggled: "messagePinToggled", realtimeSessionOpenRequested: "realtimeSessionOpenRequested", beforeResponseFormSubmitted: "beforeResponseFormSubmitted", afterResponseFormSubmitted: "afterResponseFormSubmitted", OlderRequested: "OlderRequested", DateJumpRequested: "DateJumpRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 9, vars: 3, consts: [["scrollContainer", ""], ["spacerTemplate", ""], ["messageContainer", ""], ["olderSentinel", ""], [1, "message-list-container"], [1, "sticky-date-header"], [1, "transcript-older-sentinel"], ["Icon", "fa-solid fa-comments", "Title", "No messages yet. Start a conversation!", 1, "messages-empty-fill"], [1, "sticky-date-wrapper"], [1, "sticky-date-button", 3, "click"], [1, "fas", "fa-chevron-down"], [1, "date-nav-dropdown"], [1, "date-nav-option", "jump-to"], [1, "date-nav-option", 3, "click"], ["text", "Loading earlier messages\u2026", "size", "small"], [1, "transcript-older-label"], ["aria-hidden", "true", 1, "transcript-spacer"]], template: function MessageListComponent_Template(rf, ctx) { if (rf & 1) {
1878
+ } }, inputs: { messages: "messages", Conversation: "Conversation", conversation: "conversation", CurrentUser: "CurrentUser", currentUser: "currentUser", IsProcessing: "IsProcessing", isProcessing: "isProcessing", ShowEmptyFill: "ShowEmptyFill", showEmptyFill: "showEmptyFill", ShowDateNavigation: "ShowDateNavigation", showDateNavigation: "showDateNavigation", ShowAgentRunDetails: "ShowAgentRunDetails", showAgentRunDetails: "showAgentRunDetails", ShowReactions: "ShowReactions", showReactions: "showReactions", ShowMessageRating: "ShowMessageRating", showMessageRating: "showMessageRating", AllowPinning: "AllowPinning", allowPinning: "allowPinning", AllowMessageEdit: "AllowMessageEdit", allowMessageEdit: "allowMessageEdit", AllowMessageDelete: "AllowMessageDelete", allowMessageDelete: "allowMessageDelete", ReadOnly: "ReadOnly", HasMoreAbove: "HasMoreAbove", IsLoadingOlder: "IsLoadingOlder", ScrollRoot: "ScrollRoot", AssistantDisplayName: "AssistantDisplayName", assistantDisplayName: "assistantDisplayName", AssistantAvatarUrl: "AssistantAvatarUrl", assistantAvatarUrl: "assistantAvatarUrl", ArtifactMap: "ArtifactMap", artifactMap: "artifactMap", AgentRunMap: "AgentRunMap", agentRunMap: "agentRunMap", RatingsMap: "RatingsMap", ratingsMap: "ratingsMap", UserAvatarMap: "UserAvatarMap", userAvatarMap: "userAvatarMap", AttachmentsMap: "AttachmentsMap", attachmentsMap: "attachmentsMap", SessionMetaMap: "SessionMetaMap", sessionMetaMap: "sessionMetaMap", MessageRendererTemplate: "MessageRendererTemplate", messageRendererTemplate: "messageRendererTemplate", MessageExtraTemplate: "MessageExtraTemplate", messageExtraTemplate: "messageExtraTemplate", MessagesUpdate: "MessagesUpdate", messagesUpdate: "messagesUpdate" }, outputs: { EditMessage: "EditMessage", editMessage: "editMessage", DeleteMessage: "DeleteMessage", deleteMessage: "deleteMessage", RetryMessage: "RetryMessage", retryMessage: "retryMessage", TestFeedbackMessage: "TestFeedbackMessage", testFeedbackMessage: "testFeedbackMessage", ArtifactClicked: "ArtifactClicked", artifactClicked: "artifactClicked", ReplyInThread: "ReplyInThread", replyInThread: "replyInThread", ViewThread: "ViewThread", viewThread: "viewThread", MessageEdited: "MessageEdited", messageEdited: "messageEdited", OpenEntityRecord: "OpenEntityRecord", openEntityRecord: "openEntityRecord", SuggestedResponseSelected: "SuggestedResponseSelected", suggestedResponseSelected: "suggestedResponseSelected", AttachmentClicked: "AttachmentClicked", attachmentClicked: "attachmentClicked", DiagnosticRequested: "DiagnosticRequested", diagnosticRequested: "diagnosticRequested", MessagePinToggled: "MessagePinToggled", messagePinToggled: "messagePinToggled", LivenessCheckRequested: "LivenessCheckRequested", RealtimeSessionOpenRequested: "RealtimeSessionOpenRequested", realtimeSessionOpenRequested: "realtimeSessionOpenRequested", BeforeResponseFormSubmitted: "BeforeResponseFormSubmitted", beforeResponseFormSubmitted: "beforeResponseFormSubmitted", AfterResponseFormSubmitted: "AfterResponseFormSubmitted", afterResponseFormSubmitted: "afterResponseFormSubmitted", OlderRequested: "OlderRequested", DateJumpRequested: "DateJumpRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 9, vars: 3, consts: [["scrollContainer", ""], ["spacerTemplate", ""], ["messageContainer", ""], ["olderSentinel", ""], [1, "message-list-container"], [1, "sticky-date-header"], [1, "transcript-older-sentinel"], ["Icon", "fa-solid fa-comments", "Title", "No messages yet. Start a conversation!", 1, "messages-empty-fill"], [1, "sticky-date-wrapper"], [1, "sticky-date-button", 3, "click"], [1, "fas", "fa-chevron-down"], [1, "date-nav-dropdown"], [1, "date-nav-option", "jump-to"], [1, "date-nav-option", 3, "click"], ["text", "Loading earlier messages\u2026", "size", "small"], [1, "transcript-older-label"], ["aria-hidden", "true", 1, "transcript-spacer"]], template: function MessageListComponent_Template(rf, ctx) { if (rf & 1) {
1484
1879
  i0.ɵɵelementStart(0, "div", 4, 0);
1485
1880
  i0.ɵɵconditionalCreate(2, MessageListComponent_Conditional_2_Template, 17, 3, "div", 5);
1486
1881
  i0.ɵɵconditionalCreate(3, MessageListComponent_Conditional_3_Template, 4, 1, "div", 6);
@@ -1502,28 +1897,52 @@ export class MessageListComponent extends BaseAngularComponent {
1502
1897
  args: [{ standalone: false, selector: 'mj-conversation-message-list', template: "<div class=\"message-list-container\" #scrollContainer>\n <!-- Sticky Date Header (only show for long conversations spanning multiple days) -->\n @if (showDateNavigation && shouldShowDateFilter && messages.length > 0) {\n <div class=\"sticky-date-header\">\n <div class=\"sticky-date-wrapper\">\n <button class=\"sticky-date-button\" (click)=\"toggleDateNav()\">\n <span>{{ currentDateDisplay }}</span>\n <i class=\"fas fa-chevron-down\"></i>\n </button>\n <div class=\"date-nav-dropdown\" [class.show]=\"showDateNav\">\n <div class=\"date-nav-option jump-to\">Jump to...</div>\n <div class=\"date-nav-option\" (click)=\"jumpToDate('today')\">Today</div>\n <div class=\"date-nav-option\" (click)=\"jumpToDate('yesterday')\">Yesterday</div>\n <div class=\"date-nav-option\" (click)=\"jumpToDate('last-week')\">Last week</div>\n <div class=\"date-nav-option\" (click)=\"jumpToDate('last-month')\">Last month</div>\n </div>\n </div>\n </div>\n }\n\n <!-- Windowed transcript: older pages load when this scrolls into view (IntersectionObserver\n in the component, not a scroll listener). Absent entirely once the top is reached. -->\n @if (HasMoreAbove) {\n <div #olderSentinel class=\"transcript-older-sentinel\">\n @if (IsLoadingOlder) {\n <mj-loading text=\"Loading earlier messages\u2026\" size=\"small\"></mj-loading>\n } @else {\n <span class=\"transcript-older-label\">Earlier messages</span>\n }\n </div>\n }\n\n <!-- Height-holding stand-in for a timeline item that has been unmounted to keep the DOM\n bounded. Declared here but rendered into #messageContainer at the item's own index,\n so scroll geometry is unchanged. -->\n <ng-template #spacerTemplate let-height=\"height\">\n <div class=\"transcript-spacer\" [style.height.px]=\"height\" aria-hidden=\"true\"></div>\n </ng-template>\n\n <ng-container #messageContainer></ng-container>\n\n @if (messages.length === 0 && showEmptyFill) {\n <mj-empty-state\n class=\"messages-empty-fill\"\n Icon=\"fa-solid fa-comments\"\n Title=\"No messages yet. Start a conversation!\" />\n }\n</div>", styles: ["/* Scrolls itself ONLY when no host scroller was supplied \u2014 see the `mj-list-host-scrolled`\n host binding. `overflow-y` here makes this element the nearest scrolling ancestor, which is\n what `position: sticky` binds to; when the host owns the scrolling this container never\n moves, so anything sticky inside it silently scrolls away instead of pinning. */\n.message-list-container {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n background-color: var(--mj-bg-surface-card);\n position: relative;\n}\n\n/* Empty-state fills the message pane vertically */\n.messages-empty-fill {\n height: 100%;\n}\n\n/* Sticky Date Header */\n.sticky-date-header {\n position: sticky;\n top: 12px;\n z-index: 100;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0;\n margin: 0;\n pointer-events: none;\n}\n\n.sticky-date-wrapper {\n pointer-events: auto;\n position: relative;\n}\n\n.sticky-date-button {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: var(--mj-shadow-sm);\n}\n\n.sticky-date-button:hover {\n background: var(--mj-bg-surface-sunken);\n box-shadow: var(--mj-shadow-md);\n}\n\n.sticky-date-button i {\n font-size: 10px;\n color: var(--mj-text-secondary);\n}\n\n/* Date Navigation Dropdown */\n.date-nav-dropdown {\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-lg);\n min-width: 200px;\n display: none;\n z-index: 101;\n}\n\n.date-nav-dropdown.show {\n display: block;\n}\n\n.date-nav-option {\n padding: 10px 16px;\n cursor: pointer;\n transition: background 0.2s;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.date-nav-option:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.date-nav-option.jump-to {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 12px;\n cursor: default;\n padding: 8px 16px 4px 16px;\n}\n\n.date-nav-option.jump-to:hover {\n background: none;\n}\n\n/* \u2500\u2500 Windowed transcript sentinel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Sits above the first loaded message while older pages remain. Needs real height\n so the IntersectionObserver has something to observe. */\n.transcript-older-sentinel {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 2.5rem;\n padding: 0.75rem 1rem;\n}\n\n.transcript-older-label {\n font-size: 0.8125rem;\n color: var(--mj-text-secondary);\n}\n\n/* Stands in for an unmounted timeline item so the scroll range never changes when the\n DOM is trimmed. Height comes from the item's last measured size. */\n.transcript-spacer {\n width: 100%;\n flex-shrink: 0;\n}\n\n/* Host owns the scrolling: stop creating a scroll context here so `position: sticky`\n descendants (the date navigator) bind to the host's real scroller and actually pin.\n\n BOTH axes, not just `overflow-y`. Per CSS Overflow, when one axis is `visible` and the\n other is not, the `visible` one computes to `auto` \u2014 so leaving `overflow-x: hidden` in\n place silently kept this element a scroll container and the header kept scrolling away.\n Horizontal clipping is not lost: the host's own scroller (`.chat-messages-container`)\n already carries `overflow-x: hidden`. */\n:host(.mj-list-host-scrolled) .message-list-container {\n overflow: visible;\n}\n"] }]
1503
1898
  }], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { messages: [{
1504
1899
  type: Input
1900
+ }], Conversation: [{
1901
+ type: Input
1505
1902
  }], conversation: [{
1506
1903
  type: Input
1904
+ }], CurrentUser: [{
1905
+ type: Input
1507
1906
  }], currentUser: [{
1508
1907
  type: Input
1908
+ }], IsProcessing: [{
1909
+ type: Input
1509
1910
  }], isProcessing: [{
1510
1911
  type: Input
1912
+ }], ShowEmptyFill: [{
1913
+ type: Input
1511
1914
  }], showEmptyFill: [{
1512
1915
  type: Input
1916
+ }], ShowDateNavigation: [{
1917
+ type: Input
1513
1918
  }], showDateNavigation: [{
1514
1919
  type: Input
1920
+ }], ShowAgentRunDetails: [{
1921
+ type: Input
1515
1922
  }], showAgentRunDetails: [{
1516
1923
  type: Input
1924
+ }], ShowReactions: [{
1925
+ type: Input
1517
1926
  }], showReactions: [{
1518
1927
  type: Input
1928
+ }], ShowMessageRating: [{
1929
+ type: Input
1519
1930
  }], showMessageRating: [{
1520
1931
  type: Input
1932
+ }], AllowPinning: [{
1933
+ type: Input
1521
1934
  }], allowPinning: [{
1522
1935
  type: Input
1936
+ }], AllowMessageEdit: [{
1937
+ type: Input
1523
1938
  }], allowMessageEdit: [{
1524
1939
  type: Input
1940
+ }], AllowMessageDelete: [{
1941
+ type: Input
1525
1942
  }], allowMessageDelete: [{
1526
1943
  type: Input
1944
+ }], ReadOnly: [{
1945
+ type: Input
1527
1946
  }], HasMoreAbove: [{
1528
1947
  type: Input
1529
1948
  }], IsLoadingOlder: [{
@@ -1533,74 +1952,130 @@ export class MessageListComponent extends BaseAngularComponent {
1533
1952
  }], HostSuppliesScroller: [{
1534
1953
  type: HostBinding,
1535
1954
  args: ['class.mj-list-host-scrolled']
1955
+ }], AssistantDisplayName: [{
1956
+ type: Input
1536
1957
  }], assistantDisplayName: [{
1537
1958
  type: Input
1959
+ }], AssistantAvatarUrl: [{
1960
+ type: Input
1538
1961
  }], assistantAvatarUrl: [{
1539
1962
  type: Input
1963
+ }], ArtifactMap: [{
1964
+ type: Input
1540
1965
  }], artifactMap: [{
1541
1966
  type: Input
1967
+ }], AgentRunMap: [{
1968
+ type: Input
1542
1969
  }], agentRunMap: [{
1543
1970
  type: Input
1971
+ }], RatingsMap: [{
1972
+ type: Input
1544
1973
  }], ratingsMap: [{
1545
1974
  type: Input
1975
+ }], UserAvatarMap: [{
1976
+ type: Input
1546
1977
  }], userAvatarMap: [{
1547
1978
  type: Input
1979
+ }], AttachmentsMap: [{
1980
+ type: Input
1548
1981
  }], attachmentsMap: [{
1549
1982
  type: Input
1983
+ }], SessionMetaMap: [{
1984
+ type: Input
1550
1985
  }], sessionMetaMap: [{
1551
1986
  type: Input
1987
+ }], MessageRendererTemplate: [{
1988
+ type: Input
1552
1989
  }], messageRendererTemplate: [{
1553
1990
  type: Input
1991
+ }], MessageExtraTemplate: [{
1992
+ type: Input
1554
1993
  }], messageExtraTemplate: [{
1555
1994
  type: Input
1995
+ }], EditMessage: [{
1996
+ type: Output
1556
1997
  }], editMessage: [{
1557
1998
  type: Output
1999
+ }], DeleteMessage: [{
2000
+ type: Output
1558
2001
  }], deleteMessage: [{
1559
2002
  type: Output
2003
+ }], RetryMessage: [{
2004
+ type: Output
1560
2005
  }], retryMessage: [{
1561
2006
  type: Output
2007
+ }], TestFeedbackMessage: [{
2008
+ type: Output
1562
2009
  }], testFeedbackMessage: [{
1563
2010
  type: Output
2011
+ }], ArtifactClicked: [{
2012
+ type: Output
1564
2013
  }], artifactClicked: [{
1565
2014
  type: Output
2015
+ }], ReplyInThread: [{
2016
+ type: Output
1566
2017
  }], replyInThread: [{
1567
2018
  type: Output
2019
+ }], ViewThread: [{
2020
+ type: Output
1568
2021
  }], viewThread: [{
1569
2022
  type: Output
2023
+ }], MessageEdited: [{
2024
+ type: Output
1570
2025
  }], messageEdited: [{
1571
2026
  type: Output
2027
+ }], OpenEntityRecord: [{
2028
+ type: Output
1572
2029
  }], openEntityRecord: [{
1573
2030
  type: Output
2031
+ }], SuggestedResponseSelected: [{
2032
+ type: Output
1574
2033
  }], suggestedResponseSelected: [{
1575
2034
  type: Output
2035
+ }], AttachmentClicked: [{
2036
+ type: Output
1576
2037
  }], attachmentClicked: [{
1577
2038
  type: Output
2039
+ }], DiagnosticRequested: [{
2040
+ type: Output
1578
2041
  }], diagnosticRequested: [{
1579
2042
  type: Output
2043
+ }], MessagePinToggled: [{
2044
+ type: Output
1580
2045
  }], messagePinToggled: [{
1581
2046
  type: Output
2047
+ }], LivenessCheckRequested: [{
2048
+ type: Output
2049
+ }], RealtimeSessionOpenRequested: [{
2050
+ type: Output
1582
2051
  }], realtimeSessionOpenRequested: [{
1583
2052
  type: Output
2053
+ }], BeforeResponseFormSubmitted: [{
2054
+ type: Output
1584
2055
  }], beforeResponseFormSubmitted: [{
1585
2056
  type: Output
2057
+ }], AfterResponseFormSubmitted: [{
2058
+ type: Output
1586
2059
  }], afterResponseFormSubmitted: [{
1587
2060
  type: Output
1588
2061
  }], OlderRequested: [{
1589
2062
  type: Output
1590
2063
  }], DateJumpRequested: [{
1591
2064
  type: Output
1592
- }], messageContainerRef: [{
2065
+ }], MessageContainerRef: [{
1593
2066
  type: ViewChild,
1594
2067
  args: ['messageContainer', { read: ViewContainerRef }]
1595
- }], scrollContainer: [{
2068
+ }], ScrollContainer: [{
1596
2069
  type: ViewChild,
1597
2070
  args: ['scrollContainer']
1598
- }], olderSentinel: [{
2071
+ }], OlderSentinel: [{
1599
2072
  type: ViewChild,
1600
2073
  args: ['olderSentinel']
1601
2074
  }], spacerTemplate: [{
1602
2075
  type: ViewChild,
1603
2076
  args: ['spacerTemplate']
2077
+ }], MessagesUpdate: [{
2078
+ type: Input
1604
2079
  }], messagesUpdate: [{
1605
2080
  type: Input
1606
2081
  }] }); })();