@memberjunction/ng-conversations 6.2.0-edge.3 → 6.2.0-edge.5

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 (318) hide show
  1. package/README.md +33 -7
  2. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  3. package/dist/lib/components/collection/collection-view.component.js +1 -0
  4. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  5. package/dist/lib/components/composer/ai-composer.component.d.ts +14 -2
  6. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  7. package/dist/lib/components/composer/ai-composer.component.js +35 -4
  8. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  9. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +1 -1
  10. package/dist/lib/components/conversation/conversation-agent-picker.component.js +3 -3
  11. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  12. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +651 -53
  13. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  14. package/dist/lib/components/conversation/conversation-chat-area.component.js +3002 -661
  15. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  16. package/dist/lib/components/conversation/forks-popover.component.d.ts +37 -0
  17. package/dist/lib/components/conversation/forks-popover.component.d.ts.map +1 -0
  18. package/dist/lib/components/conversation/forks-popover.component.js +164 -0
  19. package/dist/lib/components/conversation/forks-popover.component.js.map +1 -0
  20. package/dist/lib/components/export/export-modal.component.d.ts +7 -2
  21. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  22. package/dist/lib/components/export/export-modal.component.js +16 -3
  23. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  24. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  25. package/dist/lib/components/message/conversation-message-rating.component.js +11 -9
  26. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  27. package/dist/lib/components/message/message-input.component.d.ts +96 -11
  28. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  29. package/dist/lib/components/message/message-input.component.js +253 -112
  30. package/dist/lib/components/message/message-input.component.js.map +1 -1
  31. package/dist/lib/components/message/message-item.component.d.ts +304 -16
  32. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  33. package/dist/lib/components/message/message-item.component.js +2029 -363
  34. package/dist/lib/components/message/message-item.component.js.map +1 -1
  35. package/dist/lib/components/message/message-list.component.d.ts +101 -22
  36. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  37. package/dist/lib/components/message/message-list.component.js +326 -55
  38. package/dist/lib/components/message/message-list.component.js.map +1 -1
  39. package/dist/lib/components/realtime/avatar/realtime-avatar-channel.d.ts +34 -0
  40. package/dist/lib/components/realtime/avatar/realtime-avatar-channel.d.ts.map +1 -0
  41. package/dist/lib/components/realtime/avatar/realtime-avatar-channel.js +75 -0
  42. package/dist/lib/components/realtime/avatar/realtime-avatar-channel.js.map +1 -0
  43. package/dist/lib/components/realtime/avatar/realtime-avatar-surface.component.d.ts +80 -0
  44. package/dist/lib/components/realtime/avatar/realtime-avatar-surface.component.d.ts.map +1 -0
  45. package/dist/lib/components/realtime/avatar/realtime-avatar-surface.component.js +202 -0
  46. package/dist/lib/components/realtime/avatar/realtime-avatar-surface.component.js.map +1 -0
  47. package/dist/lib/components/realtime/capture/realtime-camera-check-card.component.d.ts +45 -0
  48. package/dist/lib/components/realtime/capture/realtime-camera-check-card.component.d.ts.map +1 -0
  49. package/dist/lib/components/realtime/capture/realtime-camera-check-card.component.js +123 -0
  50. package/dist/lib/components/realtime/capture/realtime-camera-check-card.component.js.map +1 -0
  51. package/dist/lib/components/realtime/capture/realtime-capture-channel.d.ts +90 -0
  52. package/dist/lib/components/realtime/capture/realtime-capture-channel.d.ts.map +1 -0
  53. package/dist/lib/components/realtime/capture/realtime-capture-channel.js +223 -0
  54. package/dist/lib/components/realtime/capture/realtime-capture-channel.js.map +1 -0
  55. package/dist/lib/components/realtime/capture/realtime-capture-model.d.ts +98 -0
  56. package/dist/lib/components/realtime/capture/realtime-capture-model.d.ts.map +1 -0
  57. package/dist/lib/components/realtime/capture/realtime-capture-model.js +161 -0
  58. package/dist/lib/components/realtime/capture/realtime-capture-model.js.map +1 -0
  59. package/dist/lib/components/realtime/capture/realtime-capture-surface.component.d.ts +48 -0
  60. package/dist/lib/components/realtime/capture/realtime-capture-surface.component.d.ts.map +1 -0
  61. package/dist/lib/components/realtime/capture/realtime-capture-surface.component.js +205 -0
  62. package/dist/lib/components/realtime/capture/realtime-capture-surface.component.js.map +1 -0
  63. package/dist/lib/components/realtime/channels/client-context-channel.d.ts +19 -2
  64. package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -1
  65. package/dist/lib/components/realtime/channels/client-context-channel.js +83 -9
  66. package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -1
  67. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts +30 -9
  68. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.d.ts.map +1 -1
  69. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js +78 -14
  70. package/dist/lib/components/realtime/channels/realtime-channel-pane.component.js.map +1 -1
  71. package/dist/lib/components/realtime/identity-verification/identity-verification-channel.d.ts +71 -0
  72. package/dist/lib/components/realtime/identity-verification/identity-verification-channel.d.ts.map +1 -0
  73. package/dist/lib/components/realtime/identity-verification/identity-verification-channel.js +259 -0
  74. package/dist/lib/components/realtime/identity-verification/identity-verification-channel.js.map +1 -0
  75. package/dist/lib/components/realtime/identity-verification/identity-verification-model.d.ts +129 -0
  76. package/dist/lib/components/realtime/identity-verification/identity-verification-model.d.ts.map +1 -0
  77. package/dist/lib/components/realtime/identity-verification/identity-verification-model.js +373 -0
  78. package/dist/lib/components/realtime/identity-verification/identity-verification-model.js.map +1 -0
  79. package/dist/lib/components/realtime/identity-verification/identity-verification-surface.component.d.ts +77 -0
  80. package/dist/lib/components/realtime/identity-verification/identity-verification-surface.component.d.ts.map +1 -0
  81. package/dist/lib/components/realtime/identity-verification/identity-verification-surface.component.js +420 -0
  82. package/dist/lib/components/realtime/identity-verification/identity-verification-surface.component.js.map +1 -0
  83. package/dist/lib/components/realtime/interactive-component/component-contract.d.ts +83 -0
  84. package/dist/lib/components/realtime/interactive-component/component-contract.d.ts.map +1 -0
  85. package/dist/lib/components/realtime/interactive-component/component-contract.js +292 -0
  86. package/dist/lib/components/realtime/interactive-component/component-contract.js.map +1 -0
  87. package/dist/lib/components/realtime/interactive-component/component-data-state.d.ts +39 -0
  88. package/dist/lib/components/realtime/interactive-component/component-data-state.d.ts.map +1 -0
  89. package/dist/lib/components/realtime/interactive-component/component-data-state.js +152 -0
  90. package/dist/lib/components/realtime/interactive-component/component-data-state.js.map +1 -0
  91. package/dist/lib/components/realtime/interactive-component/component-instance-engine.d.ts +109 -0
  92. package/dist/lib/components/realtime/interactive-component/component-instance-engine.d.ts.map +1 -0
  93. package/dist/lib/components/realtime/interactive-component/component-instance-engine.js +146 -0
  94. package/dist/lib/components/realtime/interactive-component/component-instance-engine.js.map +1 -0
  95. package/dist/lib/components/realtime/interactive-component/component-spec-content.d.ts +19 -0
  96. package/dist/lib/components/realtime/interactive-component/component-spec-content.d.ts.map +1 -0
  97. package/dist/lib/components/realtime/interactive-component/component-spec-content.js +39 -0
  98. package/dist/lib/components/realtime/interactive-component/component-spec-content.js.map +1 -0
  99. package/dist/lib/components/realtime/interactive-component/interactive-component-channel.d.ts +183 -0
  100. package/dist/lib/components/realtime/interactive-component/interactive-component-channel.d.ts.map +1 -0
  101. package/dist/lib/components/realtime/interactive-component/interactive-component-channel.js +761 -0
  102. package/dist/lib/components/realtime/interactive-component/interactive-component-channel.js.map +1 -0
  103. package/dist/lib/components/realtime/interactive-component/interactive-component-config.d.ts +25 -0
  104. package/dist/lib/components/realtime/interactive-component/interactive-component-config.d.ts.map +1 -0
  105. package/dist/lib/components/realtime/interactive-component/interactive-component-config.js +57 -0
  106. package/dist/lib/components/realtime/interactive-component/interactive-component-config.js.map +1 -0
  107. package/dist/lib/components/realtime/interactive-component/interactive-component-host.component.d.ts +40 -0
  108. package/dist/lib/components/realtime/interactive-component/interactive-component-host.component.d.ts.map +1 -0
  109. package/dist/lib/components/realtime/interactive-component/interactive-component-host.component.js +97 -0
  110. package/dist/lib/components/realtime/interactive-component/interactive-component-host.component.js.map +1 -0
  111. package/dist/lib/components/realtime/interactive-component/interactive-component-types.d.ts +144 -0
  112. package/dist/lib/components/realtime/interactive-component/interactive-component-types.d.ts.map +1 -0
  113. package/dist/lib/components/realtime/interactive-component/interactive-component-types.js +57 -0
  114. package/dist/lib/components/realtime/interactive-component/interactive-component-types.js.map +1 -0
  115. package/dist/lib/components/realtime/interactive-component/react-component-handle.d.ts +36 -0
  116. package/dist/lib/components/realtime/interactive-component/react-component-handle.d.ts.map +1 -0
  117. package/dist/lib/components/realtime/interactive-component/react-component-handle.js +55 -0
  118. package/dist/lib/components/realtime/interactive-component/react-component-handle.js.map +1 -0
  119. package/dist/lib/components/realtime/interactive-component/realtime-interactive-component-surface.component.d.ts +55 -0
  120. package/dist/lib/components/realtime/interactive-component/realtime-interactive-component-surface.component.d.ts.map +1 -0
  121. package/dist/lib/components/realtime/interactive-component/realtime-interactive-component-surface.component.js +210 -0
  122. package/dist/lib/components/realtime/interactive-component/realtime-interactive-component-surface.component.js.map +1 -0
  123. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.d.ts +32 -0
  124. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.d.ts.map +1 -0
  125. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js +90 -0
  126. package/dist/lib/components/realtime/interactive-component/run-view-component-artifact-source.js.map +1 -0
  127. package/dist/lib/components/realtime/media/media-channel.d.ts +7 -0
  128. package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -1
  129. package/dist/lib/components/realtime/media/media-channel.js +28 -1
  130. package/dist/lib/components/realtime/media/media-channel.js.map +1 -1
  131. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +8 -1
  132. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
  133. package/dist/lib/components/realtime/realtime-agent-banner.component.js +89 -71
  134. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
  135. package/dist/lib/components/realtime/realtime-agent-orb.component.d.ts +21 -0
  136. package/dist/lib/components/realtime/realtime-agent-orb.component.d.ts.map +1 -0
  137. package/dist/lib/components/realtime/realtime-agent-orb.component.js +49 -0
  138. package/dist/lib/components/realtime/realtime-agent-orb.component.js.map +1 -0
  139. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +44 -11
  140. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
  141. package/dist/lib/components/realtime/realtime-agent-picker.component.js +162 -50
  142. package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
  143. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +8 -2
  144. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
  145. package/dist/lib/components/realtime/realtime-audio-visuals.js +14 -18
  146. package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
  147. package/dist/lib/components/realtime/realtime-composer.component.d.ts +42 -2
  148. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
  149. package/dist/lib/components/realtime/realtime-composer.component.js +137 -102
  150. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
  151. package/dist/lib/components/realtime/realtime-perception-chip.component.d.ts +71 -0
  152. package/dist/lib/components/realtime/realtime-perception-chip.component.d.ts.map +1 -0
  153. package/dist/lib/components/realtime/realtime-perception-chip.component.js +221 -0
  154. package/dist/lib/components/realtime/realtime-perception-chip.component.js.map +1 -0
  155. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +264 -22
  156. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
  157. package/dist/lib/components/realtime/realtime-session-overlay.component.js +851 -135
  158. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  159. package/dist/lib/components/realtime/realtime-surface-placement-prefs.d.ts +14 -0
  160. package/dist/lib/components/realtime/realtime-surface-placement-prefs.d.ts.map +1 -0
  161. package/dist/lib/components/realtime/realtime-surface-placement-prefs.js +14 -0
  162. package/dist/lib/components/realtime/realtime-surface-placement-prefs.js.map +1 -0
  163. package/dist/lib/components/realtime/realtime-surface-stage.model.d.ts +74 -0
  164. package/dist/lib/components/realtime/realtime-surface-stage.model.d.ts.map +1 -0
  165. package/dist/lib/components/realtime/realtime-surface-stage.model.js +171 -0
  166. package/dist/lib/components/realtime/realtime-surface-stage.model.js.map +1 -0
  167. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +71 -13
  168. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
  169. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +232 -73
  170. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  171. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +5 -0
  172. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
  173. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +8 -0
  174. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  175. package/dist/lib/components/realtime/realtime-ui-config.d.ts +12 -2
  176. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  177. package/dist/lib/components/realtime/realtime-ui-config.js +5 -1
  178. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  179. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts +10 -1
  180. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
  181. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +42 -2
  182. package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
  183. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts +20 -3
  184. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts.map +1 -1
  185. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js +44 -10
  186. package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js.map +1 -1
  187. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +28 -44
  188. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  189. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +76 -162
  190. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  191. package/dist/lib/components/search/search-panel.component.d.ts +2 -0
  192. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  193. package/dist/lib/components/search/search-panel.component.js +25 -12
  194. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  195. package/dist/lib/components/sidebar/routines-section.component.js +1 -1
  196. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  197. package/dist/lib/components/task/tasks-full-view.component.d.ts +152 -31
  198. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  199. package/dist/lib/components/task/tasks-full-view.component.js +2227 -214
  200. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  201. package/dist/lib/components/tasks/tasks-dropdown.component.js +4 -4
  202. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  203. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +33 -32
  204. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  205. package/dist/lib/components/workspace/conversation-workspace.component.js +72 -88
  206. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  207. package/dist/lib/conversations.module.d.ts +30 -29
  208. package/dist/lib/conversations.module.d.ts.map +1 -1
  209. package/dist/lib/conversations.module.js +27 -5
  210. package/dist/lib/conversations.module.js.map +1 -1
  211. package/dist/lib/events/chat-events.d.ts +25 -0
  212. package/dist/lib/events/chat-events.d.ts.map +1 -1
  213. package/dist/lib/events/chat-events.js +36 -0
  214. package/dist/lib/events/chat-events.js.map +1 -1
  215. package/dist/lib/models/agent-turn.model.d.ts +5 -0
  216. package/dist/lib/models/agent-turn.model.d.ts.map +1 -1
  217. package/dist/lib/models/agent-turn.model.js.map +1 -1
  218. package/dist/lib/services/agent-state.service.d.ts +34 -8
  219. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  220. package/dist/lib/services/agent-state.service.js +90 -37
  221. package/dist/lib/services/agent-state.service.js.map +1 -1
  222. package/dist/lib/services/artifact-state.service.d.ts +0 -9
  223. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  224. package/dist/lib/services/artifact-state.service.js +1 -32
  225. package/dist/lib/services/artifact-state.service.js.map +1 -1
  226. package/dist/lib/services/browser-realtime-media-host.d.ts +19 -7
  227. package/dist/lib/services/browser-realtime-media-host.d.ts.map +1 -1
  228. package/dist/lib/services/browser-realtime-media-host.js +21 -72
  229. package/dist/lib/services/browser-realtime-media-host.js.map +1 -1
  230. package/dist/lib/services/conversation-agent.service.d.ts +48 -16
  231. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  232. package/dist/lib/services/conversation-agent.service.js +110 -35
  233. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  234. package/dist/lib/services/conversation-detail-window.store.d.ts +22 -4
  235. package/dist/lib/services/conversation-detail-window.store.d.ts.map +1 -1
  236. package/dist/lib/services/conversation-detail-window.store.js +50 -9
  237. package/dist/lib/services/conversation-detail-window.store.js.map +1 -1
  238. package/dist/lib/services/conversation-naming.d.ts +72 -22
  239. package/dist/lib/services/conversation-naming.d.ts.map +1 -1
  240. package/dist/lib/services/conversation-naming.js +93 -12
  241. package/dist/lib/services/conversation-naming.js.map +1 -1
  242. package/dist/lib/services/conversation-tasks-filter.d.ts +15 -0
  243. package/dist/lib/services/conversation-tasks-filter.d.ts.map +1 -0
  244. package/dist/lib/services/conversation-tasks-filter.js +69 -0
  245. package/dist/lib/services/conversation-tasks-filter.js.map +1 -0
  246. package/dist/lib/services/data-cache.service.d.ts +13 -5
  247. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  248. package/dist/lib/services/data-cache.service.js +39 -19
  249. package/dist/lib/services/data-cache.service.js.map +1 -1
  250. package/dist/lib/services/export.service.d.ts +26 -9
  251. package/dist/lib/services/export.service.d.ts.map +1 -1
  252. package/dist/lib/services/export.service.js +61 -18
  253. package/dist/lib/services/export.service.js.map +1 -1
  254. package/dist/lib/services/realtime-audio-recorder.d.ts +115 -79
  255. package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -1
  256. package/dist/lib/services/realtime-audio-recorder.js +273 -186
  257. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  258. package/dist/lib/services/realtime-pairing.d.ts +10 -5
  259. package/dist/lib/services/realtime-pairing.d.ts.map +1 -1
  260. package/dist/lib/services/realtime-pairing.js +15 -6
  261. package/dist/lib/services/realtime-pairing.js.map +1 -1
  262. package/dist/lib/services/realtime-session.service.d.ts +31 -2
  263. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  264. package/dist/lib/services/realtime-session.service.js +34 -2
  265. package/dist/lib/services/realtime-session.service.js.map +1 -1
  266. package/dist/lib/services/recording/libopus-wasm-binary.d.ts +3 -0
  267. package/dist/lib/services/recording/libopus-wasm-binary.d.ts.map +1 -0
  268. package/dist/lib/services/recording/libopus-wasm-binary.js +489 -0
  269. package/dist/lib/services/recording/libopus-wasm-binary.js.map +1 -0
  270. package/dist/lib/services/recording/libopus-worker-source.d.ts +48 -0
  271. package/dist/lib/services/recording/libopus-worker-source.d.ts.map +1 -0
  272. package/dist/lib/services/recording/libopus-worker-source.js +170 -0
  273. package/dist/lib/services/recording/libopus-worker-source.js.map +1 -0
  274. package/dist/lib/services/recording/linear-resampler.d.ts +45 -0
  275. package/dist/lib/services/recording/linear-resampler.d.ts.map +1 -0
  276. package/dist/lib/services/recording/linear-resampler.js +85 -0
  277. package/dist/lib/services/recording/linear-resampler.js.map +1 -0
  278. package/dist/lib/services/recording/opus-packet-encoder.d.ts +50 -0
  279. package/dist/lib/services/recording/opus-packet-encoder.d.ts.map +1 -0
  280. package/dist/lib/services/recording/opus-packet-encoder.js +41 -0
  281. package/dist/lib/services/recording/opus-packet-encoder.js.map +1 -0
  282. package/dist/lib/services/recording/wasm-opus-encoder.d.ts +86 -0
  283. package/dist/lib/services/recording/wasm-opus-encoder.d.ts.map +1 -0
  284. package/dist/lib/services/recording/wasm-opus-encoder.js +232 -0
  285. package/dist/lib/services/recording/wasm-opus-encoder.js.map +1 -0
  286. package/dist/lib/services/recording/webcodecs-opus-encoder.d.ts +39 -0
  287. package/dist/lib/services/recording/webcodecs-opus-encoder.d.ts.map +1 -0
  288. package/dist/lib/services/recording/webcodecs-opus-encoder.js +101 -0
  289. package/dist/lib/services/recording/webcodecs-opus-encoder.js.map +1 -0
  290. package/dist/lib/services/search.service.d.ts +7 -2
  291. package/dist/lib/services/search.service.d.ts.map +1 -1
  292. package/dist/lib/services/search.service.js +16 -20
  293. package/dist/lib/services/search.service.js.map +1 -1
  294. package/dist/lib/utils/conversation-branching.d.ts +4 -0
  295. package/dist/lib/utils/conversation-branching.d.ts.map +1 -0
  296. package/dist/lib/utils/conversation-branching.js +5 -0
  297. package/dist/lib/utils/conversation-branching.js.map +1 -0
  298. package/dist/lib/utils/conversation-forks.d.ts +315 -0
  299. package/dist/lib/utils/conversation-forks.d.ts.map +1 -0
  300. package/dist/lib/utils/conversation-forks.js +456 -0
  301. package/dist/lib/utils/conversation-forks.js.map +1 -0
  302. package/dist/lib/utils/distinct-artifacts.d.ts +9 -3
  303. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  304. package/dist/lib/utils/distinct-artifacts.js +24 -5
  305. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  306. package/dist/public-api.d.ts +23 -1
  307. package/dist/public-api.d.ts.map +1 -1
  308. package/dist/public-api.js +30 -1
  309. package/dist/public-api.js.map +1 -1
  310. package/package.json +37 -33
  311. package/dist/lib/components/thread/thread-panel.component.d.ts +0 -126
  312. package/dist/lib/components/thread/thread-panel.component.d.ts.map +0 -1
  313. package/dist/lib/components/thread/thread-panel.component.js +0 -440
  314. package/dist/lib/components/thread/thread-panel.component.js.map +0 -1
  315. package/dist/lib/services/realtime-pcm-wav.d.ts +0 -79
  316. package/dist/lib/services/realtime-pcm-wav.d.ts.map +0 -1
  317. package/dist/lib/services/realtime-pcm-wav.js +0 -213
  318. package/dist/lib/services/realtime-pcm-wav.js.map +0 -1
