@memberjunction/ng-conversations 5.43.0 → 5.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +0 -1
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +56 -52
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  5. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +3 -1
  6. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact/artifact-share-modal.component.js +52 -52
  8. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  9. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  10. package/dist/lib/components/collection/collection-form-modal.component.js +10 -14
  11. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  12. package/dist/lib/components/collection/collection-share-modal.component.d.ts +3 -1
  13. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  14. package/dist/lib/components/collection/collection-share-modal.component.js +56 -56
  15. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  16. package/dist/lib/components/collection/collection-tree.component.d.ts +3 -1
  17. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  18. package/dist/lib/components/collection/collection-tree.component.js +10 -7
  19. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  20. package/dist/lib/components/collection/collection-view.component.d.ts +3 -1
  21. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  22. package/dist/lib/components/collection/collection-view.component.js +29 -41
  23. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  24. package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -0
  25. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  26. package/dist/lib/components/collection/collections-full-view.component.js +134 -166
  27. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  28. package/dist/lib/components/composer/ai-composer.component.d.ts +103 -0
  29. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -0
  30. package/dist/lib/components/composer/ai-composer.component.js +263 -0
  31. package/dist/lib/components/composer/ai-composer.component.js.map +1 -0
  32. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +76 -12
  33. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  34. package/dist/lib/components/conversation/conversation-chat-area.component.js +522 -158
  35. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  36. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +1 -1
  37. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  38. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  39. package/dist/lib/components/conversation/pinned-messages-panel.component.js +6 -9
  40. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  41. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  42. package/dist/lib/components/library/library-full-view.component.js +20 -24
  43. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  44. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  45. package/dist/lib/components/members/members-modal.component.js +10 -11
  46. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  47. package/dist/lib/components/message/message-input.component.d.ts +87 -23
  48. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  49. package/dist/lib/components/message/message-input.component.js +245 -158
  50. package/dist/lib/components/message/message-input.component.js.map +1 -1
  51. package/dist/lib/components/message/message-item.component.d.ts +11 -3
  52. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  53. package/dist/lib/components/message/message-item.component.js +73 -21
  54. package/dist/lib/components/message/message-item.component.js.map +1 -1
  55. package/dist/lib/components/message/message-list.component.js +6 -9
  56. package/dist/lib/components/message/message-list.component.js.map +1 -1
  57. package/dist/lib/components/overlay/chat-overlay.component.d.ts +4 -1
  58. package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
  59. package/dist/lib/components/overlay/chat-overlay.component.js +9 -4
  60. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  61. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +45 -0
  62. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
  63. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +10 -0
  64. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
  65. package/dist/lib/components/realtime/channels/client-context-channel.d.ts +46 -0
  66. package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -0
  67. package/dist/lib/components/realtime/channels/client-context-channel.js +174 -0
  68. package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -0
  69. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts +123 -0
  70. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts.map +1 -0
  71. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +397 -0
  72. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -0
  73. package/dist/lib/components/realtime/media/media-channel-state.d.ts +103 -0
  74. package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -0
  75. package/dist/lib/components/realtime/media/media-channel-state.js +143 -0
  76. package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -0
  77. package/dist/lib/components/realtime/media/media-channel-tools.d.ts +24 -0
  78. package/dist/lib/components/realtime/media/media-channel-tools.d.ts.map +1 -0
  79. package/dist/lib/components/realtime/media/media-channel-tools.js +107 -0
  80. package/dist/lib/components/realtime/media/media-channel-tools.js.map +1 -0
  81. package/dist/lib/components/realtime/media/media-channel.d.ts +89 -0
  82. package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -0
  83. package/dist/lib/components/realtime/media/media-channel.js +253 -0
  84. package/dist/lib/components/realtime/media/media-channel.js.map +1 -0
  85. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +141 -0
  86. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -0
  87. package/dist/lib/components/realtime/media/realtime-media-surface.component.js +574 -0
  88. package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -0
  89. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +59 -14
  90. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
  91. package/dist/lib/components/realtime/realtime-activity-rail.component.js +277 -74
  92. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  93. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +28 -27
  94. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
  95. package/dist/lib/components/realtime/realtime-agent-banner.component.js +144 -143
  96. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
  97. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -0
  98. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
  99. package/dist/lib/components/realtime/realtime-agent-picker.component.js +105 -43
  100. package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
  101. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +2 -2
  102. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
  103. package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
  104. package/dist/lib/components/realtime/realtime-composer.component.d.ts +41 -7
  105. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
  106. package/dist/lib/components/realtime/realtime-composer.component.js +216 -102
  107. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
  108. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +0 -2
  109. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
  110. package/dist/lib/components/realtime/realtime-delegation-card.component.js +67 -71
  111. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  112. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +364 -44
  113. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
  114. package/dist/lib/components/realtime/realtime-session-overlay.component.js +839 -153
  115. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  116. package/dist/lib/components/realtime/realtime-session-state.d.ts +5 -5
  117. package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
  118. package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
  119. package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts +70 -0
  120. package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts.map +1 -0
  121. package/dist/lib/components/realtime/realtime-surface-tab-style.js +115 -0
  122. package/dist/lib/components/realtime/realtime-surface-tab-style.js.map +1 -0
  123. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +55 -57
  124. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
  125. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +165 -143
  126. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  127. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +80 -71
  128. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
  129. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +83 -113
  130. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  131. package/dist/lib/components/realtime/realtime-ui-config.d.ts +270 -0
  132. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -0
  133. package/dist/lib/components/realtime/realtime-ui-config.js +212 -0
  134. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -0
  135. package/dist/lib/components/search/search-panel.component.d.ts +2 -0
  136. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  137. package/dist/lib/components/search/search-panel.component.js +92 -101
  138. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  139. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  140. package/dist/lib/components/share/share-modal.component.js +10 -11
  141. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  142. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  143. package/dist/lib/components/shared/user-picker.component.js +12 -15
  144. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  145. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +11 -3
  146. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  147. package/dist/lib/components/sidebar/conversation-sidebar.component.js +34 -10
  148. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  149. package/dist/lib/components/sidebar/routines-section.component.d.ts +73 -0
  150. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -0
  151. package/dist/lib/components/sidebar/routines-section.component.js +211 -0
  152. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -0
  153. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +12 -0
  154. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  155. package/dist/lib/components/tasks/tasks-dropdown.component.js +37 -1
  156. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  157. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +16 -5
  158. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  159. package/dist/lib/components/workspace/conversation-workspace.component.js +51 -31
  160. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  161. package/dist/lib/composer-plugins/agent-mention.provider.d.ts +16 -0
  162. package/dist/lib/composer-plugins/agent-mention.provider.d.ts.map +1 -0
  163. package/dist/lib/composer-plugins/agent-mention.provider.js +28 -0
  164. package/dist/lib/composer-plugins/agent-mention.provider.js.map +1 -0
  165. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +20 -0
  166. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -0
  167. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +32 -0
  168. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -0
  169. package/dist/lib/composer-plugins/load-composer-plugins.d.ts +9 -0
  170. package/dist/lib/composer-plugins/load-composer-plugins.d.ts.map +1 -0
  171. package/dist/lib/composer-plugins/load-composer-plugins.js +17 -0
  172. package/dist/lib/composer-plugins/load-composer-plugins.js.map +1 -0
  173. package/dist/lib/composer-plugins/record-mention.provider.d.ts +14 -0
  174. package/dist/lib/composer-plugins/record-mention.provider.d.ts.map +1 -0
  175. package/dist/lib/composer-plugins/record-mention.provider.js +26 -0
  176. package/dist/lib/composer-plugins/record-mention.provider.js.map +1 -0
  177. package/dist/lib/composer-plugins/skill-command.provider.d.ts +15 -0
  178. package/dist/lib/composer-plugins/skill-command.provider.d.ts.map +1 -0
  179. package/dist/lib/composer-plugins/skill-command.provider.js +27 -0
  180. package/dist/lib/composer-plugins/skill-command.provider.js.map +1 -0
  181. package/dist/lib/conversations.module.d.ts +68 -64
  182. package/dist/lib/conversations.module.d.ts.map +1 -1
  183. package/dist/lib/conversations.module.js +69 -18
  184. package/dist/lib/conversations.module.js.map +1 -1
  185. package/dist/lib/models/conversation-state.model.d.ts +6 -3
  186. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  187. package/dist/lib/models/conversation-state.model.js.map +1 -1
  188. package/dist/lib/services/conversation-agent.service.d.ts +9 -2
  189. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  190. package/dist/lib/services/conversation-agent.service.js +26 -2
  191. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  192. package/dist/lib/services/conversation-attachment.service.d.ts +1 -1
  193. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  194. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  195. package/dist/lib/services/mention-autocomplete.service.d.ts +42 -19
  196. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  197. package/dist/lib/services/mention-autocomplete.service.js +113 -18
  198. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  199. package/dist/lib/services/realtime-audio-recorder.d.ts +143 -0
  200. package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -0
  201. package/dist/lib/services/realtime-audio-recorder.js +379 -0
  202. package/dist/lib/services/realtime-audio-recorder.js.map +1 -0
  203. package/dist/lib/services/realtime-pcm-wav.d.ts +75 -0
  204. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -0
  205. package/dist/lib/services/realtime-pcm-wav.js +205 -0
  206. package/dist/lib/services/realtime-pcm-wav.js.map +1 -0
  207. package/dist/lib/services/realtime-session-review.service.d.ts +28 -1
  208. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
  209. package/dist/lib/services/realtime-session-review.service.js +12 -3
  210. package/dist/lib/services/realtime-session-review.service.js.map +1 -1
  211. package/dist/lib/services/realtime-session.service.d.ts +210 -20
  212. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  213. package/dist/lib/services/realtime-session.service.js +452 -21
  214. package/dist/lib/services/realtime-session.service.js.map +1 -1
  215. package/dist/lib/services/realtime-sessions-adapter.js +1 -1
  216. package/dist/lib/services/realtime-sessions-adapter.js.map +1 -1
  217. package/dist/lib/services/ui-command-handler.service.d.ts +7 -2
  218. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  219. package/dist/lib/services/ui-command-handler.service.js +6 -2
  220. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  221. package/dist/lib/utils/plan-mode-preference.d.ts +62 -0
  222. package/dist/lib/utils/plan-mode-preference.d.ts.map +1 -0
  223. package/dist/lib/utils/plan-mode-preference.js +130 -0
  224. package/dist/lib/utils/plan-mode-preference.js.map +1 -0
  225. package/dist/public-api.d.ts +29 -3
  226. package/dist/public-api.d.ts.map +1 -1
  227. package/dist/public-api.js +46 -3
  228. package/dist/public-api.js.map +1 -1
  229. package/package.json +30 -26
  230. package/dist/__tests__/attachment-badge.test.d.ts +0 -2
  231. package/dist/__tests__/attachment-badge.test.d.ts.map +0 -1
  232. package/dist/__tests__/attachment-badge.test.js +0 -66
  233. package/dist/__tests__/attachment-badge.test.js.map +0 -1
  234. package/dist/__tests__/channel-optional-surface.test.d.ts +0 -2
  235. package/dist/__tests__/channel-optional-surface.test.d.ts.map +0 -1
  236. package/dist/__tests__/channel-optional-surface.test.js +0 -53
  237. package/dist/__tests__/channel-optional-surface.test.js.map +0 -1
  238. package/dist/__tests__/chat-events.test.d.ts +0 -14
  239. package/dist/__tests__/chat-events.test.d.ts.map +0 -1
  240. package/dist/__tests__/chat-events.test.js +0 -109
  241. package/dist/__tests__/chat-events.test.js.map +0 -1
  242. package/dist/__tests__/collections-full-view.test.d.ts +0 -2
  243. package/dist/__tests__/collections-full-view.test.d.ts.map +0 -1
  244. package/dist/__tests__/collections-full-view.test.js +0 -225
  245. package/dist/__tests__/collections-full-view.test.js.map +0 -1
  246. package/dist/__tests__/conversation-cache.test.d.ts +0 -2
  247. package/dist/__tests__/conversation-cache.test.d.ts.map +0 -1
  248. package/dist/__tests__/conversation-cache.test.js +0 -233
  249. package/dist/__tests__/conversation-cache.test.js.map +0 -1
  250. package/dist/__tests__/conversation-naming.test.d.ts +0 -2
  251. package/dist/__tests__/conversation-naming.test.d.ts.map +0 -1
  252. package/dist/__tests__/conversation-naming.test.js +0 -110
  253. package/dist/__tests__/conversation-naming.test.js.map +0 -1
  254. package/dist/__tests__/delegation-result-parser.test.d.ts +0 -2
  255. package/dist/__tests__/delegation-result-parser.test.d.ts.map +0 -1
  256. package/dist/__tests__/delegation-result-parser.test.js +0 -107
  257. package/dist/__tests__/delegation-result-parser.test.js.map +0 -1
  258. package/dist/__tests__/distinct-artifacts.test.d.ts +0 -2
  259. package/dist/__tests__/distinct-artifacts.test.d.ts.map +0 -1
  260. package/dist/__tests__/distinct-artifacts.test.js +0 -56
  261. package/dist/__tests__/distinct-artifacts.test.js.map +0 -1
  262. package/dist/__tests__/event-wiring.test.d.ts +0 -15
  263. package/dist/__tests__/event-wiring.test.d.ts.map +0 -1
  264. package/dist/__tests__/event-wiring.test.js +0 -100
  265. package/dist/__tests__/event-wiring.test.js.map +0 -1
  266. package/dist/__tests__/index.test.d.ts +0 -2
  267. package/dist/__tests__/index.test.d.ts.map +0 -1
  268. package/dist/__tests__/index.test.js +0 -7
  269. package/dist/__tests__/index.test.js.map +0 -1
  270. package/dist/__tests__/narration-template.test.d.ts +0 -2
  271. package/dist/__tests__/narration-template.test.d.ts.map +0 -1
  272. package/dist/__tests__/narration-template.test.js +0 -76
  273. package/dist/__tests__/narration-template.test.js.map +0 -1
  274. package/dist/__tests__/notification-model.test.d.ts +0 -2
  275. package/dist/__tests__/notification-model.test.d.ts.map +0 -1
  276. package/dist/__tests__/notification-model.test.js +0 -68
  277. package/dist/__tests__/notification-model.test.js.map +0 -1
  278. package/dist/__tests__/realtime-agent-picker-models.test.d.ts +0 -2
  279. package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +0 -1
  280. package/dist/__tests__/realtime-agent-picker-models.test.js +0 -49
  281. package/dist/__tests__/realtime-agent-picker-models.test.js.map +0 -1
  282. package/dist/__tests__/realtime-audio-visuals.test.d.ts +0 -2
  283. package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +0 -1
  284. package/dist/__tests__/realtime-audio-visuals.test.js +0 -123
  285. package/dist/__tests__/realtime-audio-visuals.test.js.map +0 -1
  286. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +0 -2
  287. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +0 -1
  288. package/dist/__tests__/realtime-delegation-card-cancel.test.js +0 -48
  289. package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +0 -1
  290. package/dist/__tests__/realtime-disclosure.test.d.ts +0 -2
  291. package/dist/__tests__/realtime-disclosure.test.d.ts.map +0 -1
  292. package/dist/__tests__/realtime-disclosure.test.js +0 -164
  293. package/dist/__tests__/realtime-disclosure.test.js.map +0 -1
  294. package/dist/__tests__/realtime-pairing.test.d.ts +0 -2
  295. package/dist/__tests__/realtime-pairing.test.d.ts.map +0 -1
  296. package/dist/__tests__/realtime-pairing.test.js +0 -207
  297. package/dist/__tests__/realtime-pairing.test.js.map +0 -1
  298. package/dist/__tests__/realtime-review-lifecycle.test.d.ts +0 -2
  299. package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +0 -1
  300. package/dist/__tests__/realtime-review-lifecycle.test.js +0 -154
  301. package/dist/__tests__/realtime-review-lifecycle.test.js.map +0 -1
  302. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +0 -2
  303. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +0 -1
  304. package/dist/__tests__/realtime-session-cancel-usage.test.js +0 -230
  305. package/dist/__tests__/realtime-session-cancel-usage.test.js.map +0 -1
  306. package/dist/__tests__/realtime-session-channels.test.d.ts +0 -2
  307. package/dist/__tests__/realtime-session-channels.test.d.ts.map +0 -1
  308. package/dist/__tests__/realtime-session-channels.test.js +0 -252
  309. package/dist/__tests__/realtime-session-channels.test.js.map +0 -1
  310. package/dist/__tests__/realtime-session-client-tools.test.d.ts +0 -2
  311. package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +0 -1
  312. package/dist/__tests__/realtime-session-client-tools.test.js +0 -103
  313. package/dist/__tests__/realtime-session-client-tools.test.js.map +0 -1
  314. package/dist/__tests__/realtime-session-minimized.test.d.ts +0 -2
  315. package/dist/__tests__/realtime-session-minimized.test.d.ts.map +0 -1
  316. package/dist/__tests__/realtime-session-minimized.test.js +0 -32
  317. package/dist/__tests__/realtime-session-minimized.test.js.map +0 -1
  318. package/dist/__tests__/realtime-session-mint.test.d.ts +0 -2
  319. package/dist/__tests__/realtime-session-mint.test.d.ts.map +0 -1
  320. package/dist/__tests__/realtime-session-mint.test.js +0 -69
  321. package/dist/__tests__/realtime-session-mint.test.js.map +0 -1
  322. package/dist/__tests__/realtime-session-policy.test.d.ts +0 -2
  323. package/dist/__tests__/realtime-session-policy.test.d.ts.map +0 -1
  324. package/dist/__tests__/realtime-session-policy.test.js +0 -303
  325. package/dist/__tests__/realtime-session-policy.test.js.map +0 -1
  326. package/dist/__tests__/realtime-session-review.service.test.d.ts +0 -2
  327. package/dist/__tests__/realtime-session-review.service.test.d.ts.map +0 -1
  328. package/dist/__tests__/realtime-session-review.service.test.js +0 -743
  329. package/dist/__tests__/realtime-session-review.service.test.js.map +0 -1
  330. package/dist/__tests__/realtime-session-state.test.d.ts +0 -2
  331. package/dist/__tests__/realtime-session-state.test.d.ts.map +0 -1
  332. package/dist/__tests__/realtime-session-state.test.js +0 -83
  333. package/dist/__tests__/realtime-session-state.test.js.map +0 -1
  334. package/dist/__tests__/realtime-session-timeline-card.test.d.ts +0 -2
  335. package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +0 -1
  336. package/dist/__tests__/realtime-session-timeline-card.test.js +0 -106
  337. package/dist/__tests__/realtime-session-timeline-card.test.js.map +0 -1
  338. package/dist/__tests__/realtime-session-timeline.test.d.ts +0 -2
  339. package/dist/__tests__/realtime-session-timeline.test.d.ts.map +0 -1
  340. package/dist/__tests__/realtime-session-timeline.test.js +0 -142
  341. package/dist/__tests__/realtime-session-timeline.test.js.map +0 -1
  342. package/dist/__tests__/realtime-sessions-adapter.test.d.ts +0 -19
  343. package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +0 -1
  344. package/dist/__tests__/realtime-sessions-adapter.test.js +0 -188
  345. package/dist/__tests__/realtime-sessions-adapter.test.js.map +0 -1
  346. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +0 -2
  347. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +0 -1
  348. package/dist/__tests__/realtime-surface-panel-prefs.test.js +0 -100
  349. package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +0 -1
  350. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +0 -2
  351. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +0 -1
  352. package/dist/__tests__/realtime-surface-tabs-model.test.js +0 -193
  353. package/dist/__tests__/realtime-surface-tabs-model.test.js.map +0 -1
  354. package/dist/__tests__/remote-browser-audio-player.test.d.ts +0 -2
  355. package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +0 -1
  356. package/dist/__tests__/remote-browser-audio-player.test.js +0 -137
  357. package/dist/__tests__/remote-browser-audio-player.test.js.map +0 -1
  358. package/dist/__tests__/remote-browser-channel.test.d.ts +0 -2
  359. package/dist/__tests__/remote-browser-channel.test.d.ts.map +0 -1
  360. package/dist/__tests__/remote-browser-channel.test.js +0 -585
  361. package/dist/__tests__/remote-browser-channel.test.js.map +0 -1
  362. package/dist/__tests__/search-service.test.d.ts +0 -2
  363. package/dist/__tests__/search-service.test.d.ts.map +0 -1
  364. package/dist/__tests__/search-service.test.js +0 -114
  365. package/dist/__tests__/search-service.test.js.map +0 -1
  366. package/dist/__tests__/slot-defaults.test.d.ts +0 -24
  367. package/dist/__tests__/slot-defaults.test.d.ts.map +0 -1
  368. package/dist/__tests__/slot-defaults.test.js +0 -63
  369. package/dist/__tests__/slot-defaults.test.js.map +0 -1
  370. package/dist/__tests__/toast-service.test.d.ts +0 -2
  371. package/dist/__tests__/toast-service.test.d.ts.map +0 -1
  372. package/dist/__tests__/toast-service.test.js +0 -143
  373. package/dist/__tests__/toast-service.test.js.map +0 -1
  374. package/dist/__tests__/user-authorization.test.d.ts +0 -2
  375. package/dist/__tests__/user-authorization.test.d.ts.map +0 -1
  376. package/dist/__tests__/user-authorization.test.js +0 -97
  377. package/dist/__tests__/user-authorization.test.js.map +0 -1
  378. package/dist/__tests__/voice-session-narration.test.d.ts +0 -2
  379. package/dist/__tests__/voice-session-narration.test.d.ts.map +0 -1
  380. package/dist/__tests__/voice-session-narration.test.js +0 -609
  381. package/dist/__tests__/voice-session-narration.test.js.map +0 -1
  382. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +0 -2
  383. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +0 -1
  384. package/dist/__tests__/whiteboard-artifact-viewer.test.js +0 -101
  385. package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +0 -1
  386. package/dist/__tests__/whiteboard-channel.test.d.ts +0 -2
  387. package/dist/__tests__/whiteboard-channel.test.d.ts.map +0 -1
  388. package/dist/__tests__/whiteboard-channel.test.js +0 -260
  389. package/dist/__tests__/whiteboard-channel.test.js.map +0 -1
  390. package/dist/__tests__/whiteboard-restore-state.test.d.ts +0 -2
  391. package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +0 -1
  392. package/dist/__tests__/whiteboard-restore-state.test.js +0 -108
  393. package/dist/__tests__/whiteboard-restore-state.test.js.map +0 -1
  394. package/dist/lib/components/mention/mention-dropdown.component.d.ts +0 -53
  395. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +0 -1
  396. package/dist/lib/components/mention/mention-dropdown.component.js +0 -276
  397. package/dist/lib/components/mention/mention-dropdown.component.js.map +0 -1
  398. package/dist/lib/components/mention/mention-editor.component.d.ts +0 -256
  399. package/dist/lib/components/mention/mention-editor.component.d.ts.map +0 -1
  400. package/dist/lib/components/mention/mention-editor.component.js +0 -1233
  401. package/dist/lib/components/mention/mention-editor.component.js.map +0 -1
  402. package/dist/lib/components/message/message-input-box.component.d.ts +0 -137
  403. package/dist/lib/components/message/message-input-box.component.d.ts.map +0 -1
  404. package/dist/lib/components/message/message-input-box.component.js +0 -321
  405. package/dist/lib/components/message/message-input-box.component.js.map +0 -1