@@ -1,14 +1,14 @@
1
1
  import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, TemplateRef, AfterViewChecked } from '@angular/core';
2
2
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
3
  import { UserInfo, CompositeKey, DataSnapshot } from '@memberjunction/core';
4
- import { MJConversationEntity, MJConversationDetailEntity, MJAIAgentRunEntity, MJArtifactEntity, MJTaskEntity, RatingJSON } from '@memberjunction/core-entities';
5
- import { MJAIAgentRunEntityExtended } from "@memberjunction/ai-core-plus";
4
+ import { MJConversationEntity, MJConversationDetailEntity, MJAIAgentRunEntity, MJArtifactEntity, MJTaskEntity, RatingJSON, type ConversationScope, type ForkKind, type ForkSummary } from '@memberjunction/core-entities';
5
+ import { MJAIAgentRunEntityExtended, OpenResourceCommand, type TaskGraphSpec } from "@memberjunction/ai-core-plus";
6
6
  import { UICommandHandlerService } from '../../services/ui-command-handler.service';
7
7
  import { AgentStateService } from '../../services/agent-state.service';
8
8
  import { ConversationLivenessDomService } from '../../services/conversation-liveness-dom.service';
9
9
  import { ConversationAgentService } from '../../services/conversation-agent.service';
10
10
  import { ActiveTasksService } from '../../services/active-tasks.service';
11
- import { PendingAttachment } from '@memberjunction/ng-composer';
11
+ import { PendingAttachment, SendSlotMode } from '@memberjunction/ng-composer';
12
12
  import { ArtifactPermissionService } from '../../services/artifact-permission.service';
13
13
  import { ConversationAttachmentService } from '../../services/conversation-attachment.service';
14
14
  import { MJResourcePermissionShareAdapter, ResourceShareContext } from '@memberjunction/ng-resource-permissions';
@@ -29,9 +29,10 @@ import type { ExportBranding } from '../../services/export.service';
29
29
  import { RealtimeNavigateRequest, RealtimeStartLiveRequest } from '../realtime/realtime-session-overlay.component';
30
30
  import { RealtimeSessionTimelineMeta } from '../../utils/realtime-session-timeline';
31
31
  import { type DateJumpPeriod } from '../../utils/date-jump';
32
+ import { type ConversationOpenView, type ForkBreadcrumb, type ForkHeaderPath, type ForkChipOpenRequest, type ForkViewLayout, type LatestTurn, type MessageForkChip } from '../../utils/conversation-forks';
32
33
  import { type MJChatSlotName } from '../../directives/chat-slot.directive';
33
34
  import type { MJChatAgentPresenceState } from '../slots/slot-interfaces';
34
- import { BeforeAgentTurnEventArgs, AfterAgentTurnEventArgs, BeforeToolInvokedEventArgs, AfterToolInvokedEventArgs, BeforeResponseFormSubmittedEventArgs, AfterResponseFormSubmittedEventArgs, SessionStartedEventArgs, SessionChannelStateChangedEventArgs, SessionEndedEventArgs } from '../../events/chat-events';
35
+ import { BeforeAgentTurnEventArgs, AfterAgentTurnEventArgs, BeforeToolInvokedEventArgs, AfterToolInvokedEventArgs, BeforeResponseFormSubmittedEventArgs, AfterResponseFormSubmittedEventArgs, BeforeStopClickedEventArgs, AfterStopClickedEventArgs, SessionStartedEventArgs, SessionChannelStateChangedEventArgs, SessionEndedEventArgs } from '../../events/chat-events';
35
36
  import * as i0 from "@angular/core";
36
37
  /**
37
38
  * Configuration for the persona/character rendering in the `agentPresence` slot.
@@ -97,11 +98,6 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
97
98
  set conversation(value: MJConversationEntity | null);
98
99
  /** @deprecated Use {@link Conversation}. */
99
100
  get conversation(): MJConversationEntity | null;
100
- ThreadId: string | null;
101
- /** @deprecated Use {@link ThreadId}. */
102
- set threadId(value: string | null);
103
- /** @deprecated Use {@link ThreadId}. */
104
- get threadId(): string | null;
105
101
  /**
106
102
  * When true, render the normal message-list + message-input layout even
107
103
  * before a conversation exists, instead of the centered empty-state
@@ -180,6 +176,24 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
180
176
  set allowRealtime(value: ConversationChatAreaComponent['AllowRealtime']);
181
177
  /** @deprecated Use {@link AllowRealtime}. */
182
178
  get allowRealtime(): ConversationChatAreaComponent['AllowRealtime'];
179
+ /**
180
+ * Host-level cap for starting conversation forks: Fork from here, and Edit or
181
+ * Regenerate as a fork. Defaults true (current behavior). Hosts with no forking
182
+ * experience set false; Edit and Regenerate then change the latest turn in place,
183
+ * as for a person without the `Conversations: Fork` authorization. UI only: deny
184
+ * that authorization to a role to stop the server creating forks as well.
185
+ */
186
+ AllowForking: boolean;
187
+ /**
188
+ * Host-level cap for stopping and continuing agent runs: the composer's Stop and Stop all, the
189
+ * Stop pill on an in-progress reply, the Continue button on a stopped reply, and the "Continue,
190
+ * or tell {agent} what to do differently" placeholder. Defaults true (current behavior). Hosts
191
+ * with no stop experience (a review surface, a space whose runs are managed elsewhere) set false
192
+ * without making the conversation read-only. UI only: a run stopped from another client still
193
+ * shows as stopped, and the next message still continues it. The composer's status line
194
+ * ({@link StatusText}) is not part of the cap: it reports that a reply is in flight either way.
195
+ */
196
+ AllowStopRun: boolean;
183
197
  /**
184
198
  * Whether the message list renders its built-in "No messages yet" filler
185
199
  * when a conversation has zero messages. Defaults true. Hosts that render
@@ -719,6 +733,16 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
719
733
  * initialise in order, and the other way round this captures undefined.
720
734
  */
721
735
  afterResponseFormSubmitted: EventEmitter<AfterResponseFormSubmittedEventArgs>;
736
+ /**
737
+ * Fired BEFORE an in-progress agent run is stopped from its reply. Cancelable: set
738
+ * `event.Cancel = true` to keep the run going; `AfterStopClicked` then does not fire.
739
+ */
740
+ BeforeStopClicked: EventEmitter<BeforeStopClickedEventArgs>;
741
+ /**
742
+ * Fired AFTER a stop was attempted, with whether the run's row was marked Cancelled.
743
+ * Not fired when `BeforeStopClicked` was canceled.
744
+ */
745
+ AfterStopClicked: EventEmitter<AfterStopClickedEventArgs>;
722
746
  /** Informational. */
723
747
  SessionStarted: EventEmitter<SessionStartedEventArgs>;
724
748
  /**
@@ -852,24 +876,6 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
852
876
  pendingMessage?: string;
853
877
  pendingAttachments?: PendingAttachment[];
854
878
  }>;
855
- ThreadOpened: EventEmitter<string>;
856
- /**
857
- * @deprecated Use {@link ThreadOpened}.
858
- *
859
- * The same emitter under the old binding name, so a template still binding
860
- * (threadOpened) keeps working. Must stay AFTER ThreadOpened: class fields
861
- * initialise in order, and the other way round this captures undefined.
862
- */
863
- threadOpened: EventEmitter<string>;
864
- ThreadClosed: EventEmitter<void>;
865
- /**
866
- * @deprecated Use {@link ThreadClosed}.
867
- *
868
- * The same emitter under the old binding name, so a template still binding
869
- * (threadClosed) keeps working. Must stay AFTER ThreadClosed: class fields
870
- * initialise in order, and the other way round this captures undefined.
871
- */
872
- threadClosed: EventEmitter<void>;
873
879
  PendingArtifactConsumed: EventEmitter<void>;
874
880
  /**
875
881
  * @deprecated Use {@link PendingArtifactConsumed}.
@@ -903,7 +909,13 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
903
909
  text: string;
904
910
  attachments: PendingAttachment[];
905
911
  }>;
906
- private scrollContainer;
912
+ private scrollContainer?;
913
+ /** The transcript scroller; watched so the scroll-to-bottom arrow follows content that grows or shrinks without a scroll. */
914
+ private set scrollContainerRef(value);
915
+ /** Re-checks the scroll state when the transcript or its content changes size; null when nothing is watched. */
916
+ private scrollResizeObserver;
917
+ /** Watches `container` and its content for size changes (a new view, removed rows), which fire no scroll event. */
918
+ private watchScrollContent;
907
919
  private messageInputComponents;
908
920
  /**
909
921
  * Prefill the composer with draft text (NOT sent — unlike pendingMessage) and focus
@@ -1028,8 +1040,20 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1028
1040
  /** Gap kept between the pane's top edge and the turn's first message. */
1029
1041
  private static readonly TURN_TOP_GAP_PX;
1030
1042
  private lastLoadedConversationId;
1043
+ /**
1044
+ * The conversation whose artifacts are currently held in {@link ArtifactsByDetailId}.
1045
+ * Unlike {@link lastLoadedConversationId} (which {@link resetComponentState} zeroes on every
1046
+ * message send / agent response to force {@link loadPeripheralData} to re-run), this stays set
1047
+ * to the owning conversation until {@link ArtifactsByDetailId} is actually cleared or rebuilt
1048
+ * for another conversation.
1049
+ */
1050
+ private artifactMapConversationId;
1031
1051
  private currentlyLoadingConversationId;
1032
1052
  private conversationLoadToken;
1053
+ /** The conversation whose load has ended; null while a load runs and before the first one. */
1054
+ private readyConversationId;
1055
+ /** Emits each time a conversation load ends. */
1056
+ private readonly conversationLoadEnded$;
1033
1057
  /** The reconcile passes in progress, shared by every caller that arrives while they run. */
1034
1058
  private reconcileInFlight;
1035
1059
  /** Reason for one more reconcile pass, requested while a pass was running. */
@@ -1115,6 +1139,10 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1115
1139
  /** @deprecated Use {@link ShowProjectSelector}. */
1116
1140
  set showProjectSelector(value: boolean);
1117
1141
  ShowArtifactPanel: boolean;
1142
+ SelectedTaskGraphPanel: {
1143
+ parentTaskId: string;
1144
+ workflowTitle: string;
1145
+ } | null;
1118
1146
  /** @deprecated Use {@link ShowArtifactPanel}. */
1119
1147
  get showArtifactPanel(): boolean;
1120
1148
  /** @deprecated Use {@link ShowArtifactPanel}. */
@@ -1256,7 +1284,56 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1256
1284
  * In-progress message IDs for streaming reconnection
1257
1285
  * Passed to message-input component to reconnect PubSub updates
1258
1286
  */
1259
- InProgressMessageIds: string[];
1287
+ get InProgressMessageIds(): string[];
1288
+ set InProgressMessageIds(value: string[]);
1289
+ private _inProgressMessageIds;
1290
+ /** Replies the person asked to stop that have not left In-Progress yet. */
1291
+ StoppingDetailIds: Set<string>;
1292
+ private _stopFallbackTimers;
1293
+ private _sendSlotTicker;
1294
+ /** The elapsed time of the in-flight reply, ticked once a second while one is in flight. */
1295
+ SendSlotElapsed: string | null;
1296
+ /** How many agent replies are in flight in the open view. */
1297
+ get InFlightCount(): number;
1298
+ /** What the composer's send slot is: Stop while replies are in flight and the viewer may stop them. */
1299
+ get SendSlotMode(): SendSlotMode;
1300
+ /** The count the slot shows: the in-flight replies, or none when the slot is Send. */
1301
+ get StopCount(): number;
1302
+ /** The slot's tooltip and accessible name: "Stop {agent}", or "Stop all N runs". */
1303
+ get StopLabel(): string;
1304
+ /**
1305
+ * The composer's status line: who is working, or what is being stopped. Null with nothing in
1306
+ * flight. It is information, not a control, so it shows whenever a reply is in flight, whether
1307
+ * or not the viewer may stop it (a read-only viewer, or a host with {@link AllowStopRun} off);
1308
+ * only the send slot is gated. The stopping text likewise reads the stopping state itself, not
1309
+ * the slot's mode.
1310
+ */
1311
+ get StatusText(): string | null;
1312
+ /** The elapsed time after the status line, for a single run that is working (not one being stopped). */
1313
+ get StatusElapsed(): string | null;
1314
+ /**
1315
+ * The composer's stop control. Every in-flight reply is stopped through the same path as the
1316
+ * per-reply pill: `BeforeStopClicked` first (a listener that cancels keeps that run going),
1317
+ * then {@link OnStopMessage}, which fires `AfterStopClicked` with the outcome. Each reply asked
1318
+ * to stop reads as stopping until it leaves In-Progress, or until the retry window passes,
1319
+ * when the slot offers Stop again and a toast says the stop did not take.
1320
+ */
1321
+ OnComposerStopClicked(): Promise<void>;
1322
+ /** The agent name of an in-flight reply: its run's agent, else the reply's, else the assistant name. */
1323
+ private agentNameFor;
1324
+ private inFlightAgentName;
1325
+ private isAnyStopping;
1326
+ private markStopping;
1327
+ private clearStopFallbackTimer;
1328
+ /**
1329
+ * Follows a change in the in-flight replies: a reply that left In-Progress is no longer
1330
+ * stopping, and the one-second elapsed ticker runs only while something is in flight.
1331
+ */
1332
+ private syncSendSlot;
1333
+ private updateSendSlotElapsed;
1334
+ private stopSendSlotTicker;
1335
+ /** `m:ss` (or `h:mm:ss`), the same shape as the reply's time pill. */
1336
+ static FormatElapsed(ms: number): string;
1260
1337
  /** @deprecated Use {@link InProgressMessageIds}. */
1261
1338
  get inProgressMessageIds(): string[];
1262
1339
  /** @deprecated Use {@link InProgressMessageIds}. */
@@ -1322,18 +1399,18 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1322
1399
  /** @deprecated Use {@link PinnedMessageCount}. */
1323
1400
  get pinnedMessageCount(): number;
1324
1401
  /**
1325
- * Opens/closes the pins panel, hydrating its rows on first open.
1402
+ * Opens/closes the pins panel, hydrating its rows on first open. Opening it closes the forks list.
1326
1403
  *
1327
1404
  * Lazy on purpose: the panel is closed by default, so loading pin entities during
1328
1405
  * conversation open costs every user for a panel most never open.
1329
1406
  */
1330
1407
  TogglePinsPanel(): Promise<void>;