@@ -1,9 +1,14 @@
1
1
  import { Component, EventEmitter, Input, Output, ChangeDetectorRef, inject } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { AngularSplitModule } from 'angular-split';
4
+ import { UserInfoEngine } from '@memberjunction/core-entities';
5
+ import { ArtifactsModule } from '@memberjunction/ng-artifacts';
3
6
  import { FriendlyStepLabel, FormatElapsed } from './realtime-session-state';
7
+ import { ACTIVITY_SPLIT_DEFAULT_PERCENT, ACTIVITY_SPLIT_PREF_KEY, ClampActivitySplitPercent, ParseActivitySplitPercent, SerializeActivitySplitPercent } from './realtime-surface-tab-style';
4
8
  import * as i0 from "@angular/core";
5
9
  import * as i1 from "@angular/common";
6
- const _forTrack0 = ($index, $item) => $item.ArtifactVersionID;
10
+ import * as i2 from "angular-split";
11
+ import * as i3 from "@memberjunction/ng-artifacts";
7
12
  function RealtimeActivityRailComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
8
13
  i0.ɵɵelementStart(0, "span", 5);
9
14
  i0.ɵɵelement(1, "i", 6);
@@ -28,133 +33,247 @@ function RealtimeActivityRailComponent_Conditional_1_Template(rf, ctx) { if (rf
28
33
  i0.ɵɵadvance();
29
34
  i0.ɵɵconditional(!ctx_r1.Collapsed ? 3 : -1);
30
35
  } }