1331
1408
  /**
1332
- * All currently pinned messages in the active conversation, newest pin first.
1409
+ * The pinned messages on the open view's path, newest pin first.
1333
1410
  *
1334
1411
  * Read from the window store's separate pin set, NOT filtered out of `messages` — a pin
1335
- * older than the loaded window would otherwise vanish from the panel. Loaded by its own
1336
- * `IsPinned=1` query in {@link loadMessages}, already ordered `Sequence DESC`.
1412
+ * older than the loaded window would otherwise vanish from the panel. Loaded by
1413
+ * {@link hydratePinnedMessages} when the pins panel first opens, already ordered `Sequence DESC`.
1337
1414
  *
1338
1415
  * This and the three getters around it are TEMPLATE-BOUND, so they run on every change
1339
1416
  * detection cycle. They read the store's cheap single-value accessors rather than
@@ -1469,6 +1546,103 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1469
1546
  private conversationManagerAgent;
1470
1547
  private engine;
1471
1548
  private windowStore;
1549
+ /**
1550
+ * This chat area's fork rows of the active conversation, loaded with the transcript. The scope of the
1551
+ * open view is built from them; no other chat area reads or changes them.
1552
+ */
1553
+ private branches;
1554
+ /** The conversation whose fork rows {@link branches} holds; null when none are loaded. */
1555
+ private branchRowsConversationId;
1556
+ /** The conversation and branch of the last Main fallback that {@link openViewScope} logged. */
1557
+ private scopeFallbackLogged;
1558
+ /** What this chat area shows of the active conversation: Main or one fork. Per instance, in memory only. */
1559
+ private openView;
1560
+ /**
1561
+ * The view the loaded rows belong to: the open view once its window is applied. While a view change
1562
+ * reloads, the rows on screen keep the layout of this view.
1563
+ */
1564
+ private windowView;
1565
+ /** True while a view change ends a voice session and reloads; other view changes are ignored meanwhile. */
1566
+ private viewChangeInFlight;
1567
+ /** True while a fork is being created and opened; other start actions are ignored meanwhile. */
1568
+ private forkStartInFlight;
1569
+ /** True while an in-place rerun hides a turn's answer and starts the agent again; other reruns are ignored meanwhile. */
1570
+ private inPlaceRerunInFlight;
1571
+ /** The in-place turn built for a window, with the inputs it was built from. */
1572
+ private inPlaceTurnCache;
1573
+ /** The draft whose fork a first send is creating, with that creation; a send in the same draft awaits it. */
1574
+ private draftForkStart;
1575
+ /** The fork a draft's first send created; the first user message sent into it names it ({@link nameForkFromFirstSend}). */
1576
+ private forkNamedByFirstSend;
1577
+ /** True while the header title (the conversation name in Main, the fork name in a fork) is edited. */
1578
+ IsRenamingTitle: boolean;
1579
+ /** The text of the title name field. */
1580
+ TitleRenameText: string;
1581
+ /** The title name field; focused when renaming starts. */
1582
+ private titleNameInput?;
1583
+ /** The rename button of the header title; focus goes back to it when the name field closes from the keyboard. */
1584
+ private titleRenameButton?;
1585
+ /** The breadcrumb built for a view, with the inputs it was built from. */
1586
+ private breadcrumbCache;
1587
+ /** Increments on every view reload; a reload whose token is no longer current stops. */
1588
+ private viewReloadToken;
1589
+ /**
1590
+ * The pins recorded before a view reload reset the store, with the conversation load they belong
1591
+ * to. A reload that replaces a running one in the same conversation load reuses them.
1592
+ */
1593
+ private pinsDuringViewReload;
1594
+ /** The fork summaries of the active conversation: chips, the fork header and the forks list read them. */
1595
+ ForkSummaries: ForkSummary[];
1596
+ /** True while the forks list is open. */
1597
+ ShowForksPopover: boolean;
1598
+ /** The id of this chat area's forks popover; the header Forks button points at it. */
1599
+ readonly ForksPopoverID: string;
1600
+ /** The header Forks button; focus goes back to it when the forks list closes. */
1601
+ private forksButton?;
1602
+ private forkSummaryRefreshTimer;
1603
+ /** Numbers each fork summary read, so an older read cannot overwrite a newer one. */
1604
+ private forkSummaryReadSequence;
1605
+ /** The number of the newest fork summary read whose result is shown. */
1606
+ private forkSummaryShownSequence;
1607
+ /**
1608
+ * The chip map built from {@link ForkSummaries} for a window view, with the summaries, the view, the
1609
+ * fork's first own row and the avatar map (and its version) it was built from.
1610
+ */
1611
+ private forkChipCache;
1612
+ /** Increments each time {@link UserAvatarMap} is filled, so the chip map is built again with the new avatars. */
1613
+ private userAvatarMapVersion;
1614
+ /** The loaded rows split for the window view, and the rows shown from that split. */
1615
+ private displayCache;
1616
+ /** The layout and composer hint of the rows shown, with the inputs they were built from. */
1617
+ private layoutCache;
1618
+ /** The open view; Main when none was set. */
1619
+ get OpenView(): ConversationOpenView;
1620
+ /** The branch whose path the open view reads; null is Main. */
1621
+ get OpenViewBranchId(): string | null;
1622
+ /** The branch a composer of `conversationId` writes to: the open view's for the active conversation, else Main. */
1623
+ TargetBranchIdFor(conversationId: string | null | undefined): string | null;
1624
+ /**
1625
+ * The scope of what this chat area shows of a conversation: the open view's path for the active
1626
+ * conversation, Main for any other. Built from this chat area's own fork rows. While the rows of
1627
+ * the open fork are not loaded yet, returns Main and logs once per conversation and branch.
1628
+ */
1629
+ private openViewScope;
1630
+ /** The open view's scope, passed to the artifact viewer; null with no conversation. */
1631
+ get ArtifactViewerScope(): ConversationScope | null;
1632
+ /** The open view's scope, passed to the export modal; null with no conversation. */
1633
+ get ExportScope(): ConversationScope | null;
1634
+ /**
1635
+ * Answers the active composer's "which branch does this new message go to": the open fork, or null
1636
+ * for Main. In a draft fork, creates the fork first and opens it; undefined (the send stops) when
1637
+ * that fails. Bound to the composer's ResolveTargetBranch input, so it is one stable function.
1638
+ */
1639
+ readonly ResolveComposerBranch: () => Promise<string | null | undefined>;
1640
+ private resolveComposerBranch;
1641
+ /**
1642
+ * Keeps the fork rows loaded for a conversation as this chat area's rows, so
1643
+ * {@link openViewScope} can build the scope of the open fork.
1644
+ */
1645
+ private setBranchRows;
1472
1646
  /**
1473
1647
  * Voice session service — exposed to the template so the realtime "call mode"
1474
1648
  * overlay can be hosted here (it fills this conversation panel in place while
@@ -1562,6 +1736,24 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1562
1736
  */
1563
1737
  private getActiveMessageInputComponent;
1564
1738
  private loadMessages;
1739
+ /**
1740
+ * Reads the store's loaded window into the transcript: messages, user avatars, attachment
1741
+ * support and in-progress message IDs.
1742
+ */
1743
+ private applyWindowSnapshot;
1744
+ /**
1745
+ * The conversation's fork rows. An empty list when they cannot be read, so the transcript
1746
+ * still loads.
1747
+ */
1748
+ private loadBranchesOrEmpty;
1749
+ /** The conversation's fork rows; null when they cannot be read. */
1750
+ private loadBranchesOrNull;
1751
+ /**
1752
+ * Loads the fork rows and keeps them, starts the fork summary read, then counts the pins
1753
+ * in the scope of the open view's path. Keeps and counts nothing when a newer conversation
1754
+ * load started.
1755
+ */
1756
+ private loadBranchesAndPinCount;
1565
1757
  /**
1566
1758
  * Reads only the PIN COUNT on conversation open.
1567
1759
  *
@@ -1584,6 +1776,11 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1584
1776
  * from the panel with no error at all.
1585
1777
  */
1586
1778
  private hydratePinnedMessages;
1779
+ /**
1780
+ * Reads the pin count in the scope of the open view's path and, when the pins panel's rows
1781
+ * are loaded, reads those rows again too. A read that throws is logged and changes nothing.
1782
+ */
1783
+ private reloadPinsForScope;
1587
1784
  /**
1588
1785
  * Reshapes one detail's artifacts into the UI's `LazyArtifactInfo` lists, splitting the
1589
1786
  * system-only ones out. Shared by the full rebuild and the incremental prepend so the two
@@ -1746,6 +1943,342 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1746
1943
  * Called when agent completion is detected to discover newly delegated agent messages.
1747
1944
  */
1748
1945
  private reloadMessagesForActiveConversation;