31
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "span", 12);
33
- i0.ɵɵelement(1, "i", 18);
36
+ function RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
37
+ const _r4 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "mj-artifact-message-card", 20);
39
+ i0.ɵɵlistener("actionPerformed", function RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_1_Template_mj_artifact_message_card_actionPerformed_0_listener() { i0.ɵɵrestoreView(_r4); const artifact_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenArtifact(artifact_r5)); });
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const artifact_r5 = i0.ɵɵnextContext().$implicit;
43
+ const ctx_r1 = i0.ɵɵnextContext(3);
44
+ i0.ɵɵproperty("artifactId", artifact_r5.ArtifactID)("currentUser", ctx_r1.CurrentUser);
45
+ } }
46
+ function RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
47
+ const _r6 = i0.ɵɵgetCurrentView();
48
+ i0.ɵɵelementStart(0, "button", 21);
49
+ i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const artifact_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenArtifact(artifact_r5)); });
50
+ i0.ɵɵelement(1, "i", 22);
51
+ i0.ɵɵelementStart(2, "span");
52
+ i0.ɵɵtext(3);
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵelement(4, "i", 23);
55
+ i0.ɵɵelementEnd();
56
+ } if (rf & 2) {
57
+ const artifact_r5 = i0.ɵɵnextContext().$implicit;
58
+ i0.ɵɵproperty("title", "View " + artifact_r5.Name);
59
+ i0.ɵɵadvance(3);
60
+ i0.ɵɵtextInterpolate(artifact_r5.Name);
61
+ } }
62
+ function RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelementStart(0, "div", 17);
64
+ i0.ɵɵconditionalCreate(1, RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_1_Template, 1, 2, "mj-artifact-message-card", 18)(2, RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Conditional_2_Template, 5, 2, "button", 19);
65
+ i0.ɵɵelementEnd();
66
+ } if (rf & 2) {
67
+ const artifact_r5 = ctx.$implicit;
68
+ const ctx_r1 = i0.ɵɵnextContext(3);
69
+ i0.ɵɵclassProp("act-card__artifact--open", ctx_r1.IsArtifactOpen(artifact_r5));
70
+ i0.ɵɵadvance();
71
+ i0.ɵɵconditional(ctx_r1.CurrentUser ? 1 : 2);
72
+ } }
73
+ function RealtimeActivityRailComponent_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 14);
75
+ i0.ɵɵelement(2, "i", 15);
76
+ i0.ɵɵtext(3, " Session artifacts ");
77
+ i0.ɵɵelementEnd();
78
+ i0.ɵɵrepeaterCreate(4, RealtimeActivityRailComponent_Conditional_2_Conditional_3_For_5_Template, 3, 3, "div", 16, i0.ɵɵcomponentInstance().TrackArtifact, true);
79
+ i0.ɵɵelementEnd();
80
+ } if (rf & 2) {
81
+ const ctx_r1 = i0.ɵɵnextContext(2);
82
+ i0.ɵɵadvance(4);
83
+ i0.ɵɵrepeater(ctx_r1.ExtraArtifacts);
84
+ } }
85
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "span", 27);
87
+ i0.ɵɵelement(1, "i", 32);
34
88
  i0.ɵɵtext(2, " Running ");
35
89
  i0.ɵɵelementEnd();
36
90
  } }
37
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "span", 13);
39
- i0.ɵɵelement(1, "i", 19);
91
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
92
+ i0.ɵɵelementStart(0, "span", 28);
93
+ i0.ɵɵelement(1, "i", 33);
40
94
  i0.ɵɵtext(2, " Done ");
41
95
  i0.ɵɵelementEnd();
42
96
  } }
43
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "span", 14);
45
- i0.ɵɵelement(1, "i", 20);
97
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
98
+ i0.ɵɵelementStart(0, "span", 29);
99
+ i0.ɵɵelement(1, "i", 34);
46
100
  i0.ɵɵtext(2, " Failed ");
47
101
  i0.ɵɵelementEnd();
48
102
  } }
49
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "div", 21);
51
- i0.ɵɵelement(1, "i", 23);
103
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 35);
105
+ i0.ɵɵelement(1, "i", 37);
52
106
  i0.ɵɵtext(2);
53
107
  i0.ɵɵelementEnd();
54
108
  } if (rf & 2) {
55
109
  i0.ɵɵadvance(2);
56
110
  i0.ɵɵtextInterpolate1(" ", ctx, " ");
57
111
  } }
58
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "div", 22);
112
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵelementStart(0, "div", 36);
60
114
  i0.ɵɵtext(1);
61
115
  i0.ɵɵelementEnd();
62
116
  } if (rf & 2) {
63
- const card_r3 = i0.ɵɵnextContext(2).$implicit;
117
+ const card_r7 = i0.ɵɵnextContext(2).$implicit;
64
118
  const ctx_r1 = i0.ɵɵnextContext(2);
65
119
  i0.ɵɵadvance();
66
- i0.ɵɵtextInterpolate(ctx_r1.Preview(card_r3));
120
+ i0.ɵɵtextInterpolate(ctx_r1.Preview(card_r7));
67
121
  } }
68
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵconditionalCreate(0, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Conditional_0_Template, 3, 1, "div", 21);
70
- i0.ɵɵconditionalCreate(1, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Conditional_1_Template, 2, 1, "div", 22);
122
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
123
+ i0.ɵɵconditionalCreate(0, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Conditional_0_Template, 3, 1, "div", 35);
124
+ i0.ɵɵconditionalCreate(1, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Conditional_1_Template, 2, 1, "div", 36);
71
125
  } if (rf & 2) {
72
126
  let tmp_12_0;
73
- const card_r3 = i0.ɵɵnextContext().$implicit;
127
+ const card_r7 = i0.ɵɵnextContext().$implicit;
74
128
  const ctx_r1 = i0.ɵɵnextContext(2);
75
- i0.ɵɵconditional((tmp_12_0 = ctx_r1.Elapsed(card_r3)) ? 0 : -1, tmp_12_0);
129
+ i0.ɵɵconditional((tmp_12_0 = ctx_r1.Elapsed(card_r7)) ? 0 : -1, tmp_12_0);
76
130
  i0.ɵɵadvance();
77
- i0.ɵɵconditional(ctx_r1.Preview(card_r3) ? 1 : -1);
131
+ i0.ɵɵconditional(ctx_r1.Preview(card_r7) ? 1 : -1);
78
132
  } }
79
- function RealtimeActivityRailComponent_Conditional_2_For_2_For_11_Template(rf, ctx) { if (rf & 1) {
80
- const _r4 = i0.ɵɵgetCurrentView();
81
- i0.ɵɵelementStart(0, "button", 24);
82
- i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_For_2_For_11_Template_button_click_0_listener() { const artifact_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenArtifact(artifact_r5)); });
83
- i0.ɵɵelement(1, "i", 25);
133
+ function RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
134
+ const _r8 = i0.ɵɵgetCurrentView();
135
+ i0.ɵɵelementStart(0, "mj-artifact-message-card", 20);
136
+ i0.ɵɵlistener("actionPerformed", function RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_1_Template_mj_artifact_message_card_actionPerformed_0_listener() { i0.ɵɵrestoreView(_r8); const artifact_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenArtifact(artifact_r9)); });
137
+ i0.ɵɵelementEnd();
138
+ } if (rf & 2) {
139
+ const artifact_r9 = i0.ɵɵnextContext().$implicit;
140
+ const ctx_r1 = i0.ɵɵnextContext(3);
141
+ i0.ɵɵproperty("artifactId", artifact_r9.ArtifactID)("currentUser", ctx_r1.CurrentUser);
142
+ } }
143
+ function RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
144
+ const _r10 = i0.ɵɵgetCurrentView();
145
+ i0.ɵɵelementStart(0, "button", 21);
146
+ i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const artifact_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenArtifact(artifact_r9)); });
147
+ i0.ɵɵelement(1, "i", 22);
84
148
  i0.ɵɵelementStart(2, "span");