1946
+ /**
1947
+ * Shows `next` for the active conversation. Ends a voice session open for the conversation first (a
1948
+ * session keeps the path it started on), then reloads the window, fork rows, artifact viewer, agent
1949
+ * polling, peripherals and pins on the view's path (a draft reads its parent's path up to its
1950
+ * anchor). A view equal to the open one changes nothing. Ignored while another view change runs.
1951
+ * @returns true when `next` is shown; false when ignored, when there is no conversation, or when the reload failed.
1952
+ */
1953
+ private changeOpenView;
1954
+ /** Opens a fork of the active conversation in the full view. */
1955
+ OpenFork(branchId: string): Promise<boolean>;
1956
+ /** Shows Main of the active conversation. */
1957
+ BackToMain(): Promise<boolean>;
1958
+ /**
1959
+ * The fork the back button opens; null is Main. A fork's parent fork, or a draft's ParentBranchID
1960
+ * (the view it started from).
1961
+ */
1962
+ get BackForkId(): string | null;
1963
+ /** The label and aria-label of the back button: "Back to <parent fork>", or "Back to Main". */
1964
+ get BackLabel(): string;
1965
+ /** Goes up one level: opens the parent fork of the open fork or draft, else Main. */
1966
+ GoBack(): Promise<boolean>;
1967
+ /**
1968
+ * The breadcrumb of the header in a fork: the conversation, each ancestor fork, then the open fork ("New fork"
1969
+ * in a draft). Empty in Main. The same array until the view, the fork rows, the summaries or the
1970
+ * conversation name change.
1971
+ */
1972
+ get ForkBreadcrumbs(): ForkBreadcrumb[];
1973
+ /** The header path of the open fork or draft: the breadcrumb with the crumbs that collapse into an ellipsis. */
1974
+ get HeaderPath(): ForkHeaderPath;
1975
+ private headerPathCache;
1976
+ /** The path's ellipsis was chosen: opens the forks list, which shows the whole chain. */
1977
+ ShowWholePath(): void;
1978
+ /**
1979
+ * Escape in the header or the transcript of a fork view: closes the forks list when it is open, else goes
1980
+ * up one level ({@link GoBack}). Ignored when an inner control handled the key (the rename field, a
1981
+ * message editor, an open menu), in a text field, and in Main.
1982
+ */
1983
+ OnViewEscape(event: Event): void;
1984
+ /** A crumb was chosen: opens its fork, or Main for the conversation crumb. The last crumb opens nothing. */
1985
+ OpenCrumb(crumb: ForkBreadcrumb): Promise<boolean>;
1986
+ /** The fork rows this chat area knows: its loaded rows, then the rows of the fork summaries. */
1987
+ private knownForkRows;
1988
+ /** A fork's row among the loaded rows or the summaries; null when neither has it. */
1989
+ private knownForkRow;
1990
+ /** The display name of a fork: its summary's, else the default from its row, else "Fork". */
1991
+ private forkLabelOf;
1992
+ /** True when the open fork may be renamed: a saved fork (not a draft) of a conversation the person may write to. */
1993
+ get CanRenameFork(): boolean;
1994
+ /** True when the conversation may be renamed from the header: Main is open and the person may write to it. */
1995
+ get CanRenameConversation(): boolean;
1996
+ /** True when the header title may be renamed: the conversation in Main, the fork in a fork. */
1997
+ get CanRenameTitle(): boolean;
1998
+ /** The header title: the conversation name in Main, the open fork's display name in a fork or draft. */
1999
+ get HeaderTitle(): string;
2000
+ /** The label of the title rename button and name field. */
2001
+ get TitleRenameLabel(): string;
2002
+ /** Turns the header title into a text field holding its current name, and focuses it. */
2003
+ StartTitleRename(): void;
2004
+ /** Closes the title name field without saving (Escape) and puts focus back on the rename button. */
2005
+ CancelTitleRename(): void;
2006
+ /** Puts focus on the title rename button once the name field is gone, when the button is on the page. */
2007
+ private focusTitleRenameButton;
2008
+ /**
2009
+ * Saves the title name field (Enter, or leaving the field) to the conversation in Main or to the open
2010
+ * fork. With `restoreFocus` (Enter), focus goes back to the rename button.
2011
+ * @returns true when saved or unchanged; false when nothing was being renamed or the save failed.
2012
+ */
2013
+ SaveTitleRename(restoreFocus?: boolean): Promise<boolean>;
2014
+ /**
2015
+ * Saves the title field as the conversation's Name through the engine, then tells the host. A blank or
2016
+ * unchanged name saves nothing. Shows "Could not rename the conversation" when the save fails.
2017
+ */
2018
+ private saveConversationName;
2019
+ /**
2020
+ * Saves the title field as the fork's Name through the branch entity, then refreshes the fork summaries.
2021
+ * A blank name clears the Name so the default label shows; an unchanged name saves nothing. Shows
2022
+ * "Could not rename the fork" when the save fails.
2023
+ */
2024
+ private saveForkName;
2025
+ /**
2026
+ * Names a new Fork or Edit fork from its first message, in the background: runs the Name Conversation
2027
+ * prompt and saves the name only when the fork still has none, then refreshes the fork summaries. Off
2028
+ * when {@link AutoNameConversation} is false. Failures are logged; no notice.
2029
+ */
2030
+ private nameForkInBackground;
2031
+ /** Names the fork a draft's first send created from the first user message sent into it; once per fork. */
2032
+ private nameForkFromFirstSend;
2033
+ /**
2034
+ * Opens a new fork that replaces `message` (Fork from here): the full fork view with no own rows,
2035
+ * starting at the row before the message on its path (the same fork point as an edit). Nothing is
2036
+ * created until the first send. Ends a voice session of the conversation first, then puts the
2037
+ * message's text in the composer unless the composer holds unsent text.
2038
+ * @returns false for a message of another conversation, when the row before it cannot be found (after
2039
+ * a notice), or when the view change is ignored.
2040
+ */
2041
+ OpenDraftFork(message: MJConversationDetailEntity): Promise<boolean>;
2042
+ /** The loaded row at a fork point (its branch and Sequence); null when there is none or it is not loaded. */
2043
+ private loadedRowAt;
2044
+ /**
2045
+ * Puts `text` in the active composer, unless the composer holds unsent text or there is no text. When the
2046
+ * composer has not rendered yet after the view change, tries again shortly, while `stillOpen` holds.
2047
+ */
2048
+ private prefillComposer;
2049
+ /**
2050
+ * A chip was clicked: opens its fork. An original chip opens its view (a fork, or Main) positioned at
2051
+ * the replaced message, as a search hit does ({@link OpenMessage}).
2052
+ */
2053
+ OnForkOpenRequested(event: ForkChipOpenRequest): void;
2054
+ /** Opens or closes the forks list. Opening it closes the pinned messages panel. */
2055
+ ToggleForksPopover(): void;
2056
+ /** Closes the forks list and puts focus back on the header Forks button when it is on the page. */
2057
+ CloseForksPopover(): void;
2058
+ /** A row of the forks list was chosen: close the list and open that fork. */
2059
+ OnForkSelectedFromList(branchId: string): void;
2060
+ /**
2061
+ * Ends the voice session open for `conversationId`, if any, and waits for it. Shows a notice when it
2062
+ * ended. When ending fails, logs the error and returns, so the view change still goes on.
2063
+ */
2064
+ private endRealtimeSessionForViewChange;
2065
+ /**
2066
+ * Creates a fork, refreshes the fork summaries and opens the fork. Shows `failureText` when the
2067
+ * fork cannot be created, and `openFailureText` when it was created but could not be opened.
2068
+ * @returns the new fork's id when it is open; null otherwise.
2069
+ */
2070
+ private createForkAndOpen;
2071
+ /**
2072
+ * Creates the fork of a draft on its first send and opens it. A send in the same draft while that
2073
+ * runs gets the same fork. Returns the new fork's id, or undefined (with a notice) when it could
2074
+ * not be created or opened, or while another start action runs; undefined stops the send.
2075
+ */
2076
+ private materializeDraftFork;
2077
+ /**
2078
+ * Creates and opens the fork of a draft (Kind Fork, SourceDetailID the replaced message), with
2079
+ * {@link forkStartInFlight} set. Clears the draft's running creation when done; that runs after an
2080
+ * await, so after {@link materializeDraftFork} has recorded it.
2081
+ */
2082
+ private createDraftForkAndOpen;
2083
+ /** The fork row of a saved `MJ: Conversation Branches` entity. */
2084
+ private forkRowOf;
2085
+ /** Adds a fork row to the conversation's rows, so the scope of the fork resolves at once. */
2086
+ private addForkRow;
2087
+ /**
2088
+ * Fork from here: opens a new fork that replaces the message (the draft view, {@link OpenDraftFork}).
2089
+ * Nothing is created until the first send, which creates the fork through {@link ResolveComposerBranch};
2090
+ * with no name, the fork is named from that first message. Only for a user message the current person
2091
+ * wrote. Ignored while another start action runs and when the person may not fork ({@link CanFork}).
2092
+ */
2093
+ OnForkRequested(message: MJConversationDetailEntity): Promise<void>;
2094
+ /**
2095
+ * Saves an edit as a fork: creates an Edit fork at the row before the edited message,
2096
+ * opens it, then sends the edited text into it. The original message stays where it was. Ignored
2097
+ * while another start action runs and when the person may not fork ({@link CanFork}); makes no fork
2098
+ * while the composer cannot send.
2099
+ */
2100
+ OnEditResendRequested(event: {
2101
+ Message: MJConversationDetailEntity;
2102
+ NewText: string;
2103
+ }): Promise<void>;
2104
+ /**
2105
+ * Regenerates an answer as a fork: creates a Regenerate fork at the user message the
2106
+ * answer replied to, opens it, then runs the agent for that message again inside it. The first answer
2107
+ * stays where it was. Ignored while another start action runs; makes no fork while the composer cannot
2108
+ * send or when the user message is not in the loaded window. When the person may not fork
2109
+ * ({@link CanFork}), reruns the latest answer's turn in place instead ({@link InPlaceTurn}).
2110
+ */
2111
+ OnRegenerateRequested(aiMessage: MJConversationDetailEntity): Promise<void>;
2112
+ /**
2113
+ * The latest turn that in-place Edit and Regenerate may change: the window view's last own user message
2114
+ * and its answer. Null while the person may fork, in a draft, and when a fork depends on the turn's
2115
+ * answer rows. The same object until the rows, the window view, the fork rows or CanFork change.
2116
+ */
2117
+ get InPlaceTurn(): LatestTurn | null;
2118
+ /** The latest turn of the rows, or null when there is none or a fork depends on its answer rows. */
2119
+ private unblockedLatestTurn;
2120
+ /** "Save and resend": the message item saved the new text of the latest user message; reruns its turn in place. */
2121
+ OnResendInPlaceRequested(userMessage: MJConversationDetailEntity): Promise<void>;
2122
+ /**
2123
+ * Runs the turn of `userMessage` again in place: reads the fork rows fresh and refuses when a fork
2124
+ * depends on the turn's answer rows, hides those rows ({@link hideReplacedRows}), then reruns the agent
2125
+ * for the user message on its own branch. Shows a notice for each failure.
2126
+ */
2127
+ private rerunTurnInPlace;
2128
+ /**
2129
+ * Marks each row replaced, one save at a time (parallel saves race on the server's transaction
2130
+ * counter): `ReplacedAt` set and `HiddenToUser` true; the rows are kept for audit. Takes the saved rows
2131
+ * off the screen. Stops at the first failed save, puts back that row's values and returns false.
2132
+ */
2133
+ private hideReplacedRows;
2134
+ /**
2135
+ * The active composer when it can resend a message or rerun an agent now. Otherwise shows why
2136
+ * and returns null: no composer is mounted, it is read-only, or it is still sending (an agent
2137
+ * reply is running).
2138
+ */
2139
+ private composerReadyForResend;
2140
+ /**
2141
+ * Where an edit of `message`, or a fork that replaces it, starts; undefined after a notice: `Could not
2142
+ * locate the message before this one` when the row before it is unknown, `failureText` when reading
2143
+ * that row failed.
2144
+ */
2145
+ private editForkPointOrNotify;
2146
+ /**
2147
+ * Where an edit of `message`, or a fork that replaces it, starts: the row before it on the open path.
2148
+ * Loads one older row when the window does not hold it. Undefined when it cannot be determined.
2149
+ */
2150
+ private resolveEditForkPoint;
2151
+ /** The nearest earlier User row in the loaded window; null when the window holds none. */
2152
+ private findUserMessageBefore;
2153
+ /**
2154
+ * Loads the fork summaries of a conversation load. Keeps the earlier ones when the read fails, and
2155
+ * drops a result when a newer read's result is already shown.
2156
+ */
2157
+ private loadForkSummaries;
2158
+ /**
2159
+ * Reads the active conversation's fork rows again, keeps them, then reloads the fork
2160
+ * summaries. Keeps the earlier rows and the summaries when the rows cannot be read.
2161
+ */
2162
+ RefreshForkSummaries(): Promise<void>;
2163
+ /**
2164
+ * The chips of each message, from the fork summaries; the same map until the summaries, the window
2165
+ * view, the fork's first own row or the avatar map change. In a fork's full view, that fork's own
2166
+ * chip is left out (it would open the view already open), and its first own row shows the fork's
2167
+ * alternatives: the original view of the message it replaced and the other forks placed there.
2168
+ */
2169
+ get ForkChipMap(): ReadonlyMap<string, readonly MessageForkChip[]>;
2170
+ /** The first own row of a fork view when the loaded window reaches it (see {@link FirstOwnRowID}); null in Main and in a draft. */
2171
+ private firstOwnRowIdOf;
2172
+ /** Records that {@link UserAvatarMap} was filled, so the chip map is built again. */
2173
+ private markUserAvatarMapChanged;
2174
+ /** A person's entry in {@link UserAvatarMap}; ids compared without regard to case. */
2175
+ private knownUserAvatar;
2176
+ /** The avatar of a fork participant: a person's image or icon when known, an agent's logo or icon. */
2177
+ private forkChipAvatar;
2178
+ /** The view the loaded rows belong to; Main when none was set. */
2179
+ get WindowView(): ConversationOpenView;
2180
+ /**
2181
+ * The rows the message list shows for the window view; the same array until the rows or the view
2182
+ * change. Main shows every loaded row; a fork shows every inherited row, then its own rows; a draft
2183
+ * shows the rows up to its anchor.
2184
+ */
2185
+ get DisplayMessages(): MJConversationDetailEntity[];
2186
+ /** The loaded rows split for the window view, and the rows shown; rebuilt only when one of their inputs changes. */
2187
+ private displayState;
2188
+ /**
2189
+ * Puts `message` in place of the row with its id in the displayed rows and their split, keeping those
2190
+ * arrays. They are copies of `messages`, so an entity replaced in place there is replaced here too.
2191
+ */
2192
+ private replaceDisplayedRow;
2193
+ /** Puts `message` in place of the row with its id in `rows`; leaves `messages` itself alone. */
2194
+ private replaceRowIn;
2195
+ /** True when older rows remain above the loaded window of the open view's path, in every view. */
2196
+ get ListHasMoreAbove(): boolean;
2197
+ /** The summary of the open fork; null in Main, in a draft, or before the summaries load. */
2198
+ get OpenForkSummary(): ForkSummary | null;
2199
+ /** The summary of the fork a view shows; null for Main, a draft, or before the summaries load. */
2200
+ private forkSummaryOf;
2201
+ /** The title of the open fork: its display name, "New fork" for a draft. */
2202
+ get OpenViewTitle(): string;
2203
+ /** The kind of the open fork (a draft is a Fork). */
2204
+ get OpenViewKind(): ForkKind;
2205
+ /** The kind icon of the open fork. */
2206
+ get OpenViewIcon(): string;
2207
+ /** How the message list draws the rows shown; null in Main. */
2208
+ get ForkLayout(): ForkViewLayout | null;
2209
+ /** The composer placeholder of a conversation's composer: "Message this fork" in a fork or draft of the active conversation. */
2210
+ ComposerPlaceholderFor(conversationId: string | null | undefined): string;
2211
+ /**
2212
+ * The agent of the last shown message when it is a reply the user stopped (null when its name
2213
+ * is unknown); undefined when the last message is anything else. Any message sent now resumes
2214
+ * that run, so the placeholder says so.
2215
+ */
2216
+ private stoppedLastReplyAgent;
2217
+ /** The hint under the composer while a fork or draft window is shown; null in Main. */
2218
+ get ComposerHint(): string | null;
2219
+ /** The layout of the rows shown and the composer hint; rebuilt only when the rows, the window view or the summaries change. */
2220
+ private layoutState;
2221
+ /** The composer hint of a fork or draft view; reads the anchor row only when the summary has no anchor time. */
2222
+ private composerHintFor;
2223
+ /**
2224
+ * The fork marker text of a fork or draft view. The "from" part names the author of the replaced
2225
+ * message (the fork's SourceDetailID) when the fork has one, else the anchor's author.
2226
+ */
2227
+ private forkMarkerText;
2228
+ /**
2229
+ * The author a fork's marker names: with a source message, the summary's source author, else that row's
2230
+ * author when it is loaded; with none, the summary's anchor author, else the loaded anchor row's.
2231
+ */
2232
+ private forkFromAuthorOf;
2233
+ /** The fork row of a fork view among this chat area's fork rows; null for another view or when it is not loaded. */
2234
+ private forkRowOfView;
2235
+ /** The time of a view's anchor row; null when it is not loaded. */
2236
+ private anchorTimeOf;
2237
+ /** The author of a view's anchor row; null when it is not loaded. */
2238
+ private anchorAuthorOf;
2239
+ /** The author of a loaded row; null when the row is not loaded. */
2240
+ private loadedAuthorOf;
2241
+ /** The author of a row: the agent of an agent row, else the person. */
2242
+ private rowAuthorOf;
2243
+ /**
2244
+ * The anchor of a view among the loaded rows: a draft's anchor row when it is loaded, else the view's
2245
+ * last inherited row.
2246
+ */
2247
+ private anchorRowOf;
2248
+ /** A short date and time for fork text, in the person's locale. */
2249
+ private formatForkTime;
2250
+ /** Refreshes the fork summaries once, shortly after a burst of fork rows. */
2251
+ private scheduleForkSummaryRefresh;
2252
+ /**
2253
+ * Refreshes the fork summaries soon when `row` is a fork row, then tells whether the row belongs
2254
+ * on screen in the open view. A row written in another view (a turn started in Main while a fork
2255
+ * is open) does not.
2256
+ */
2257
+ private acceptRowForOpenView;
2258
+ /**
2259
+ * Has the open artifact viewer load again in the open view's scope; it reads its `Scope` input
2260
+ * only when it loads. Asks for the selected version (0 asks for the newest); a version that
2261
+ * is not in the scope shows the newest one with a notice. Does nothing while the pane is closed.
2262
+ */
2263
+ private refreshArtifactViewerForScope;
2264
+ /**
2265
+ * Loads the window of the open view into the store: the newest page of the view's path; older pages
2266
+ * load as the person scrolls up. A draft's path is its parent's, and its first page ends at its
2267
+ * anchor; a draft with no anchor inherits nothing, so its window is empty.
2268
+ */
2269
+ private loadWindowForOpenView;
2270
+ /**
2271
+ * Reloads the window of the open view's path (see {@link loadWindowForOpenView}), then the fork
2272
+ * rows, the open artifact viewer, the agent runs, artifacts and ratings, and the pins in the scope
2273
+ * of the open view's path. The earlier fork rows stay when the rows cannot be read. The pin count
2274
+ * and the loaded pins keep their earlier values until that read lands. Restarts the agent-run poll
2275
+ * in the new scope. Stops when a newer view reload or conversation load starts; the newer load
2276
+ * reads the window, fork rows and pins again.
2277
+ *
2278
+ * @returns true when the window and peripherals loaded on the open view's path; false when there
2279
+ * is no conversation, a newer load replaced this one, the window read failed, or the reload failed.
2280
+ */
2281
+ private reloadWindowForView;
1749
2282
  /** Detail ids whose completion this instance has already applied. A live callback and the replay window can both deliver one finish. */