85
- i0.ɵɵtext(3, "View");
149
+ i0.ɵɵtext(3);
86
150
  i0.ɵɵelementEnd();
87
- i0.ɵɵelement(4, "i", 26);
151
+ i0.ɵɵelement(4, "i", 23);
88
152
  i0.ɵɵelementEnd();
89
153
  } if (rf & 2) {
90
- const artifact_r5 = ctx.$implicit;
91
- i0.ɵɵproperty("title", "View " + artifact_r5.Name);
154
+ const artifact_r9 = i0.ɵɵnextContext().$implicit;
155
+ i0.ɵɵproperty("title", "View " + artifact_r9.Name);
156
+ i0.ɵɵadvance(3);
157
+ i0.ɵɵtextInterpolate(artifact_r9.Name);
92
158
  } }
93
- function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_12_Template(rf, ctx) { if (rf & 1) {
94
- const _r6 = i0.ɵɵgetCurrentView();
95
- i0.ɵɵelementStart(0, "button", 27);
96
- i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const card_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenRun(card_r3)); });
97
- i0.ɵɵelement(1, "i", 28);
159
+ function RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Template(rf, ctx) { if (rf & 1) {
160
+ i0.ɵɵelementStart(0, "div", 17);
161
+ i0.ɵɵconditionalCreate(1, RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_1_Template, 1, 2, "mj-artifact-message-card", 18)(2, RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Conditional_2_Template, 5, 2, "button", 19);
162
+ i0.ɵɵelementEnd();
163
+ } if (rf & 2) {
164
+ const artifact_r9 = ctx.$implicit;
165
+ const ctx_r1 = i0.ɵɵnextContext(3);
166
+ i0.ɵɵclassProp("act-card__artifact--open", ctx_r1.IsArtifactOpen(artifact_r9));
167
+ i0.ɵɵadvance();
168
+ i0.ɵɵconditional(ctx_r1.CurrentUser ? 1 : 2);
169
+ } }
170
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_12_Template(rf, ctx) { if (rf & 1) {
171
+ const _r11 = i0.ɵɵgetCurrentView();
172
+ i0.ɵɵelementStart(0, "button", 38);
173
+ i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const card_r7 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenRun(card_r7)); });
174
+ i0.ɵɵelement(1, "i", 39);
98
175
  i0.ɵɵelementStart(2, "span");
99
176
  i0.ɵɵtext(3, "Open run");
100
177
  i0.ɵɵelementEnd()();
101
178
  } }
102
- function RealtimeActivityRailComponent_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
103
- i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
179
+ function RealtimeActivityRailComponent_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 25)(2, "span", 26);
104
181
  i0.ɵɵtext(3);
105
182
  i0.ɵɵelementEnd();
106
- i0.ɵɵconditionalCreate(4, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_4_Template, 3, 0, "span", 12)(5, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_5_Template, 3, 0, "span", 13)(6, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_6_Template, 3, 0, "span", 14);
183
+ i0.ɵɵconditionalCreate(4, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_4_Template, 3, 0, "span", 27)(5, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_5_Template, 3, 0, "span", 28)(6, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_6_Template, 3, 0, "span", 29);
107
184
  i0.ɵɵelementEnd();
108
- i0.ɵɵelementStart(7, "div", 15);
185
+ i0.ɵɵelementStart(7, "div", 30);
109
186
  i0.ɵɵtext(8);
110
187
  i0.ɵɵelementEnd();
111
- i0.ɵɵconditionalCreate(9, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_9_Template, 2, 2);
112
- i0.ɵɵrepeaterCreate(10, RealtimeActivityRailComponent_Conditional_2_For_2_For_11_Template, 5, 1, "button", 16, _forTrack0);
113
- i0.ɵɵconditionalCreate(12, RealtimeActivityRailComponent_Conditional_2_For_2_Conditional_12_Template, 4, 0, "button", 17);
188
+ i0.ɵɵconditionalCreate(9, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_9_Template, 2, 2);
189
+ i0.ɵɵrepeaterCreate(10, RealtimeActivityRailComponent_Conditional_2_For_5_For_11_Template, 3, 3, "div", 16, i0.ɵɵcomponentInstance().TrackArtifact, true);
190
+ i0.ɵɵconditionalCreate(12, RealtimeActivityRailComponent_Conditional_2_For_5_Conditional_12_Template, 4, 0, "button", 31);
114
191
  i0.ɵɵelementEnd();
115
192
  } if (rf & 2) {
116
- const card_r3 = ctx.$implicit;
193
+ const card_r7 = ctx.$implicit;
117
194
  const ctx_r1 = i0.ɵɵnextContext(2);
118
- i0.ɵɵclassProp("act-card--running", !card_r3.Done)("act-card--done", card_r3.Done && card_r3.Success)("act-card--failed", card_r3.Done && !card_r3.Success);
195
+ i0.ɵɵclassProp("act-card--running", !card_r7.Done)("act-card--done", card_r7.Done && card_r7.Success)("act-card--failed", card_r7.Done && !card_r7.Success);
119
196
  i0.ɵɵadvance(3);
120
- i0.ɵɵtextInterpolate(card_r3.AgentName);
197
+ i0.ɵɵtextInterpolate(card_r7.AgentName);
121
198
  i0.ɵɵadvance();
122
- i0.ɵɵconditional(!card_r3.Done ? 4 : card_r3.Success ? 5 : 6);
199
+ i0.ɵɵconditional(!card_r7.Done ? 4 : card_r7.Success ? 5 : 6);
123
200
  i0.ɵɵadvance(4);
124
- i0.ɵɵtextInterpolate(ctx_r1.StepLabel(card_r3));
201
+ i0.ɵɵtextInterpolate(ctx_r1.StepLabel(card_r7));
125
202
  i0.ɵɵadvance();
126
- i0.ɵɵconditional(card_r3.Done ? 9 : -1);
203
+ i0.ɵɵconditional(card_r7.Done ? 9 : -1);
127
204
  i0.ɵɵadvance();
128
- i0.ɵɵrepeater(ctx_r1.CardArtifacts(card_r3));
205
+ i0.ɵɵrepeater(ctx_r1.CardArtifacts(card_r7));
129
206
  i0.ɵɵadvance(2);
130
- i0.ɵɵconditional(ctx_r1.ShowOpenRun(card_r3) ? 12 : -1);
207
+ i0.ɵɵconditional(ctx_r1.ShowOpenRun(card_r7) ? 12 : -1);
131
208
  } }
132
- function RealtimeActivityRailComponent_Conditional_2_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
133
- i0.ɵɵelementStart(0, "div", 8);
209
+ function RealtimeActivityRailComponent_Conditional_2_ForEmpty_6_Template(rf, ctx) { if (rf & 1) {
210
+ i0.ɵɵelementStart(0, "div", 12);
134
211
  i0.ɵɵtext(1, "Tool and agent calls will appear here as they run.");
135
212
  i0.ɵɵelementEnd();
136
213
  } }
214
+ function RealtimeActivityRailComponent_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
215
+ const _r12 = i0.ɵɵgetCurrentView();
216
+ i0.ɵɵelementStart(0, "as-split-area", 13)(1, "div", 40)(2, "div", 41)(3, "span", 42);
217
+ i0.ɵɵelement(4, "i", 22);
218
+ i0.ɵɵtext(5);
219
+ i0.ɵɵelementEnd();
220
+ i0.ɵɵelementStart(6, "button", 43);
221
+ i0.ɵɵlistener("click", function RealtimeActivityRailComponent_Conditional_2_Conditional_7_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseArtifact()); });
222
+ i0.ɵɵelement(7, "i", 34);
223
+ i0.ɵɵelementEnd()();
224
+ i0.ɵɵelementStart(8, "div", 44);
225
+ i0.ɵɵelement(9, "mj-artifact-viewer-panel", 45);
226
+ i0.ɵɵelementEnd()()();
227
+ } if (rf & 2) {
228
+ const artifact_r13 = ctx;
229
+ const ctx_r1 = i0.ɵɵnextContext(2);
230
+ i0.ɵɵproperty("size", ctx_r1.SplitArtifactPercent)("minSize", 25);
231
+ i0.ɵɵadvance(3);
232
+ i0.ɵɵproperty("title", artifact_r13.Name);
233
+ i0.ɵɵadvance(2);
234
+ i0.ɵɵtextInterpolate1(" ", artifact_r13.Name, " ");
235
+ i0.ɵɵadvance(4);
236
+ i0.ɵɵproperty("artifactId", artifact_r13.ArtifactID)("currentUser", ctx_r1.CurrentUser)("environmentId", ctx_r1.EnvironmentID)("showHeader", false)("showTabs", false)("showSaveToCollection", false)("showCloseButton", false)("showMaximizeButton", false);
237
+ } }
137
238
  function RealtimeActivityRailComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
138
- i0.ɵɵelementStart(0, "div", 2);
139
- i0.ɵɵrepeaterCreate(1, RealtimeActivityRailComponent_Conditional_2_For_2_Template, 13, 11, "div", 7, i0.ɵɵcomponentInstance().TrackCard, true, RealtimeActivityRailComponent_Conditional_2_ForEmpty_3_Template, 2, 0, "div", 8);
239
+ const _r3 = i0.ɵɵgetCurrentView();
240
+ i0.ɵɵelementStart(0, "as-split", 7);
241
+ i0.ɵɵlistener("dragEnd", function RealtimeActivityRailComponent_Conditional_2_Template_as_split_dragEnd_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSplitDragEnd($event)); });
242
+ i0.ɵɵelementStart(1, "as-split-area", 8)(2, "div", 9);
243
+ i0.ɵɵconditionalCreate(3, RealtimeActivityRailComponent_Conditional_2_Conditional_3_Template, 6, 0, "div", 10);
244
+ i0.ɵɵrepeaterCreate(4, RealtimeActivityRailComponent_Conditional_2_For_5_Template, 13, 11, "div", 11, i0.ɵɵcomponentInstance().TrackCard, true, RealtimeActivityRailComponent_Conditional_2_ForEmpty_6_Template, 2, 0, "div", 12);
245
+ i0.ɵɵelementEnd()();
246
+ i0.ɵɵconditionalCreate(7, RealtimeActivityRailComponent_Conditional_2_Conditional_7_Template, 10, 12, "as-split-area", 13);
140
247
  i0.ɵɵelementEnd();
141
248
  } if (rf & 2) {
249
+ let tmp_7_0;
142
250
  const ctx_r1 = i0.ɵɵnextContext();
251
+ i0.ɵɵproperty("gutterSize", ctx_r1.SelectedArtifact ? 8 : 0)("disabled", !ctx_r1.SelectedArtifact)("useTransition", !ctx_r1.PrefersReducedMotion);
252
+ i0.ɵɵadvance();
253
+ i0.ɵɵproperty("size", ctx_r1.SelectedArtifact ? 100 - ctx_r1.SplitArtifactPercent : 100);
254
+ i0.ɵɵadvance(2);
255
+ i0.ɵɵconditional(ctx_r1.ExtraArtifacts.length > 0 ? 3 : -1);
143
256
  i0.ɵɵadvance();
144
257
  i0.ɵɵrepeater(ctx_r1.State.Cards);
258
+ i0.ɵɵadvance(3);
259
+ i0.ɵɵconditional((tmp_7_0 = ctx_r1.SelectedArtifact) ? 7 : -1, tmp_7_0);
145
260
  } }
146
261
  /**
147
- * The "Session activity" RIGHT RAIL of the call overlay: a compact, newest-first list
148
- * of EVERY tool/agent call of the session — so parallel/multiple delegations live here
149
- * and the conversation thread stays clean.
262
+ * The "Session activity" surface (the Activity tab's content): a compact, newest-first list
263
+ * of EVERY tool/agent call of the session — so parallel/multiple delegations live here and
264
+ * the conversation thread stays clean.
150
265
  *
151
- * Each entry shows agent name, status (Running w/ spinner | Done | Failed), the latest
152
- * friendly step label, elapsed time for finished work, and a one-line result preview
153
- * for done items. Active items are emphasized; finished items are dimmed.
266
+ * Each entry shows agent name, status, the latest friendly step label, elapsed time, and a
267
+ * one-line result preview. When a run produced ARTIFACTS, each artifact renders as an inline
268
+ * PREVIEW card (reusing `mj-artifact-message-card`, the same component the conversation
269
+ * messages use). Clicking a preview SPLITS this pane horizontally — activity list on the
270
+ * LEFT, the full artifact viewer on the RIGHT (`as-split`); clicking another swaps the right
271
+ * pane; a close control collapses back to full-width activity. The split width is persisted
272
+ * per-user via {@link UserInfoEngine} (NOT localStorage). This replaces the old "one surface
273
+ * tab per artifact" model.
154
274
  *
155
- * Collapsible via the chevron in its header (collapses to a slim toggle strip).
156
- * Presentational over the same {@link RealtimeSessionState} the thread renders
157
- * no subscriptions of its own beyond the state's change notifications.
275
+ * Collapsible via the chevron in its header (standalone presentation only). Presentational
276
+ * over the same {@link RealtimeSessionState} the thread renders.
158
277
  */