1750
2283
  private handledCompletionIds?;
1751
2284
  /**
@@ -1941,6 +2474,15 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1941
2474
  get isReadOnlyView(): boolean;
1942
2475
  /** Read-only for any reason: the host said so, or the conversation is shared with View access. */
1943
2476
  get EffectiveReadOnly(): boolean;
2477
+ /**
2478
+ * True when this person may start forks in the open conversation: the host allows forking
2479
+ * ({@link AllowForking}), the person holds `Conversations: Fork`, has not switched forking off in My
2480
+ * Profile, and may write. When false, no fork action is offered and Edit and Regenerate change the
2481
+ * latest turn in place.
2482
+ */
2483
+ get CanFork(): boolean;
2484
+ /** The person's stored forking setting; undefined when there is none or the settings cannot be read. */
2485
+ private forkingSettingValue;
1944
2486
  /**
1945
2487
  * `true` when the current user is allowed to create new shares on this
1946
2488
  * conversation: the owner, or a user with an Owner-level grant. Uses the same
@@ -1949,18 +2491,6 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1949
2491
  get CanShareConversation(): boolean;
1950
2492
  /** @deprecated Use {@link CanShareConversation}. */
1951
2493
  get canShareConversation(): boolean;
1952
- OnReplyInThread(message: MJConversationDetailEntity): void;
1953
- /** @deprecated Use {@link OnReplyInThread}. */
1954
- onReplyInThread(message: MJConversationDetailEntity): void;
1955
- OnViewThread(message: MJConversationDetailEntity): void;
1956
- /** @deprecated Use {@link OnViewThread}. */
1957
- onViewThread(message: MJConversationDetailEntity): void;
1958
- OnLocalThreadClosed(): void;
1959
- /** @deprecated Use {@link OnLocalThreadClosed}. */
1960
- onLocalThreadClosed(): void;
1961
- OnThreadReplyAdded(reply: MJConversationDetailEntity): void;
1962
- /** @deprecated Use {@link OnThreadReplyAdded}. */
1963
- onThreadReplyAdded(reply: MJConversationDetailEntity): void;
1964
2494
  OnToggleAgentPanel(): void;
1965
2495
  /** @deprecated Use {@link OnToggleAgentPanel}. */
1966
2496
  onToggleAgentPanel(): void;
@@ -1981,15 +2511,38 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
1981
2511
  /** @deprecated Use {@link OnJumpToMessage}. */
1982
2512
  onJumpToMessage(messageId: string): Promise<void>;
1983
2513
  /**
1984
- * Pages older history until `messageId` falls inside the loaded window.
2514
+ * Opens a message, such as a search hit, in the active conversation: waits for the
2515
+ * conversation's load to end, opens the hit's fork (a Main hit opens Main) when it is not the
2516
+ * open view, pages older history until the window holds `sequence`, then scrolls to the row and
2517
+ * highlights it for 2 s.
1985
2518
  *
1986
- * Deterministic rather than heuristic: a pin carries its own `Sequence`, so the stop
2519
+ * @param conversationId The conversation of the message. The caller activates it first.
2520
+ * @param branchId The message's fork; null is Main. Compared without case.
2521
+ * @param sequence The message's sequence in its conversation.
2522
+ * @returns true when the row was found and scrolled to; false when the conversation is not the
2523
+ * active one, the view change was ignored or failed, or the row is not on the view's path.
2524
+ */
2525
+ OpenMessage(conversationId: string, branchId: string | null, sequence: number): Promise<boolean>;
2526
+ /**
2527
+ * Waits until the load of `conversationId` has ended. False when another conversation
2528
+ * becomes active first or the component is destroyed.
2529
+ */
2530
+ private waitForConversationLoad;
2531
+ /** Pages older history until the pinned message `messageId` falls inside the loaded window. */
2532
+ private loadUntilMessageIsWindowed;
2533
+ /**
2534
+ * Pages older history until the loaded window reaches back to `sequence`.
2535
+ *
2536
+ * Deterministic rather than heuristic: the target's `Sequence` is known, so the stop
1987
2537
  * condition is simply "the window now reaches at least that far back" — no equivalent of
1988
2538
  * the date jump's `NeedsOlder` probing is needed. Bounded by the same page cap, for the same
1989
2539
  * reason: an unbounded walk back is the thing windowing exists to avoid.
1990
2540
  */
1991
- private loadUntilMessageIsWindowed;
1992
- /** Flashes the beacon on a message once its scroll has settled. */
2541
+ private loadUntilSequenceIsWindowed;
2542
+ /**
2543
+ * Adds `cssClass` to a message for `durationMs` once its scroll has settled. Defaults to the
2544
+ * pin beacon.
2545
+ */
1993
2546
  private beaconMessage;
1994
2547
  /**
1995
2548
  * Unpins a message from the pins panel — saves to DB and patches the cache.
@@ -2013,9 +2566,17 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2013
2566
  OnDeleteMessage(message: MJConversationDetailEntity): Promise<void>;
2014
2567
  /** @deprecated Use {@link OnDeleteMessage}. */
2015
2568
  onDeleteMessage(message: MJConversationDetailEntity): Promise<void>;
2569
+ /** @deprecated Use {@link OnRegenerateRequested}. */
2016
2570
  OnRetryMessage(message: MJConversationDetailEntity): void;
2017
- /** @deprecated Use {@link OnRetryMessage}. */
2571
+ /** @deprecated Use {@link OnRegenerateRequested}. */
2018
2572
  onRetryMessage(message: MJConversationDetailEntity): void;
2573
+ /**
2574
+ * Stop the agent run behind an in-progress AI reply. Uses the run already mapped to the
2575
+ * reply when there is one; otherwise looks it up by the reply's detail id, since the run row
2576
+ * appears a moment after the placeholder. The run's own completion event then flows through
2577
+ * the normal path and the message leaves In-Progress on its own.
2578
+ */
2579
+ OnStopMessage(message: MJConversationDetailEntity): Promise<void>;
2019
2580
  /**
2020
2581
  * Handle attachment click - opens the image viewer for images
2021
2582
  */
@@ -2049,6 +2610,20 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2049
2610
  artifactId: string;
2050
2611
  versionId?: string;
2051
2612
  }): Promise<void>;
2613
+ OnTaskGraphPanelRequested(data: {
2614
+ parentTaskId: string;
2615
+ workflowTitle?: string;
2616
+ workflowName?: string;
2617
+ isRunning?: boolean;
2618
+ }): void;
2619
+ IsSavingTaskGraphWorkflow: boolean;
2620
+ OnCloseTaskGraphPanel(): void;
2621
+ /**
2622
+ * Persists the currently displayed Task Graph in the chat side-panel as a reusable
2623
+ * Draft Flow Agent workflow via {@link WorkflowSaveOperation} and opens the new
2624
+ * `MJ: AI Agents` record.
2625
+ */
2626
+ OnSaveTaskGraphAsWorkflow(spec: TaskGraphSpec | null): Promise<void>;
2052
2627
  OnArtifactCreated(data: {
2053
2628
  conversationId: string;
2054
2629
  conversationDetailId: string;
@@ -2134,7 +2709,7 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2134
2709
  private onResizeTouchMove;
2135
2710
  private onResizeTouchEnd;
2136
2711
  /**
2137
- * LocalStorage persistence methods for artifact pane
2712
+ * UserInfoEngine persistence methods for artifact pane width
2138
2713
  */
2139
2714
  private loadArtifactPaneWidth;
2140
2715
  private saveArtifactPaneWidth;
@@ -2171,6 +2746,22 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2171
2746
  entityName: string;
2172
2747
  compositeKey: CompositeKey;
2173
2748
  }): void;
2749
+ /**
2750
+ * Returns true when an `open:resource` command refers to a conversation artifact or generated file
2751
+ * (either explicitly via `resourceType: 'Artifact' | 'File'` or via `resourceType: 'Record'` with
2752
+ * an artifact/file entity name).
2753
+ */
2754
+ private isConversationArtifactCommand;
2755
+ /**
2756
+ * Opens the matching (or most recent) artifact in the current conversation's artifact viewer panel.
2757
+ * Returns true if a conversation artifact was found and opened.
2758
+ */
2759
+ OpenConversationArtifactForCommand(command: OpenResourceCommand): boolean;
2760
+ /**
2761
+ * Handles non-Record `open:resource` commands when rendered inside the floating chat overlay
2762
+ * (`OverlayMode === true`), where `ChatConversationsResource` is not mounted.
2763
+ */
2764
+ private handleOverlayOpenResourceCommand;
2174
2765
  /** Record `open:resource` buttons → same openEntityRecord chain as agent-run links. */
2175
2766
  private emitOpenResourceRecord;
2176
2767
  OnNavigationRequest(event: NavigationRequest): void;
@@ -2243,12 +2834,19 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2243
2834
  * that need to programmatically dismiss a review.
2244
2835
  */
2245
2836
  ClearRealtimeSessionReview(): void;
2837
+ /**
2838
+ * True when the session review may offer "Start live session": not while a draft fork is open,
2839
+ * the same rule as the composer's voice control (a session started there would run on the
2840
+ * draft's parent path).
2841
+ */
2842
+ get CanStartVoiceFromReview(): boolean;
2246
2843
  /**
2247
2844
  * Review mode's "Start live session": RESUMES the reviewed session as a new live call
2248
2845
  * through the SAME start path the composer's mic uses, chaining `lastSessionId` so the
2249
2846
  * server restores saved channel states (e.g. the whiteboard) via `PriorChannelStatesJson`.
2250
2847
  * The start flips `Active$` synchronously, so clearing the review immediately after
2251
- * never unhosts the overlay mid-transition.
2848
+ * never unhosts the overlay mid-transition. Starts nothing, and keeps the review, while
2849
+ * {@link CanStartVoiceFromReview} is false.
2252
2850
  */
2253
2851
  OnReviewStartLive(request: RealtimeStartLiveRequest): Promise<void>;