159
278
  export class RealtimeActivityRailComponent {
160
279
  /** Maximum characters of the result preview in a done card. */
@@ -170,21 +289,39 @@ export class RealtimeActivityRailComponent {
170
289
  * right-rail presentation for any other consumer.
171
290
  */
172
291
  Embedded = false;
292
+ /** The signed-in user, threaded to the split-pane artifact viewer. */
293
+ CurrentUser = null;
294
+ /** The active environment id, threaded to the split-pane artifact viewer. */
295
+ EnvironmentID = '';
296
+ /**
297
+ * Extra artifacts NOT tied to a specific activity card — the SESSION-REVIEW chain's
298
+ * carryover artifacts. Rendered as a "Session artifacts" group above the activity list so
299
+ * a reviewed session's outputs are reachable inside the Activity tab (the live path gets
300
+ * artifacts from each card's `Artifacts`). Empty for a live session.
301
+ */
302
+ ExtraArtifacts = [];
173
303
  /** Emitted with the delegated run's ID when an entry's dev "Open run" link is clicked. */
174
304
  OpenRunRequested = new EventEmitter();
175
- /** Emitted when an entry's "View" artifact chip is clicked (focuses the artifact's tab). */
305
+ /** Emitted when an artifact is opened in the split viewer (lets a host react if it wants). */
176
306
  OpenArtifactRequested = new EventEmitter();
177
- /** Whether the rail is collapsed to its slim toggle strip. */
307
+ /** Whether the rail is collapsed to its slim toggle strip (standalone mode only). */
178
308
  Collapsed = false;
309
+ /** The artifact currently shown in the split-pane viewer, or null when the split is closed. */
310
+ SelectedArtifact = null;
311
+ /** The artifact (right) pane's width percentage — persisted per-user, clamped on load. */
312
+ SplitArtifactPercent = ACTIVITY_SPLIT_DEFAULT_PERCENT;
179
313
  changedSub;
180
314
  cdr = inject(ChangeDetectorRef);
315
+ /** True while reduced-motion is preferred — disables the split's drag transition. */
316
+ PrefersReducedMotion = typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion: reduce)').matches;
181
317
  ngOnInit() {
318
+ this.loadSplitPref();
182
319
  this.changedSub = this.State.Changed$.subscribe(() => this.cdr.markForCheck());
183
320
  }
184
321
  ngOnDestroy() {
185
322
  this.changedSub?.unsubscribe();
186
323
  }
187
- /** Toggle the rail between expanded and slim-collapsed. */
324
+ /** Toggle the rail between expanded and slim-collapsed (standalone presentation). */
188
325
  Toggle() {
189
326
  this.Collapsed = !this.Collapsed;
190
327
  }
@@ -217,9 +354,48 @@ export class RealtimeActivityRailComponent {
217
354
  CardArtifacts(card) {
218
355
  return card.Done && card.Artifacts ? card.Artifacts : [];
219
356
  }
220
- /** Emits the open-artifact request for a card's produced artifact. */
357
+ /** track fn for the @for over a card's artifacts. */
358
+ TrackArtifact(index, artifact) {
359
+ return artifact.ArtifactVersionID;
360
+ }
361
+ /** Whether the artifact `a` is the one currently open in the split viewer. */
362
+ IsArtifactOpen(artifact) {
363
+ return this.SelectedArtifact?.ArtifactVersionID === artifact.ArtifactVersionID;
364
+ }
365
+ /**
366
+ * Opens (or swaps to) `artifact` in the split-pane viewer: the activity list keeps the
367
+ * left pane, the full artifact viewer fills the right. Re-opening the same artifact is a
368
+ * no-op; opening a different one swaps the right pane. Also reachable from the surface-tabs
369
+ * "View →" affordance.
370
+ */
221
371
  OpenArtifact(artifact) {
372
+ if (this.SelectedArtifact?.ArtifactVersionID === artifact.ArtifactVersionID) {
373
+ return;
374
+ }
375
+ this.SelectedArtifact = artifact;
222
376
  this.OpenArtifactRequested.emit(artifact);
377
+ this.cdr.markForCheck();
378
+ }
379
+ /** Closes the split, returning to a full-width activity list. */
380
+ CloseArtifact() {
381
+ if (this.SelectedArtifact) {
382
+ this.SelectedArtifact = null;
383
+ this.cdr.markForCheck();
384
+ }
385
+ }
386
+ /**
387
+ * `as-split` drag finished: adopt + persist the artifact (right) pane's width percentage
388
+ * per-user (debounced, via {@link UserInfoEngine} — never localStorage). The split reports
389
+ * the two area sizes (percent here); index 1 is the artifact pane. A wildcard `'*'` size
390
+ * (non-numeric) is ignored — nothing to persist.
391
+ */
392
+ OnSplitDragEnd(event) {
393
+ const right = event.sizes[1];
394
+ if (typeof right !== 'number') {
395
+ return;
396
+ }
397
+ this.SplitArtifactPercent = ClampActivitySplitPercent(right);
398
+ this.persistSplitPref(this.SplitArtifactPercent);
223
399
  }
224
400
  /** One-line result preview for done items. */
225
401
  Preview(card) {
@@ -227,11 +403,32 @@ export class RealtimeActivityRailComponent {
227
403
  const max = RealtimeActivityRailComponent.PreviewMaxChars;
228
404
  return text.length > max ? `${text.slice(0, max).trimEnd()}…` : text;
229
405
  }
406
+ /** Reads the persisted split width once (tolerant; default tier applies when unset). */
407
+ loadSplitPref() {
408
+ try {
409
+ const percent = ParseActivitySplitPercent(UserInfoEngine.Instance.GetSetting(ACTIVITY_SPLIT_PREF_KEY));
410
+ if (percent !== null) {
411
+ this.SplitArtifactPercent = percent;
412
+ }
413
+ }
414
+ catch {
415
+ // UserInfoEngine not configured (plain-node tests / early bootstrap) — default applies.
416
+ }
417
+ }
418
+ /** Persists the split width preference server-side (debounced, best-effort). */
419
+ persistSplitPref(percent) {
420
+ try {
421
+ UserInfoEngine.Instance.SetSettingDebounced(ACTIVITY_SPLIT_PREF_KEY, SerializeActivitySplitPercent(percent));
422
+ }
423
+ catch {
424
+ // engine unavailable — the width still applies for this session
425
+ }
426
+ }
230
427
  static ɵfac = function RealtimeActivityRailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RealtimeActivityRailComponent)(); };
231
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RealtimeActivityRailComponent, selectors: [["mj-realtime-activity-rail"]], inputs: { State: "State", DevMode: "DevMode", Embedded: "Embedded" }, outputs: { OpenRunRequested: "OpenRunRequested", OpenArtifactRequested: "OpenArtifactRequested" }, decls: 3, vars: 6, consts: [["aria-label", "Session activity", 1, "rail"], [1, "rail__head"], [1, "rail__list"], ["type", "button", 1, "rail__toggle", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", 3, "ngClass"], [1, "rail__title"], ["aria-hidden", "true", 1, "fa-solid", "fa-list-check"], [1, "act-card", 3, "act-card--running", "act-card--done", "act-card--failed"], [1, "rail__empty"], [1, "act-card"], [1, "act-card__top"], [1, "act-card__name"], [1, "act-status", "act-status--running"], [1, "act-status", "act-status--done"], [1, "act-status", "act-status--failed"], [1, "act-card__step"], ["type", "button", 1, "act-card__artifact-link", 3, "title"], ["type", "button", "title", "Open the delegated agent run record", 1, "act-card__dev-link"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "spin"], ["aria-hidden", "true", 1, "fa-solid", "fa-check"], ["aria-hidden", "true", 1, "fa-solid", "fa-xmark"], [1, "act-card__meta"], [1, "act-card__preview"], ["aria-hidden", "true", 1, "fa-regular", "fa-clock"], ["type", "button", 1, "act-card__artifact-link", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-file-lines"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-right"], ["type", "button", "title", "Open the delegated agent run record", 1, "act-card__dev-link", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-up-right-from-square"]], template: function RealtimeActivityRailComponent_Template(rf, ctx) { if (rf & 1) {
428
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RealtimeActivityRailComponent, selectors: [["mj-realtime-activity-rail"]], inputs: { State: "State", DevMode: "DevMode", Embedded: "Embedded", CurrentUser: "CurrentUser", EnvironmentID: "EnvironmentID", ExtraArtifacts: "ExtraArtifacts" }, outputs: { OpenRunRequested: "OpenRunRequested", OpenArtifactRequested: "OpenArtifactRequested" }, decls: 3, vars: 6, consts: [["aria-label", "Session activity", 1, "rail"], [1, "rail__head"], ["direction", "horizontal", "unit", "percent", 1, "rail__split", 3, "gutterSize", "disabled", "useTransition"], ["type", "button", 1, "rail__toggle", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", 3, "ngClass"], [1, "rail__title"], ["aria-hidden", "true", 1, "fa-solid", "fa-wave-square"], ["direction", "horizontal", "unit", "percent", 1, "rail__split", 3, "dragEnd", "gutterSize", "disabled", "useTransition"], [3, "size"], [1, "rail__list"], [1, "rail__group"], [1, "act-card", 3, "act-card--running", "act-card--done", "act-card--failed"], [1, "rail__empty"], [3, "size", "minSize"], [1, "rail__group-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-folder-open"], [1, "act-card__artifact", 3, "act-card__artifact--open"], [1, "act-card__artifact"], [3, "artifactId", "currentUser"], ["type", "button", 1, "act-card__artifact-link", 3, "title"], [3, "actionPerformed", "artifactId", "currentUser"], ["type", "button", 1, "act-card__artifact-link", 3, "click", "title"], ["aria-hidden", "true", 1, "fa-solid", "fa-file-lines"], ["aria-hidden", "true", 1, "fa-solid", "fa-up-right-and-down-left-from-center"], [1, "act-card"], [1, "act-card__top"], [1, "act-card__name"], [1, "act-status", "act-status--running"], [1, "act-status", "act-status--done"], [1, "act-status", "act-status--failed"], [1, "act-card__step"], ["type", "button", "title", "Open the delegated agent run record", 1, "act-card__dev-link"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "spin"], ["aria-hidden", "true", 1, "fa-solid", "fa-check"], ["aria-hidden", "true", 1, "fa-solid", "fa-xmark"], [1, "act-card__meta"], [1, "act-card__preview"], ["aria-hidden", "true", 1, "fa-regular", "fa-clock"], ["type", "button", "title", "Open the delegated agent run record", 1, "act-card__dev-link", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "rail__viewer"], [1, "rail__viewer-head"], [1, "rail__viewer-title", 3, "title"], ["type", "button", "title", "Close artifact", "aria-label", "Close artifact", 1, "rail__viewer-close", 3, "click"], [1, "rail__viewer-body"], [3, "artifactId", "currentUser", "environmentId", "showHeader", "showTabs", "showSaveToCollection", "showCloseButton", "showMaximizeButton"]], template: function RealtimeActivityRailComponent_Template(rf, ctx) { if (rf & 1) {
232
429
  i0.ɵɵelementStart(0, "aside", 0);
233
430
  i0.ɵɵconditionalCreate(1, RealtimeActivityRailComponent_Conditional_1_Template, 4, 4, "div", 1);
234
- i0.ɵɵconditionalCreate(2, RealtimeActivityRailComponent_Conditional_2_Template, 4, 1, "div", 2);
431
+ i0.ɵɵconditionalCreate(2, RealtimeActivityRailComponent_Conditional_2_Template, 8, 7, "as-split", 2);
235
432
  i0.ɵɵelementEnd();
236
433
  } if (rf & 2) {
237
434
  i0.ɵɵclassProp("rail--collapsed", ctx.Collapsed && !ctx.Embedded)("rail--embedded", ctx.Embedded);
@@ -239,11 +436,11 @@ export class RealtimeActivityRailComponent {
239
436
  i0.ɵɵconditional(!ctx.Embedded ? 1 : -1);
240
437
  i0.ɵɵadvance();
241
438
  i0.ɵɵconditional(!ctx.Collapsed || ctx.Embedded ? 2 : -1);
242
- } }, dependencies: [CommonModule, i1.NgClass], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n --sage: var(--mj-color-violet-400, #a78bfa);\n --sage-bg: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 10%, transparent);\n --sage-border: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 38%, transparent);\n}\n\n.rail[_ngcontent-%COMP%] {\n width: 308px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 180ms ease;\n}\n.rail--collapsed[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n\n\n\n.rail--embedded[_ngcontent-%COMP%] {\n width: 100%;\n border-left: 0;\n}\n\n.rail__head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail--collapsed[_ngcontent-%COMP%] .rail__head[_ngcontent-%COMP%] {\n justify-content: center;\n padding: 10px 6px;\n border-bottom-color: transparent;\n}\n.rail__toggle[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 10px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n display: inline-flex;\n align-items: center;\n gap: 7px;\n white-space: nowrap;\n}\n.rail__title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.rail__list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.rail__list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.rail__list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.rail__empty[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 18px 8px;\n}\n\n\n\n.act-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 10px);\n padding: 8px 10px;\n background: var(--mj-bg-surface);\n}\n.act-card--running[_ngcontent-%COMP%] {\n border-color: var(--sage-border);\n background: var(--sage-bg);\n box-shadow: 0 0 0 1px var(--sage-border);\n}\n.act-card--done[_ngcontent-%COMP%], \n.act-card--failed[_ngcontent-%COMP%] {\n opacity: 0.72;\n}\n.act-card--done[_ngcontent-%COMP%]:hover, \n.act-card--failed[_ngcontent-%COMP%]:hover {\n opacity: 1;\n}\n\n.act-card__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.act-card__name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.act-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n font-weight: 700;\n padding: 1px 7px;\n border-radius: var(--mj-radius-full, 9999px);\n flex-shrink: 0;\n line-height: 1.6;\n}\n.act-status[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8.5px; }\n.act-status--running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n border: 1px solid var(--sage-border);\n}\n.act-status--done[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n.act-status--failed[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg, transparent);\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n}\n.spin[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_rail-spin 1.1s linear infinite;\n}\n\n.act-card__step[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card--running[_ngcontent-%COMP%] .act-card__step[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n.act-card__meta[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.act-card__preview[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.45;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.act-card__artifact-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n margin-top: 6px;\n margin-right: 6px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px solid var(--sage-border);\n background: var(--sage-bg);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__artifact-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--sage);\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n}\n.act-card__artifact-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.act-card__dev-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n color: var(--mj-text-muted);\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__dev-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-link, var(--mj-brand-primary));\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n.act-card__dev-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n@keyframes _ngcontent-%COMP%_rail-spin {\n to { transform: rotate(360deg); }\n}\n\n\n\n\n@media (max-width: 860px) {\n .rail[_ngcontent-%COMP%]:not(.rail--embedded) {\n display: none;\n }\n}"] });
439
+ } }, dependencies: [CommonModule, i1.NgClass, AngularSplitModule, i2.SplitComponent, i2.SplitAreaComponent, ArtifactsModule, i3.ArtifactViewerPanelComponent, i3.ArtifactMessageCardComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n --sage: var(--mj-color-violet-400, #a78bfa);\n --sage-bg: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 10%, transparent);\n --sage-border: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 38%, transparent);\n}\n\n.rail[_ngcontent-%COMP%] {\n width: 308px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 180ms ease;\n}\n.rail--collapsed[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n\n\n\n.rail--embedded[_ngcontent-%COMP%] {\n width: 100%;\n border-left: 0;\n}\n\n.rail__head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail--collapsed[_ngcontent-%COMP%] .rail__head[_ngcontent-%COMP%] {\n justify-content: center;\n padding: 10px 6px;\n border-bottom-color: transparent;\n}\n.rail__toggle[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 10px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__title[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n display: inline-flex;\n align-items: center;\n gap: 7px;\n white-space: nowrap;\n}\n.rail__title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.rail__split[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n width: 100%;\n height: 100%;\n}\n\n.rail__list[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 10px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.rail__list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.rail__list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.rail__empty[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 18px 8px;\n}\n\n\n\n.rail__group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding-bottom: 8px;\n margin-bottom: 4px;\n border-bottom: 1px dashed var(--mj-border-default);\n}\n.rail__group-title[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 10.5px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n}\n.rail__group-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--sage);\n}\n\n\n\n.rail__viewer[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n.rail__viewer-head[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail__viewer-title[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n min-width: 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.rail__viewer-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--sage);\n flex-shrink: 0;\n}\n.rail__viewer-close[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 11px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__viewer-close[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__viewer-body[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.rail__viewer-body[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n\n\n.act-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 10px);\n padding: 8px 10px;\n background: var(--mj-bg-surface);\n}\n.act-card--running[_ngcontent-%COMP%] {\n border-color: var(--sage-border);\n background: var(--sage-bg);\n box-shadow: 0 0 0 1px var(--sage-border);\n}\n.act-card--done[_ngcontent-%COMP%], \n.act-card--failed[_ngcontent-%COMP%] {\n opacity: 0.72;\n}\n.act-card--done[_ngcontent-%COMP%]:hover, \n.act-card--failed[_ngcontent-%COMP%]:hover {\n opacity: 1;\n}\n\n.act-card__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.act-card__name[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.act-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n font-weight: 700;\n padding: 1px 7px;\n border-radius: var(--mj-radius-full, 9999px);\n flex-shrink: 0;\n line-height: 1.6;\n}\n.act-status[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 8.5px; }\n.act-status--running[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n border: 1px solid var(--sage-border);\n}\n.act-status--done[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n.act-status--failed[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg, transparent);\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n}\n.spin[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_rail-spin 1.1s linear infinite;\n}\n\n.act-card__step[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card--running[_ngcontent-%COMP%] .act-card__step[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n.act-card__meta[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.act-card__preview[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.45;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.act-card__artifact[_ngcontent-%COMP%] {\n margin-top: 6px;\n border-radius: var(--mj-radius-lg, 10px);\n transition: box-shadow 140ms ease;\n}\n\n\n.act-card__artifact[_ngcontent-%COMP%] .artifact-message-card {\n margin: 0;\n}\n\n\n.act-card__artifact--open[_ngcontent-%COMP%] {\n box-shadow: 0 0 0 2px var(--sage);\n border-radius: calc(var(--mj-radius-lg, 10px) + 2px);\n}\n\n\n\n.act-card__artifact-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px solid var(--sage-border);\n background: var(--sage-bg);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n max-width: 100%;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__artifact-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n border-color: var(--sage);\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n}\n.act-card__artifact-link[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card__artifact-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n flex-shrink: 0;\n}\n\n\n\n.act-card__dev-link[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n color: var(--mj-text-muted);\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__dev-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-link, var(--mj-brand-primary));\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n.act-card__dev-link[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 8px;\n}\n\n@keyframes _ngcontent-%COMP%_rail-spin {\n to { transform: rotate(360deg); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .rail[_ngcontent-%COMP%] { transition: none; }\n .spin[_ngcontent-%COMP%] { animation: none; }\n}\n\n\n\n\n@media (max-width: 860px) {\n .rail[_ngcontent-%COMP%]:not(.rail--embedded) {\n display: none;\n }\n}"] });
243
440
  }
244
441
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RealtimeActivityRailComponent, [{
245
442
  type: Component,
246
- args: [{ standalone: true, selector: 'mj-realtime-activity-rail', imports: [CommonModule], template: "<aside class=\"rail\" [class.rail--collapsed]=\"Collapsed && !Embedded\" [class.rail--embedded]=\"Embedded\" aria-label=\"Session activity\">\n @if (!Embedded) {\n <div class=\"rail__head\">\n <button type=\"button\"\n class=\"rail__toggle\"\n (click)=\"Toggle()\"\n [title]=\"Collapsed ? 'Show session activity' : 'Hide session activity'\"\n [attr.aria-expanded]=\"!Collapsed\">\n <i class=\"fa-solid\" [ngClass]=\"Collapsed ? 'fa-chevron-left' : 'fa-chevron-right'\" aria-hidden=\"true\"></i>\n </button>\n @if (!Collapsed) {\n <span class=\"rail__title\">\n <i class=\"fa-solid fa-list-check\" aria-hidden=\"true\"></i>\n Session activity\n </span>\n }\n </div>\n }\n\n @if (!Collapsed || Embedded) {\n <div class=\"rail__list\">\n @for (card of State.Cards; track TrackCard($index, card)) {\n <div class=\"act-card\"\n [class.act-card--running]=\"!card.Done\"\n [class.act-card--done]=\"card.Done && card.Success\"\n [class.act-card--failed]=\"card.Done && !card.Success\">\n <div class=\"act-card__top\">\n <span class=\"act-card__name\">{{ card.AgentName }}</span>\n @if (!card.Done) {\n <span class=\"act-status act-status--running\">\n <i class=\"fa-solid fa-spinner spin\" aria-hidden=\"true\"></i> Running\n </span>\n } @else if (card.Success) {\n <span class=\"act-status act-status--done\">\n <i class=\"fa-solid fa-check\" aria-hidden=\"true\"></i> Done\n </span>\n } @else {\n <span class=\"act-status act-status--failed\">\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i> Failed\n </span>\n }\n </div>\n <div class=\"act-card__step\">{{ StepLabel(card) }}</div>\n @if (card.Done) {\n @if (Elapsed(card); as elapsed) {\n <div class=\"act-card__meta\">\n <i class=\"fa-regular fa-clock\" aria-hidden=\"true\"></i> {{ elapsed }}\n </div>\n }\n @if (Preview(card)) {\n <div class=\"act-card__preview\">{{ Preview(card) }}</div>\n }\n }\n @for (artifact of CardArtifacts(card); track artifact.ArtifactVersionID) {\n <button type=\"button\" class=\"act-card__artifact-link\" (click)=\"OpenArtifact(artifact)\"\n [title]=\"'View ' + artifact.Name\">\n <i class=\"fa-solid fa-file-lines\" aria-hidden=\"true\"></i>\n <span>View</span>\n <i class=\"fa-solid fa-arrow-right\" aria-hidden=\"true\"></i>\n </button>\n }\n @if (ShowOpenRun(card)) {\n <button type=\"button\" class=\"act-card__dev-link\" (click)=\"OpenRun(card)\"\n title=\"Open the delegated agent run record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\" aria-hidden=\"true\"></i>\n <span>Open run</span>\n </button>\n }\n </div>\n } @empty {\n <div class=\"rail__empty\">Tool and agent calls will appear here as they run.</div>\n }\n </div>\n }\n</aside>\n", styles: [":host {\n display: block;\n height: 100%;\n --sage: var(--mj-color-violet-400, #a78bfa);\n --sage-bg: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 10%, transparent);\n --sage-border: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 38%, transparent);\n}\n\n.rail {\n width: 308px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 180ms ease;\n}\n.rail--collapsed {\n width: 40px;\n}\n\n/* EMBEDDED in the surface panel's Activity tab: the panel owns chrome + collapse,\n so the rail stretches to the pane and drops its own border. */\n.rail--embedded {\n width: 100%;\n border-left: 0;\n}\n\n.rail__head {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail--collapsed .rail__head {\n justify-content: center;\n padding: 10px 6px;\n border-bottom-color: transparent;\n}\n.rail__toggle {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 10px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__toggle:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__title {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n display: inline-flex;\n align-items: center;\n gap: 7px;\n white-space: nowrap;\n}\n.rail__title i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n.rail__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.rail__list::-webkit-scrollbar {\n width: 6px;\n}\n.rail__list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.rail__empty {\n font-size: 11.5px;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 18px 8px;\n}\n\n/* ---------- Activity cards ---------- */\n.act-card {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 10px);\n padding: 8px 10px;\n background: var(--mj-bg-surface);\n}\n.act-card--running {\n border-color: var(--sage-border);\n background: var(--sage-bg);\n box-shadow: 0 0 0 1px var(--sage-border);\n}\n.act-card--done,\n.act-card--failed {\n opacity: 0.72;\n}\n.act-card--done:hover,\n.act-card--failed:hover {\n opacity: 1;\n}\n\n.act-card__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.act-card__name {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.act-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n font-weight: 700;\n padding: 1px 7px;\n border-radius: var(--mj-radius-full, 9999px);\n flex-shrink: 0;\n line-height: 1.6;\n}\n.act-status i { font-size: 8.5px; }\n.act-status--running {\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n border: 1px solid var(--sage-border);\n}\n.act-status--done {\n background: var(--mj-status-success-bg, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n.act-status--failed {\n background: var(--mj-status-error-bg, transparent);\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n}\n.spin {\n animation: rail-spin 1.1s linear infinite;\n}\n\n.act-card__step {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card--running .act-card__step {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n.act-card__meta {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.act-card__preview {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.45;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* \"View \u2192\" chip for an artifact a delegated run produced (focuses its surface tab) */\n.act-card__artifact-link {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n margin-top: 6px;\n margin-right: 6px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px solid var(--sage-border);\n background: var(--sage-bg);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__artifact-link:hover {\n color: var(--mj-text-primary);\n border-color: var(--sage);\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n}\n.act-card__artifact-link i {\n font-size: 9px;\n}\n\n/* Gear-gated developer link to the delegated run record */\n.act-card__dev-link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n color: var(--mj-text-muted);\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__dev-link:hover {\n color: var(--mj-text-link, var(--mj-brand-primary));\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n.act-card__dev-link i {\n font-size: 8px;\n}\n\n@keyframes rail-spin {\n to { transform: rotate(360deg); }\n}\n\n/* On narrow widths the STANDALONE rail stacks out of the way (overlay falls back to a\n single column). The embedded rail is governed by the surface panel's own breakpoint. */\n@media (max-width: 860px) {\n .rail:not(.rail--embedded) {\n display: none;\n }\n}\n"] }]
443
+ args: [{ standalone: true, selector: 'mj-realtime-activity-rail', imports: [CommonModule, AngularSplitModule, ArtifactsModule], template: "<aside class=\"rail\" [class.rail--collapsed]=\"Collapsed && !Embedded\" [class.rail--embedded]=\"Embedded\" aria-label=\"Session activity\">\n @if (!Embedded) {\n <div class=\"rail__head\">\n <button type=\"button\"\n class=\"rail__toggle\"\n (click)=\"Toggle()\"\n [title]=\"Collapsed ? 'Show session activity' : 'Hide session activity'\"\n [attr.aria-expanded]=\"!Collapsed\">\n <i class=\"fa-solid\" [ngClass]=\"Collapsed ? 'fa-chevron-left' : 'fa-chevron-right'\" aria-hidden=\"true\"></i>\n </button>\n @if (!Collapsed) {\n <span class=\"rail__title\">\n <i class=\"fa-solid fa-wave-square\" aria-hidden=\"true\"></i>\n Session activity\n </span>\n }\n </div>\n }\n\n @if (!Collapsed || Embedded) {\n <as-split class=\"rail__split\"\n direction=\"horizontal\"\n unit=\"percent\"\n [gutterSize]=\"SelectedArtifact ? 8 : 0\"\n [disabled]=\"!SelectedArtifact\"\n [useTransition]=\"!PrefersReducedMotion\"\n (dragEnd)=\"OnSplitDragEnd($event)\">\n\n <!-- LEFT: the activity list (full width until an artifact splits the pane) -->\n <as-split-area [size]=\"SelectedArtifact ? (100 - SplitArtifactPercent) : 100\">\n <div class=\"rail__list\">\n @if (ExtraArtifacts.length > 0) {\n <div class=\"rail__group\">\n <div class=\"rail__group-title\">\n <i class=\"fa-solid fa-folder-open\" aria-hidden=\"true\"></i> Session artifacts\n </div>\n @for (artifact of ExtraArtifacts; track TrackArtifact($index, artifact)) {\n <div class=\"act-card__artifact\"\n [class.act-card__artifact--open]=\"IsArtifactOpen(artifact)\">\n @if (CurrentUser) {\n <mj-artifact-message-card\n [artifactId]=\"artifact.ArtifactID\"\n [currentUser]=\"CurrentUser\"\n (actionPerformed)=\"OpenArtifact(artifact)\">\n </mj-artifact-message-card>\n } @else {\n <button type=\"button\" class=\"act-card__artifact-link\" (click)=\"OpenArtifact(artifact)\"\n [title]=\"'View ' + artifact.Name\">\n <i class=\"fa-solid fa-file-lines\" aria-hidden=\"true\"></i>\n <span>{{ artifact.Name }}</span>\n <i class=\"fa-solid fa-up-right-and-down-left-from-center\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n @for (card of State.Cards; track TrackCard($index, card)) {\n <div class=\"act-card\"\n [class.act-card--running]=\"!card.Done\"\n [class.act-card--done]=\"card.Done && card.Success\"\n [class.act-card--failed]=\"card.Done && !card.Success\">\n <div class=\"act-card__top\">\n <span class=\"act-card__name\">{{ card.AgentName }}</span>\n @if (!card.Done) {\n <span class=\"act-status act-status--running\">\n <i class=\"fa-solid fa-spinner spin\" aria-hidden=\"true\"></i> Running\n </span>\n } @else if (card.Success) {\n <span class=\"act-status act-status--done\">\n <i class=\"fa-solid fa-check\" aria-hidden=\"true\"></i> Done\n </span>\n } @else {\n <span class=\"act-status act-status--failed\">\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i> Failed\n </span>\n }\n </div>\n <div class=\"act-card__step\">{{ StepLabel(card) }}</div>\n @if (card.Done) {\n @if (Elapsed(card); as elapsed) {\n <div class=\"act-card__meta\">\n <i class=\"fa-regular fa-clock\" aria-hidden=\"true\"></i> {{ elapsed }}\n </div>\n }\n @if (Preview(card)) {\n <div class=\"act-card__preview\">{{ Preview(card) }}</div>\n }\n }\n @for (artifact of CardArtifacts(card); track TrackArtifact($index, artifact)) {\n <div class=\"act-card__artifact\"\n [class.act-card__artifact--open]=\"IsArtifactOpen(artifact)\">\n @if (CurrentUser) {\n <!-- Inline preview (same component the conversation message cards use);\n clicking expands it into the split-pane viewer on the right. -->\n <mj-artifact-message-card\n [artifactId]=\"artifact.ArtifactID\"\n [currentUser]=\"CurrentUser\"\n (actionPerformed)=\"OpenArtifact(artifact)\">\n </mj-artifact-message-card>\n } @else {\n <button type=\"button\" class=\"act-card__artifact-link\" (click)=\"OpenArtifact(artifact)\"\n [title]=\"'View ' + artifact.Name\">\n <i class=\"fa-solid fa-file-lines\" aria-hidden=\"true\"></i>\n <span>{{ artifact.Name }}</span>\n <i class=\"fa-solid fa-up-right-and-down-left-from-center\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n @if (ShowOpenRun(card)) {\n <button type=\"button\" class=\"act-card__dev-link\" (click)=\"OpenRun(card)\"\n title=\"Open the delegated agent run record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\" aria-hidden=\"true\"></i>\n <span>Open run</span>\n </button>\n }\n </div>\n } @empty {\n <div class=\"rail__empty\">Tool and agent calls will appear here as they run.</div>\n }\n </div>\n </as-split-area>\n\n <!-- RIGHT: the full artifact viewer (only present while an artifact is open) -->\n @if (SelectedArtifact; as artifact) {\n <as-split-area [size]=\"SplitArtifactPercent\" [minSize]=\"25\">\n <div class=\"rail__viewer\">\n <div class=\"rail__viewer-head\">\n <span class=\"rail__viewer-title\" [title]=\"artifact.Name\">\n <i class=\"fa-solid fa-file-lines\" aria-hidden=\"true\"></i>\n {{ artifact.Name }}\n </span>\n <button type=\"button\" class=\"rail__viewer-close\" (click)=\"CloseArtifact()\"\n title=\"Close artifact\" aria-label=\"Close artifact\">\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"rail__viewer-body\">\n <mj-artifact-viewer-panel\n [artifactId]=\"artifact.ArtifactID\"\n [currentUser]=\"CurrentUser!\"\n [environmentId]=\"EnvironmentID\"\n [showHeader]=\"false\"\n [showTabs]=\"false\"\n [showSaveToCollection]=\"false\"\n [showCloseButton]=\"false\"\n [showMaximizeButton]=\"false\">\n </mj-artifact-viewer-panel>\n </div>\n </div>\n </as-split-area>\n }\n </as-split>\n }\n</aside>\n", styles: [":host {\n display: block;\n height: 100%;\n --sage: var(--mj-color-violet-400, #a78bfa);\n --sage-bg: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 10%, transparent);\n --sage-border: color-mix(in srgb, var(--mj-color-violet-400, #a78bfa) 38%, transparent);\n}\n\n.rail {\n width: 308px;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n transition: width 180ms ease;\n}\n.rail--collapsed {\n width: 40px;\n}\n\n/* EMBEDDED in the surface panel's Activity tab: the panel owns chrome + collapse,\n so the rail stretches to the pane and drops its own border. */\n.rail--embedded {\n width: 100%;\n border-left: 0;\n}\n\n.rail__head {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail--collapsed .rail__head {\n justify-content: center;\n padding: 10px 6px;\n border-bottom-color: transparent;\n}\n.rail__toggle {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 10px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__toggle:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__title {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n display: inline-flex;\n align-items: center;\n gap: 7px;\n white-space: nowrap;\n}\n.rail__title i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* ---------- split: activity list (left) | artifact viewer (right) ---------- */\n.rail__split {\n flex: 1;\n min-height: 0;\n width: 100%;\n height: 100%;\n}\n\n.rail__list {\n height: 100%;\n overflow-y: auto;\n padding: 10px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n scrollbar-width: thin;\n scrollbar-color: var(--mj-border-strong) transparent;\n}\n.rail__list::-webkit-scrollbar {\n width: 6px;\n}\n.rail__list::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.rail__empty {\n font-size: 11.5px;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 18px 8px;\n}\n\n/* Session-review carryover artifacts group (above the activity cards). */\n.rail__group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding-bottom: 8px;\n margin-bottom: 4px;\n border-bottom: 1px dashed var(--mj-border-default);\n}\n.rail__group-title {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 10.5px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted);\n}\n.rail__group-title i {\n font-size: 10px;\n color: var(--sage);\n}\n\n/* ---------- artifact viewer (right split pane) ---------- */\n.rail__viewer {\n height: 100%;\n display: flex;\n flex-direction: column;\n min-height: 0;\n background: var(--mj-bg-surface);\n border-left: 1px solid var(--mj-border-default);\n}\n.rail__viewer-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 10px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.rail__viewer-title {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n min-width: 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.rail__viewer-title i {\n font-size: 11px;\n color: var(--sage);\n flex-shrink: 0;\n}\n.rail__viewer-close {\n width: 24px;\n height: 24px;\n display: grid;\n place-items: center;\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n flex-shrink: 0;\n font-size: 11px;\n transition: color 140ms ease, border-color 140ms ease;\n}\n.rail__viewer-close:hover {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.rail__viewer-body {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.rail__viewer-body > * {\n flex: 1;\n min-height: 0;\n}\n\n/* ---------- Activity cards ---------- */\n.act-card {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg, 10px);\n padding: 8px 10px;\n background: var(--mj-bg-surface);\n}\n.act-card--running {\n border-color: var(--sage-border);\n background: var(--sage-bg);\n box-shadow: 0 0 0 1px var(--sage-border);\n}\n.act-card--done,\n.act-card--failed {\n opacity: 0.72;\n}\n.act-card--done:hover,\n.act-card--failed:hover {\n opacity: 1;\n}\n\n.act-card__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n.act-card__name {\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-primary);\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.act-status {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 10px;\n font-weight: 700;\n padding: 1px 7px;\n border-radius: var(--mj-radius-full, 9999px);\n flex-shrink: 0;\n line-height: 1.6;\n}\n.act-status i { font-size: 8.5px; }\n.act-status--running {\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n border: 1px solid var(--sage-border);\n}\n.act-status--done {\n background: var(--mj-status-success-bg, transparent);\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n}\n.act-status--failed {\n background: var(--mj-status-error-bg, transparent);\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n}\n.spin {\n animation: rail-spin 1.1s linear infinite;\n}\n\n.act-card__step {\n font-size: 11.5px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card--running .act-card__step {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n.act-card__meta {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.act-card__preview {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 3px;\n line-height: 1.45;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* ---------- inline artifact preview (opens the split viewer on click) ---------- */\n.act-card__artifact {\n margin-top: 6px;\n border-radius: var(--mj-radius-lg, 10px);\n transition: box-shadow 140ms ease;\n}\n/* The inline preview card carries its own margins; collapse them inside the slot. */\n.act-card__artifact ::ng-deep .artifact-message-card {\n margin: 0;\n}\n/* Highlight the artifact whose viewer is currently open in the split pane. */\n.act-card__artifact--open {\n box-shadow: 0 0 0 2px var(--sage);\n border-radius: calc(var(--mj-radius-lg, 10px) + 2px);\n}\n\n/* Fallback \"View \u2192\" chip (used only when no CurrentUser to render the rich preview) */\n.act-card__artifact-link {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 9px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px solid var(--sage-border);\n background: var(--sage-bg);\n color: var(--mj-color-violet-300, var(--mj-text-secondary));\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n max-width: 100%;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__artifact-link:hover {\n color: var(--mj-text-primary);\n border-color: var(--sage);\n background: color-mix(in srgb, var(--sage) 18%, transparent);\n}\n.act-card__artifact-link span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.act-card__artifact-link i {\n font-size: 9px;\n flex-shrink: 0;\n}\n\n/* Gear-gated developer link to the delegated run record */\n.act-card__dev-link {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-top: 6px;\n padding: 2px 8px;\n border-radius: var(--mj-radius-full, 9999px);\n border: 1px dashed var(--mj-border-strong);\n background: transparent;\n color: var(--mj-text-muted);\n font-family: inherit;\n font-size: 10px;\n font-weight: 700;\n cursor: pointer;\n transition: color 140ms ease, border-color 140ms ease, background 140ms ease;\n}\n.act-card__dev-link:hover {\n color: var(--mj-text-link, var(--mj-brand-primary));\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, transparent);\n}\n.act-card__dev-link i {\n font-size: 8px;\n}\n\n@keyframes rail-spin {\n to { transform: rotate(360deg); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .rail { transition: none; }\n .spin { animation: none; }\n}\n\n/* On narrow widths the STANDALONE rail stacks out of the way (overlay falls back to a\n single column). The embedded rail is governed by the surface panel's own breakpoint. */\n@media (max-width: 860px) {\n .rail:not(.rail--embedded) {\n display: none;\n }\n}\n"] }]
247
444
  }], null, { State: [{
248
445
  type: Input,
249
446
  args: [{ required: true }]
@@ -251,10 +448,16 @@ export class RealtimeActivityRailComponent {
251
448
  type: Input
252
449
  }], Embedded: [{
253
450
  type: Input
451
+ }], CurrentUser: [{
452
+ type: Input
453
+ }], EnvironmentID: [{
454
+ type: Input
455
+ }], ExtraArtifacts: [{
456
+ type: Input
254
457
  }], OpenRunRequested: [{
255
458
  type: Output
256
459
  }], OpenArtifactRequested: [{
257
460
  type: Output
258
461
  }] }); })();
259
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RealtimeActivityRailComponent, { className: "RealtimeActivityRailComponent", filePath: "src/lib/components/realtime/realtime-activity-rail.component.ts", lineNumber: 29 }); })();
462
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RealtimeActivityRailComponent, { className: "RealtimeActivityRailComponent", filePath: "src/lib/components/realtime/realtime-activity-rail.component.ts", lineNumber: 41 }); })();
260
463
  //# sourceMappingURL=realtime-activity-rail.component.js.map