2254
2852
  /** @deprecated Use {@link OnReviewStartLive}. */
@@ -2589,6 +3187,6 @@ export declare class ConversationChatAreaComponent extends BaseAngularComponent
2589
3187
  conversationId: string;
2590
3188
  }): void;
2591
3189
  static ɵfac: i0.ɵɵFactoryDeclaration<ConversationChatAreaComponent, never>;
2592
- static ɵcmp: i0.ɵɵComponentDeclaration<ConversationChatAreaComponent, "mj-conversation-chat-area", never, { "EnvironmentId": { "alias": "EnvironmentId"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "ConversationId": { "alias": "ConversationId"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; "Conversation": { "alias": "Conversation"; "required": false; }; "conversation": { "alias": "conversation"; "required": false; }; "ThreadId": { "alias": "ThreadId"; "required": false; }; "threadId": { "alias": "threadId"; "required": false; }; "SuppressNewConversationEmptyState": { "alias": "SuppressNewConversationEmptyState"; "required": false; }; "suppressNewConversationEmptyState": { "alias": "suppressNewConversationEmptyState"; "required": false; }; "AllowMentions": { "alias": "AllowMentions"; "required": false; }; "allowMentions": { "alias": "allowMentions"; "required": false; }; "AllowAgentMentions": { "alias": "AllowAgentMentions"; "required": false; }; "allowAgentMentions": { "alias": "allowAgentMentions"; "required": false; }; "AllowEntityMentions": { "alias": "AllowEntityMentions"; "required": false; }; "allowEntityMentions": { "alias": "allowEntityMentions"; "required": false; }; "AllowSkillCommands": { "alias": "AllowSkillCommands"; "required": false; }; "allowSkillCommands": { "alias": "allowSkillCommands"; "required": false; }; "AllowAttachments": { "alias": "AllowAttachments"; "required": false; }; "allowAttachments": { "alias": "allowAttachments"; "required": false; }; "AllowPlanMode": { "alias": "AllowPlanMode"; "required": false; }; "allowPlanMode": { "alias": "allowPlanMode"; "required": false; }; "AllowRealtime": { "alias": "AllowRealtime"; "required": false; }; "allowRealtime": { "alias": "allowRealtime"; "required": false; }; "ShowEmptyFill": { "alias": "ShowEmptyFill"; "required": false; }; "showEmptyFill": { "alias": "showEmptyFill"; "required": false; }; "ShowLoadingState": { "alias": "ShowLoadingState"; "required": false; }; "showLoadingState": { "alias": "showLoadingState"; "required": false; }; "ReadReplyFromTop": { "alias": "ReadReplyFromTop"; "required": false; }; "readReplyFromTop": { "alias": "readReplyFromTop"; "required": false; }; "ShowAgentRunDetails": { "alias": "ShowAgentRunDetails"; "required": false; }; "showAgentRunDetails": { "alias": "showAgentRunDetails"; "required": false; }; "ShowReactions": { "alias": "ShowReactions"; "required": false; }; "showReactions": { "alias": "showReactions"; "required": false; }; "ShowMessageRating": { "alias": "ShowMessageRating"; "required": false; }; "showMessageRating": { "alias": "showMessageRating"; "required": false; }; "AllowPinning": { "alias": "AllowPinning"; "required": false; }; "allowPinning": { "alias": "allowPinning"; "required": false; }; "AllowMessageEdit": { "alias": "AllowMessageEdit"; "required": false; }; "allowMessageEdit": { "alias": "allowMessageEdit"; "required": false; }; "AllowMessageDelete": { "alias": "AllowMessageDelete"; "required": false; }; "allowMessageDelete": { "alias": "allowMessageDelete"; "required": false; }; "ReadOnly": { "alias": "ReadOnly"; "required": false; }; "ReadOnlyMessage": { "alias": "ReadOnlyMessage"; "required": false; }; "ShowSuggestedPrompts": { "alias": "ShowSuggestedPrompts"; "required": false; }; "showSuggestedPrompts": { "alias": "showSuggestedPrompts"; "required": false; }; "ShowDateNavigation": { "alias": "ShowDateNavigation"; "required": false; }; "showDateNavigation": { "alias": "showDateNavigation"; "required": false; }; "AssistantDisplayName": { "alias": "AssistantDisplayName"; "required": false; }; "assistantDisplayName": { "alias": "assistantDisplayName"; "required": false; }; "AssistantAvatarUrl": { "alias": "AssistantAvatarUrl"; "required": false; }; "assistantAvatarUrl": { "alias": "assistantAvatarUrl"; "required": false; }; "IsNewConversation": { "alias": "IsNewConversation"; "required": false; }; "isNewConversation": { "alias": "isNewConversation"; "required": false; }; "PendingMessage": { "alias": "PendingMessage"; "required": false; }; "pendingMessage": { "alias": "pendingMessage"; "required": false; }; "PendingMessageConversationId": { "alias": "PendingMessageConversationId"; "required": false; }; "pendingMessageConversationId": { "alias": "pendingMessageConversationId"; "required": false; }; "PendingAttachments": { "alias": "PendingAttachments"; "required": false; }; "pendingAttachments": { "alias": "pendingAttachments"; "required": false; }; "PendingArtifactId": { "alias": "PendingArtifactId"; "required": false; }; "pendingArtifactId": { "alias": "pendingArtifactId"; "required": false; }; "PendingArtifactVersionNumber": { "alias": "PendingArtifactVersionNumber"; "required": false; }; "pendingArtifactVersionNumber": { "alias": "pendingArtifactVersionNumber"; "required": false; }; "PendingArtifactConversationId": { "alias": "PendingArtifactConversationId"; "required": false; }; "pendingArtifactConversationId": { "alias": "pendingArtifactConversationId"; "required": false; }; "OverlayMode": { "alias": "OverlayMode"; "required": false; }; "overlayMode": { "alias": "overlayMode"; "required": false; }; "ShowExportButton": { "alias": "ShowExportButton"; "required": false; }; "showExportButton": { "alias": "showExportButton"; "required": false; }; "ExportButtonLabel": { "alias": "ExportButtonLabel"; "required": false; }; "exportButtonLabel": { "alias": "exportButtonLabel"; "required": false; }; "ExportButtonIcon": { "alias": "ExportButtonIcon"; "required": false; }; "exportButtonIcon": { "alias": "exportButtonIcon"; "required": false; }; "ExportBranding": { "alias": "ExportBranding"; "required": false; }; "exportBranding": { "alias": "exportBranding"; "required": false; }; "ShowShareButton": { "alias": "ShowShareButton"; "required": false; }; "showShareButton": { "alias": "showShareButton"; "required": false; }; "ShowArtifactIndicator": { "alias": "ShowArtifactIndicator"; "required": false; }; "showArtifactIndicator": { "alias": "showArtifactIndicator"; "required": false; }; "AppContext": { "alias": "AppContext"; "required": false; }; "appContext": { "alias": "appContext"; "required": false; }; "DefaultAgentId": { "alias": "DefaultAgentId"; "required": false; }; "defaultAgentId": { "alias": "defaultAgentId"; "required": false; }; "AgentReplyMode": { "alias": "AgentReplyMode"; "required": false; }; "AllowedAgentIDs": { "alias": "AllowedAgentIDs"; "required": false; }; "MentionPeople": { "alias": "MentionPeople"; "required": false; }; "AgentHistoryFrom": { "alias": "AgentHistoryFrom"; "required": false; }; "AgentTurnHandler": { "alias": "AgentTurnHandler"; "required": false; }; "AutoNameConversation": { "alias": "AutoNameConversation"; "required": false; }; "EnableDecisionRouting": { "alias": "EnableDecisionRouting"; "required": false; }; "ApplicationScope": { "alias": "ApplicationScope"; "required": false; }; "applicationScope": { "alias": "applicationScope"; "required": false; }; "ApplicationId": { "alias": "ApplicationId"; "required": false; }; "applicationId": { "alias": "applicationId"; "required": false; }; "LinkedEntityId": { "alias": "LinkedEntityId"; "required": false; }; "linkedEntityId": { "alias": "linkedEntityId"; "required": false; }; "LinkedRecordId": { "alias": "LinkedRecordId"; "required": false; }; "linkedRecordId": { "alias": "linkedRecordId"; "required": false; }; "ShowAgentPicker": { "alias": "ShowAgentPicker"; "required": false; }; "showAgentPicker": { "alias": "showAgentPicker"; "required": false; }; "ShowAgentModePicker": { "alias": "ShowAgentModePicker"; "required": false; }; "showAgentModePicker": { "alias": "showAgentModePicker"; "required": false; }; "EmptyStateGreeting": { "alias": "EmptyStateGreeting"; "required": false; }; "emptyStateGreeting": { "alias": "emptyStateGreeting"; "required": false; }; "ShowSidebarToggle": { "alias": "ShowSidebarToggle"; "required": false; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; }; "ShowAgentCharacter": { "alias": "ShowAgentCharacter"; "required": false; }; "showAgentCharacter": { "alias": "showAgentCharacter"; "required": false; }; "AgentCharacterConfig": { "alias": "AgentCharacterConfig"; "required": false; }; "agentCharacterConfig": { "alias": "agentCharacterConfig"; "required": false; }; "EmptyStateConfig": { "alias": "EmptyStateConfig"; "required": false; }; "emptyStateConfig": { "alias": "emptyStateConfig"; "required": false; }; "ShowDemonstrationSurface": { "alias": "ShowDemonstrationSurface"; "required": false; }; "showDemonstrationSurface": { "alias": "showDemonstrationSurface"; "required": false; }; "DemonstrationSurfaceContent": { "alias": "DemonstrationSurfaceContent"; "required": false; }; "demonstrationSurfaceContent": { "alias": "demonstrationSurfaceContent"; "required": false; }; "ComposerDraft": { "alias": "ComposerDraft"; "required": false; }; "composerDraft": { "alias": "composerDraft"; "required": false; }; "ComposerAgentMention": { "alias": "ComposerAgentMention"; "required": false; }; "composerAgentMention": { "alias": "composerAgentMention"; "required": false; }; }, { "BeforeAgentTurn": "BeforeAgentTurn"; "beforeAgentTurn": "beforeAgentTurn"; "AfterAgentTurn": "AfterAgentTurn"; "afterAgentTurn": "afterAgentTurn"; "BeforeToolInvoked": "BeforeToolInvoked"; "beforeToolInvoked": "beforeToolInvoked"; "AfterToolInvoked": "AfterToolInvoked"; "afterToolInvoked": "afterToolInvoked"; "BeforeResponseFormSubmitted": "BeforeResponseFormSubmitted"; "beforeResponseFormSubmitted": "beforeResponseFormSubmitted"; "AfterResponseFormSubmitted": "AfterResponseFormSubmitted"; "afterResponseFormSubmitted": "afterResponseFormSubmitted"; "SessionStarted": "SessionStarted"; "sessionStarted": "sessionStarted"; "SessionChannelStateChanged": "SessionChannelStateChanged"; "sessionChannelStateChanged": "sessionChannelStateChanged"; "SessionEnded": "SessionEnded"; "sessionEnded": "sessionEnded"; "ConversationRenamed": "ConversationRenamed"; "conversationRenamed": "conversationRenamed"; "OpenEntityRecord": "OpenEntityRecord"; "openEntityRecord": "openEntityRecord"; "RealtimeConversationReady": "RealtimeConversationReady"; "realtimeConversationReady": "realtimeConversationReady"; "navigationRequest": "navigationRequest"; "TaskClicked": "TaskClicked"; "taskClicked": "taskClicked"; "ArtifactLinkClicked": "ArtifactLinkClicked"; "artifactLinkClicked": "artifactLinkClicked"; "SidebarToggleClicked": "SidebarToggleClicked"; "sidebarToggleClicked": "sidebarToggleClicked"; "ConversationCreated": "ConversationCreated"; "conversationCreated": "conversationCreated"; "ThreadOpened": "ThreadOpened"; "threadOpened": "threadOpened"; "ThreadClosed": "ThreadClosed"; "threadClosed": "threadClosed"; "PendingArtifactConsumed": "PendingArtifactConsumed"; "pendingArtifactConsumed": "pendingArtifactConsumed"; "PendingMessageConsumed": "PendingMessageConsumed"; "pendingMessageConsumed": "pendingMessageConsumed"; "PendingMessageRequested": "PendingMessageRequested"; "pendingMessageRequested": "pendingMessageRequested"; "ComposerDraftConsumed": "ComposerDraftConsumed"; "composerDraftConsumed": "composerDraftConsumed"; "ComposerAgentMentionConsumed": "ComposerAgentMentionConsumed"; "composerAgentMentionConsumed": "composerAgentMentionConsumed"; }, ["chatSlotChildren"], never, false, never>;
3190
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConversationChatAreaComponent, "mj-conversation-chat-area", never, { "EnvironmentId": { "alias": "EnvironmentId"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "ConversationId": { "alias": "ConversationId"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; "Conversation": { "alias": "Conversation"; "required": false; }; "conversation": { "alias": "conversation"; "required": false; }; "SuppressNewConversationEmptyState": { "alias": "SuppressNewConversationEmptyState"; "required": false; }; "suppressNewConversationEmptyState": { "alias": "suppressNewConversationEmptyState"; "required": false; }; "AllowMentions": { "alias": "AllowMentions"; "required": false; }; "allowMentions": { "alias": "allowMentions"; "required": false; }; "AllowAgentMentions": { "alias": "AllowAgentMentions"; "required": false; }; "allowAgentMentions": { "alias": "allowAgentMentions"; "required": false; }; "AllowEntityMentions": { "alias": "AllowEntityMentions"; "required": false; }; "allowEntityMentions": { "alias": "allowEntityMentions"; "required": false; }; "AllowSkillCommands": { "alias": "AllowSkillCommands"; "required": false; }; "allowSkillCommands": { "alias": "allowSkillCommands"; "required": false; }; "AllowAttachments": { "alias": "AllowAttachments"; "required": false; }; "allowAttachments": { "alias": "allowAttachments"; "required": false; }; "AllowPlanMode": { "alias": "AllowPlanMode"; "required": false; }; "allowPlanMode": { "alias": "allowPlanMode"; "required": false; }; "AllowRealtime": { "alias": "AllowRealtime"; "required": false; }; "allowRealtime": { "alias": "allowRealtime"; "required": false; }; "AllowForking": { "alias": "AllowForking"; "required": false; }; "AllowStopRun": { "alias": "AllowStopRun"; "required": false; }; "ShowEmptyFill": { "alias": "ShowEmptyFill"; "required": false; }; "showEmptyFill": { "alias": "showEmptyFill"; "required": false; }; "ShowLoadingState": { "alias": "ShowLoadingState"; "required": false; }; "showLoadingState": { "alias": "showLoadingState"; "required": false; }; "ReadReplyFromTop": { "alias": "ReadReplyFromTop"; "required": false; }; "readReplyFromTop": { "alias": "readReplyFromTop"; "required": false; }; "ShowAgentRunDetails": { "alias": "ShowAgentRunDetails"; "required": false; }; "showAgentRunDetails": { "alias": "showAgentRunDetails"; "required": false; }; "ShowReactions": { "alias": "ShowReactions"; "required": false; }; "showReactions": { "alias": "showReactions"; "required": false; }; "ShowMessageRating": { "alias": "ShowMessageRating"; "required": false; }; "showMessageRating": { "alias": "showMessageRating"; "required": false; }; "AllowPinning": { "alias": "AllowPinning"; "required": false; }; "allowPinning": { "alias": "allowPinning"; "required": false; }; "AllowMessageEdit": { "alias": "AllowMessageEdit"; "required": false; }; "allowMessageEdit": { "alias": "allowMessageEdit"; "required": false; }; "AllowMessageDelete": { "alias": "AllowMessageDelete"; "required": false; }; "allowMessageDelete": { "alias": "allowMessageDelete"; "required": false; }; "ReadOnly": { "alias": "ReadOnly"; "required": false; }; "ReadOnlyMessage": { "alias": "ReadOnlyMessage"; "required": false; }; "ShowSuggestedPrompts": { "alias": "ShowSuggestedPrompts"; "required": false; }; "showSuggestedPrompts": { "alias": "showSuggestedPrompts"; "required": false; }; "ShowDateNavigation": { "alias": "ShowDateNavigation"; "required": false; }; "showDateNavigation": { "alias": "showDateNavigation"; "required": false; }; "AssistantDisplayName": { "alias": "AssistantDisplayName"; "required": false; }; "assistantDisplayName": { "alias": "assistantDisplayName"; "required": false; }; "AssistantAvatarUrl": { "alias": "AssistantAvatarUrl"; "required": false; }; "assistantAvatarUrl": { "alias": "assistantAvatarUrl"; "required": false; }; "IsNewConversation": { "alias": "IsNewConversation"; "required": false; }; "isNewConversation": { "alias": "isNewConversation"; "required": false; }; "PendingMessage": { "alias": "PendingMessage"; "required": false; }; "pendingMessage": { "alias": "pendingMessage"; "required": false; }; "PendingMessageConversationId": { "alias": "PendingMessageConversationId"; "required": false; }; "pendingMessageConversationId": { "alias": "pendingMessageConversationId"; "required": false; }; "PendingAttachments": { "alias": "PendingAttachments"; "required": false; }; "pendingAttachments": { "alias": "pendingAttachments"; "required": false; }; "PendingArtifactId": { "alias": "PendingArtifactId"; "required": false; }; "pendingArtifactId": { "alias": "pendingArtifactId"; "required": false; }; "PendingArtifactVersionNumber": { "alias": "PendingArtifactVersionNumber"; "required": false; }; "pendingArtifactVersionNumber": { "alias": "pendingArtifactVersionNumber"; "required": false; }; "PendingArtifactConversationId": { "alias": "PendingArtifactConversationId"; "required": false; }; "pendingArtifactConversationId": { "alias": "pendingArtifactConversationId"; "required": false; }; "OverlayMode": { "alias": "OverlayMode"; "required": false; }; "overlayMode": { "alias": "overlayMode"; "required": false; }; "ShowExportButton": { "alias": "ShowExportButton"; "required": false; }; "showExportButton": { "alias": "showExportButton"; "required": false; }; "ExportButtonLabel": { "alias": "ExportButtonLabel"; "required": false; }; "exportButtonLabel": { "alias": "exportButtonLabel"; "required": false; }; "ExportButtonIcon": { "alias": "ExportButtonIcon"; "required": false; }; "exportButtonIcon": { "alias": "exportButtonIcon"; "required": false; }; "ExportBranding": { "alias": "ExportBranding"; "required": false; }; "exportBranding": { "alias": "exportBranding"; "required": false; }; "ShowShareButton": { "alias": "ShowShareButton"; "required": false; }; "showShareButton": { "alias": "showShareButton"; "required": false; }; "ShowArtifactIndicator": { "alias": "ShowArtifactIndicator"; "required": false; }; "showArtifactIndicator": { "alias": "showArtifactIndicator"; "required": false; }; "AppContext": { "alias": "AppContext"; "required": false; }; "appContext": { "alias": "appContext"; "required": false; }; "DefaultAgentId": { "alias": "DefaultAgentId"; "required": false; }; "defaultAgentId": { "alias": "defaultAgentId"; "required": false; }; "AgentReplyMode": { "alias": "AgentReplyMode"; "required": false; }; "AllowedAgentIDs": { "alias": "AllowedAgentIDs"; "required": false; }; "MentionPeople": { "alias": "MentionPeople"; "required": false; }; "AgentHistoryFrom": { "alias": "AgentHistoryFrom"; "required": false; }; "AgentTurnHandler": { "alias": "AgentTurnHandler"; "required": false; }; "AutoNameConversation": { "alias": "AutoNameConversation"; "required": false; }; "EnableDecisionRouting": { "alias": "EnableDecisionRouting"; "required": false; }; "ApplicationScope": { "alias": "ApplicationScope"; "required": false; }; "applicationScope": { "alias": "applicationScope"; "required": false; }; "ApplicationId": { "alias": "ApplicationId"; "required": false; }; "applicationId": { "alias": "applicationId"; "required": false; }; "LinkedEntityId": { "alias": "LinkedEntityId"; "required": false; }; "linkedEntityId": { "alias": "linkedEntityId"; "required": false; }; "LinkedRecordId": { "alias": "LinkedRecordId"; "required": false; }; "linkedRecordId": { "alias": "linkedRecordId"; "required": false; }; "ShowAgentPicker": { "alias": "ShowAgentPicker"; "required": false; }; "showAgentPicker": { "alias": "showAgentPicker"; "required": false; }; "ShowAgentModePicker": { "alias": "ShowAgentModePicker"; "required": false; }; "showAgentModePicker": { "alias": "showAgentModePicker"; "required": false; }; "EmptyStateGreeting": { "alias": "EmptyStateGreeting"; "required": false; }; "emptyStateGreeting": { "alias": "emptyStateGreeting"; "required": false; }; "ShowSidebarToggle": { "alias": "ShowSidebarToggle"; "required": false; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; }; "ShowAgentCharacter": { "alias": "ShowAgentCharacter"; "required": false; }; "showAgentCharacter": { "alias": "showAgentCharacter"; "required": false; }; "AgentCharacterConfig": { "alias": "AgentCharacterConfig"; "required": false; }; "agentCharacterConfig": { "alias": "agentCharacterConfig"; "required": false; }; "EmptyStateConfig": { "alias": "EmptyStateConfig"; "required": false; }; "emptyStateConfig": { "alias": "emptyStateConfig"; "required": false; }; "ShowDemonstrationSurface": { "alias": "ShowDemonstrationSurface"; "required": false; }; "showDemonstrationSurface": { "alias": "showDemonstrationSurface"; "required": false; }; "DemonstrationSurfaceContent": { "alias": "DemonstrationSurfaceContent"; "required": false; }; "demonstrationSurfaceContent": { "alias": "demonstrationSurfaceContent"; "required": false; }; "ComposerDraft": { "alias": "ComposerDraft"; "required": false; }; "composerDraft": { "alias": "composerDraft"; "required": false; }; "ComposerAgentMention": { "alias": "ComposerAgentMention"; "required": false; }; "composerAgentMention": { "alias": "composerAgentMention"; "required": false; }; }, { "BeforeAgentTurn": "BeforeAgentTurn"; "beforeAgentTurn": "beforeAgentTurn"; "AfterAgentTurn": "AfterAgentTurn"; "afterAgentTurn": "afterAgentTurn"; "BeforeToolInvoked": "BeforeToolInvoked"; "beforeToolInvoked": "beforeToolInvoked"; "AfterToolInvoked": "AfterToolInvoked"; "afterToolInvoked": "afterToolInvoked"; "BeforeResponseFormSubmitted": "BeforeResponseFormSubmitted"; "beforeResponseFormSubmitted": "beforeResponseFormSubmitted"; "AfterResponseFormSubmitted": "AfterResponseFormSubmitted"; "afterResponseFormSubmitted": "afterResponseFormSubmitted"; "BeforeStopClicked": "BeforeStopClicked"; "AfterStopClicked": "AfterStopClicked"; "SessionStarted": "SessionStarted"; "sessionStarted": "sessionStarted"; "SessionChannelStateChanged": "SessionChannelStateChanged"; "sessionChannelStateChanged": "sessionChannelStateChanged"; "SessionEnded": "SessionEnded"; "sessionEnded": "sessionEnded"; "ConversationRenamed": "ConversationRenamed"; "conversationRenamed": "conversationRenamed"; "OpenEntityRecord": "OpenEntityRecord"; "openEntityRecord": "openEntityRecord"; "RealtimeConversationReady": "RealtimeConversationReady"; "realtimeConversationReady": "realtimeConversationReady"; "navigationRequest": "navigationRequest"; "TaskClicked": "TaskClicked"; "taskClicked": "taskClicked"; "ArtifactLinkClicked": "ArtifactLinkClicked"; "artifactLinkClicked": "artifactLinkClicked"; "SidebarToggleClicked": "SidebarToggleClicked"; "sidebarToggleClicked": "sidebarToggleClicked"; "ConversationCreated": "ConversationCreated"; "conversationCreated": "conversationCreated"; "PendingArtifactConsumed": "PendingArtifactConsumed"; "pendingArtifactConsumed": "pendingArtifactConsumed"; "PendingMessageConsumed": "PendingMessageConsumed"; "pendingMessageConsumed": "pendingMessageConsumed"; "PendingMessageRequested": "PendingMessageRequested"; "pendingMessageRequested": "pendingMessageRequested"; "ComposerDraftConsumed": "ComposerDraftConsumed"; "composerDraftConsumed": "composerDraftConsumed"; "ComposerAgentMentionConsumed": "ComposerAgentMentionConsumed"; "composerAgentMentionConsumed": "composerAgentMentionConsumed"; }, ["chatSlotChildren"], never, false, never>;
2593
3191
  }
2594
3192
  //# sourceMappingURL=conversation-chat-area.component.d.ts.map