@memberjunction/ng-conversations 5.43.0 → 5.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) 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.js +37 -41
  6. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  7. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  8. package/dist/lib/components/collection/collection-form-modal.component.js +10 -14
  9. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  10. package/dist/lib/components/collection/collection-share-modal.component.js +41 -45
  11. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  12. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  13. package/dist/lib/components/collection/collection-view.component.js +22 -36
  14. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  15. package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -0
  16. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  17. package/dist/lib/components/collection/collections-full-view.component.js +134 -166
  18. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  19. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +73 -8
  20. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  21. package/dist/lib/components/conversation/conversation-chat-area.component.js +487 -123
  22. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  23. package/dist/lib/components/conversation/pinned-messages-panel.component.js +6 -9
  24. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  25. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  26. package/dist/lib/components/library/library-full-view.component.js +20 -24
  27. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  28. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  29. package/dist/lib/components/members/members-modal.component.js +10 -11
  30. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  31. package/dist/lib/components/mention/mention-dropdown.component.js +49 -28
  32. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
  33. package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
  34. package/dist/lib/components/mention/mention-editor.component.js +24 -10
  35. package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
  36. package/dist/lib/components/message/message-input-box.component.d.ts +11 -16
  37. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  38. package/dist/lib/components/message/message-input-box.component.js +52 -46
  39. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  40. package/dist/lib/components/message/message-input.component.d.ts +83 -18
  41. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  42. package/dist/lib/components/message/message-input.component.js +238 -151
  43. package/dist/lib/components/message/message-input.component.js.map +1 -1
  44. package/dist/lib/components/message/message-item.component.d.ts +10 -1
  45. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  46. package/dist/lib/components/message/message-item.component.js +67 -15
  47. package/dist/lib/components/message/message-item.component.js.map +1 -1
  48. package/dist/lib/components/message/message-list.component.js +6 -9
  49. package/dist/lib/components/message/message-list.component.js.map +1 -1
  50. package/dist/lib/components/overlay/chat-overlay.component.d.ts +3 -0
  51. package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
  52. package/dist/lib/components/overlay/chat-overlay.component.js +9 -4
  53. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  54. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +45 -0
  55. package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
  56. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +10 -0
  57. package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
  58. package/dist/lib/components/realtime/channels/client-context-channel.d.ts +46 -0
  59. package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -0
  60. package/dist/lib/components/realtime/channels/client-context-channel.js +174 -0
  61. package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -0
  62. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts +123 -0
  63. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts.map +1 -0
  64. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +397 -0
  65. package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -0
  66. package/dist/lib/components/realtime/media/media-channel-state.d.ts +103 -0
  67. package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -0
  68. package/dist/lib/components/realtime/media/media-channel-state.js +143 -0
  69. package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -0
  70. package/dist/lib/components/realtime/media/media-channel-tools.d.ts +24 -0
  71. package/dist/lib/components/realtime/media/media-channel-tools.d.ts.map +1 -0
  72. package/dist/lib/components/realtime/media/media-channel-tools.js +107 -0
  73. package/dist/lib/components/realtime/media/media-channel-tools.js.map +1 -0
  74. package/dist/lib/components/realtime/media/media-channel.d.ts +89 -0
  75. package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -0
  76. package/dist/lib/components/realtime/media/media-channel.js +253 -0
  77. package/dist/lib/components/realtime/media/media-channel.js.map +1 -0
  78. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +141 -0
  79. package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -0
  80. package/dist/lib/components/realtime/media/realtime-media-surface.component.js +574 -0
  81. package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -0
  82. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +59 -14
  83. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
  84. package/dist/lib/components/realtime/realtime-activity-rail.component.js +277 -74
  85. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  86. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +28 -27
  87. package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
  88. package/dist/lib/components/realtime/realtime-agent-banner.component.js +144 -143
  89. package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
  90. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -0
  91. package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
  92. package/dist/lib/components/realtime/realtime-agent-picker.component.js +105 -43
  93. package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
  94. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +2 -2
  95. package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
  96. package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
  97. package/dist/lib/components/realtime/realtime-composer.component.d.ts +41 -7
  98. package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
  99. package/dist/lib/components/realtime/realtime-composer.component.js +216 -102
  100. package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
  101. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +0 -2
  102. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
  103. package/dist/lib/components/realtime/realtime-delegation-card.component.js +67 -71
  104. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  105. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +364 -44
  106. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
  107. package/dist/lib/components/realtime/realtime-session-overlay.component.js +839 -153
  108. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  109. package/dist/lib/components/realtime/realtime-session-state.d.ts +5 -5
  110. package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
  111. package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
  112. package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts +70 -0
  113. package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts.map +1 -0
  114. package/dist/lib/components/realtime/realtime-surface-tab-style.js +115 -0
  115. package/dist/lib/components/realtime/realtime-surface-tab-style.js.map +1 -0
  116. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +55 -57
  117. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
  118. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +165 -143
  119. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  120. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +80 -71
  121. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
  122. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +83 -113
  123. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  124. package/dist/lib/components/realtime/realtime-ui-config.d.ts +270 -0
  125. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -0
  126. package/dist/lib/components/realtime/realtime-ui-config.js +212 -0
  127. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -0
  128. package/dist/lib/components/search/search-panel.component.d.ts +2 -0
  129. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  130. package/dist/lib/components/search/search-panel.component.js +92 -101
  131. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  132. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  133. package/dist/lib/components/share/share-modal.component.js +10 -11
  134. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  135. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  136. package/dist/lib/components/shared/user-picker.component.js +12 -15
  137. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  138. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +5 -0
  139. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  140. package/dist/lib/components/workspace/conversation-workspace.component.js +18 -7
  141. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  142. package/dist/lib/conversations.module.d.ts +29 -26
  143. package/dist/lib/conversations.module.d.ts.map +1 -1
  144. package/dist/lib/conversations.module.js +37 -6
  145. package/dist/lib/conversations.module.js.map +1 -1
  146. package/dist/lib/models/conversation-state.model.d.ts +6 -3
  147. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  148. package/dist/lib/models/conversation-state.model.js.map +1 -1
  149. package/dist/lib/services/conversation-agent.service.d.ts +2 -2
  150. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  151. package/dist/lib/services/conversation-agent.service.js +6 -2
  152. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  153. package/dist/lib/services/mention-autocomplete.service.d.ts +17 -1
  154. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  155. package/dist/lib/services/mention-autocomplete.service.js +58 -2
  156. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  157. package/dist/lib/services/realtime-audio-recorder.d.ts +143 -0
  158. package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -0
  159. package/dist/lib/services/realtime-audio-recorder.js +379 -0
  160. package/dist/lib/services/realtime-audio-recorder.js.map +1 -0
  161. package/dist/lib/services/realtime-pcm-wav.d.ts +75 -0
  162. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -0
  163. package/dist/lib/services/realtime-pcm-wav.js +205 -0
  164. package/dist/lib/services/realtime-pcm-wav.js.map +1 -0
  165. package/dist/lib/services/realtime-session-review.service.d.ts +28 -1
  166. package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
  167. package/dist/lib/services/realtime-session-review.service.js +12 -3
  168. package/dist/lib/services/realtime-session-review.service.js.map +1 -1
  169. package/dist/lib/services/realtime-session.service.d.ts +210 -20
  170. package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
  171. package/dist/lib/services/realtime-session.service.js +452 -21
  172. package/dist/lib/services/realtime-session.service.js.map +1 -1
  173. package/dist/lib/services/realtime-sessions-adapter.js +1 -1
  174. package/dist/lib/services/realtime-sessions-adapter.js.map +1 -1
  175. package/dist/lib/services/ui-command-handler.service.d.ts +7 -2
  176. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  177. package/dist/lib/services/ui-command-handler.service.js +6 -2
  178. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  179. package/dist/lib/utils/plan-mode-preference.d.ts +62 -0
  180. package/dist/lib/utils/plan-mode-preference.d.ts.map +1 -0
  181. package/dist/lib/utils/plan-mode-preference.js +130 -0
  182. package/dist/lib/utils/plan-mode-preference.js.map +1 -0
  183. package/dist/public-api.d.ts +6 -0
  184. package/dist/public-api.d.ts.map +1 -1
  185. package/dist/public-api.js +8 -0
  186. package/dist/public-api.js.map +1 -1
  187. package/package.json +28 -26
  188. package/dist/__tests__/attachment-badge.test.d.ts +0 -2
  189. package/dist/__tests__/attachment-badge.test.d.ts.map +0 -1
  190. package/dist/__tests__/attachment-badge.test.js +0 -66
  191. package/dist/__tests__/attachment-badge.test.js.map +0 -1
  192. package/dist/__tests__/channel-optional-surface.test.d.ts +0 -2
  193. package/dist/__tests__/channel-optional-surface.test.d.ts.map +0 -1
  194. package/dist/__tests__/channel-optional-surface.test.js +0 -53
  195. package/dist/__tests__/channel-optional-surface.test.js.map +0 -1
  196. package/dist/__tests__/chat-events.test.d.ts +0 -14
  197. package/dist/__tests__/chat-events.test.d.ts.map +0 -1
  198. package/dist/__tests__/chat-events.test.js +0 -109
  199. package/dist/__tests__/chat-events.test.js.map +0 -1
  200. package/dist/__tests__/collections-full-view.test.d.ts +0 -2
  201. package/dist/__tests__/collections-full-view.test.d.ts.map +0 -1
  202. package/dist/__tests__/collections-full-view.test.js +0 -225
  203. package/dist/__tests__/collections-full-view.test.js.map +0 -1
  204. package/dist/__tests__/conversation-cache.test.d.ts +0 -2
  205. package/dist/__tests__/conversation-cache.test.d.ts.map +0 -1
  206. package/dist/__tests__/conversation-cache.test.js +0 -233
  207. package/dist/__tests__/conversation-cache.test.js.map +0 -1
  208. package/dist/__tests__/conversation-naming.test.d.ts +0 -2
  209. package/dist/__tests__/conversation-naming.test.d.ts.map +0 -1
  210. package/dist/__tests__/conversation-naming.test.js +0 -110
  211. package/dist/__tests__/conversation-naming.test.js.map +0 -1
  212. package/dist/__tests__/delegation-result-parser.test.d.ts +0 -2
  213. package/dist/__tests__/delegation-result-parser.test.d.ts.map +0 -1
  214. package/dist/__tests__/delegation-result-parser.test.js +0 -107
  215. package/dist/__tests__/delegation-result-parser.test.js.map +0 -1
  216. package/dist/__tests__/distinct-artifacts.test.d.ts +0 -2
  217. package/dist/__tests__/distinct-artifacts.test.d.ts.map +0 -1
  218. package/dist/__tests__/distinct-artifacts.test.js +0 -56
  219. package/dist/__tests__/distinct-artifacts.test.js.map +0 -1
  220. package/dist/__tests__/event-wiring.test.d.ts +0 -15
  221. package/dist/__tests__/event-wiring.test.d.ts.map +0 -1
  222. package/dist/__tests__/event-wiring.test.js +0 -100
  223. package/dist/__tests__/event-wiring.test.js.map +0 -1
  224. package/dist/__tests__/index.test.d.ts +0 -2
  225. package/dist/__tests__/index.test.d.ts.map +0 -1
  226. package/dist/__tests__/index.test.js +0 -7
  227. package/dist/__tests__/index.test.js.map +0 -1
  228. package/dist/__tests__/narration-template.test.d.ts +0 -2
  229. package/dist/__tests__/narration-template.test.d.ts.map +0 -1
  230. package/dist/__tests__/narration-template.test.js +0 -76
  231. package/dist/__tests__/narration-template.test.js.map +0 -1
  232. package/dist/__tests__/notification-model.test.d.ts +0 -2
  233. package/dist/__tests__/notification-model.test.d.ts.map +0 -1
  234. package/dist/__tests__/notification-model.test.js +0 -68
  235. package/dist/__tests__/notification-model.test.js.map +0 -1
  236. package/dist/__tests__/realtime-agent-picker-models.test.d.ts +0 -2
  237. package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +0 -1
  238. package/dist/__tests__/realtime-agent-picker-models.test.js +0 -49
  239. package/dist/__tests__/realtime-agent-picker-models.test.js.map +0 -1
  240. package/dist/__tests__/realtime-audio-visuals.test.d.ts +0 -2
  241. package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +0 -1
  242. package/dist/__tests__/realtime-audio-visuals.test.js +0 -123
  243. package/dist/__tests__/realtime-audio-visuals.test.js.map +0 -1
  244. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +0 -2
  245. package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +0 -1
  246. package/dist/__tests__/realtime-delegation-card-cancel.test.js +0 -48
  247. package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +0 -1
  248. package/dist/__tests__/realtime-disclosure.test.d.ts +0 -2
  249. package/dist/__tests__/realtime-disclosure.test.d.ts.map +0 -1
  250. package/dist/__tests__/realtime-disclosure.test.js +0 -164
  251. package/dist/__tests__/realtime-disclosure.test.js.map +0 -1
  252. package/dist/__tests__/realtime-pairing.test.d.ts +0 -2
  253. package/dist/__tests__/realtime-pairing.test.d.ts.map +0 -1
  254. package/dist/__tests__/realtime-pairing.test.js +0 -207
  255. package/dist/__tests__/realtime-pairing.test.js.map +0 -1
  256. package/dist/__tests__/realtime-review-lifecycle.test.d.ts +0 -2
  257. package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +0 -1
  258. package/dist/__tests__/realtime-review-lifecycle.test.js +0 -154
  259. package/dist/__tests__/realtime-review-lifecycle.test.js.map +0 -1
  260. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +0 -2
  261. package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +0 -1
  262. package/dist/__tests__/realtime-session-cancel-usage.test.js +0 -230
  263. package/dist/__tests__/realtime-session-cancel-usage.test.js.map +0 -1
  264. package/dist/__tests__/realtime-session-channels.test.d.ts +0 -2
  265. package/dist/__tests__/realtime-session-channels.test.d.ts.map +0 -1
  266. package/dist/__tests__/realtime-session-channels.test.js +0 -252
  267. package/dist/__tests__/realtime-session-channels.test.js.map +0 -1
  268. package/dist/__tests__/realtime-session-client-tools.test.d.ts +0 -2
  269. package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +0 -1
  270. package/dist/__tests__/realtime-session-client-tools.test.js +0 -103
  271. package/dist/__tests__/realtime-session-client-tools.test.js.map +0 -1
  272. package/dist/__tests__/realtime-session-minimized.test.d.ts +0 -2
  273. package/dist/__tests__/realtime-session-minimized.test.d.ts.map +0 -1
  274. package/dist/__tests__/realtime-session-minimized.test.js +0 -32
  275. package/dist/__tests__/realtime-session-minimized.test.js.map +0 -1
  276. package/dist/__tests__/realtime-session-mint.test.d.ts +0 -2
  277. package/dist/__tests__/realtime-session-mint.test.d.ts.map +0 -1
  278. package/dist/__tests__/realtime-session-mint.test.js +0 -69
  279. package/dist/__tests__/realtime-session-mint.test.js.map +0 -1
  280. package/dist/__tests__/realtime-session-policy.test.d.ts +0 -2
  281. package/dist/__tests__/realtime-session-policy.test.d.ts.map +0 -1
  282. package/dist/__tests__/realtime-session-policy.test.js +0 -303
  283. package/dist/__tests__/realtime-session-policy.test.js.map +0 -1
  284. package/dist/__tests__/realtime-session-review.service.test.d.ts +0 -2
  285. package/dist/__tests__/realtime-session-review.service.test.d.ts.map +0 -1
  286. package/dist/__tests__/realtime-session-review.service.test.js +0 -743
  287. package/dist/__tests__/realtime-session-review.service.test.js.map +0 -1
  288. package/dist/__tests__/realtime-session-state.test.d.ts +0 -2
  289. package/dist/__tests__/realtime-session-state.test.d.ts.map +0 -1
  290. package/dist/__tests__/realtime-session-state.test.js +0 -83
  291. package/dist/__tests__/realtime-session-state.test.js.map +0 -1
  292. package/dist/__tests__/realtime-session-timeline-card.test.d.ts +0 -2
  293. package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +0 -1
  294. package/dist/__tests__/realtime-session-timeline-card.test.js +0 -106
  295. package/dist/__tests__/realtime-session-timeline-card.test.js.map +0 -1
  296. package/dist/__tests__/realtime-session-timeline.test.d.ts +0 -2
  297. package/dist/__tests__/realtime-session-timeline.test.d.ts.map +0 -1
  298. package/dist/__tests__/realtime-session-timeline.test.js +0 -142
  299. package/dist/__tests__/realtime-session-timeline.test.js.map +0 -1
  300. package/dist/__tests__/realtime-sessions-adapter.test.d.ts +0 -19
  301. package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +0 -1
  302. package/dist/__tests__/realtime-sessions-adapter.test.js +0 -188
  303. package/dist/__tests__/realtime-sessions-adapter.test.js.map +0 -1
  304. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +0 -2
  305. package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +0 -1
  306. package/dist/__tests__/realtime-surface-panel-prefs.test.js +0 -100
  307. package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +0 -1
  308. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +0 -2
  309. package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +0 -1
  310. package/dist/__tests__/realtime-surface-tabs-model.test.js +0 -193
  311. package/dist/__tests__/realtime-surface-tabs-model.test.js.map +0 -1
  312. package/dist/__tests__/remote-browser-audio-player.test.d.ts +0 -2
  313. package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +0 -1
  314. package/dist/__tests__/remote-browser-audio-player.test.js +0 -137
  315. package/dist/__tests__/remote-browser-audio-player.test.js.map +0 -1
  316. package/dist/__tests__/remote-browser-channel.test.d.ts +0 -2
  317. package/dist/__tests__/remote-browser-channel.test.d.ts.map +0 -1
  318. package/dist/__tests__/remote-browser-channel.test.js +0 -585
  319. package/dist/__tests__/remote-browser-channel.test.js.map +0 -1
  320. package/dist/__tests__/search-service.test.d.ts +0 -2
  321. package/dist/__tests__/search-service.test.d.ts.map +0 -1
  322. package/dist/__tests__/search-service.test.js +0 -114
  323. package/dist/__tests__/search-service.test.js.map +0 -1
  324. package/dist/__tests__/slot-defaults.test.d.ts +0 -24
  325. package/dist/__tests__/slot-defaults.test.d.ts.map +0 -1
  326. package/dist/__tests__/slot-defaults.test.js +0 -63
  327. package/dist/__tests__/slot-defaults.test.js.map +0 -1
  328. package/dist/__tests__/toast-service.test.d.ts +0 -2
  329. package/dist/__tests__/toast-service.test.d.ts.map +0 -1
  330. package/dist/__tests__/toast-service.test.js +0 -143
  331. package/dist/__tests__/toast-service.test.js.map +0 -1
  332. package/dist/__tests__/user-authorization.test.d.ts +0 -2
  333. package/dist/__tests__/user-authorization.test.d.ts.map +0 -1
  334. package/dist/__tests__/user-authorization.test.js +0 -97
  335. package/dist/__tests__/user-authorization.test.js.map +0 -1
  336. package/dist/__tests__/voice-session-narration.test.d.ts +0 -2
  337. package/dist/__tests__/voice-session-narration.test.d.ts.map +0 -1
  338. package/dist/__tests__/voice-session-narration.test.js +0 -609
  339. package/dist/__tests__/voice-session-narration.test.js.map +0 -1
  340. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +0 -2
  341. package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +0 -1
  342. package/dist/__tests__/whiteboard-artifact-viewer.test.js +0 -101
  343. package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +0 -1
  344. package/dist/__tests__/whiteboard-channel.test.d.ts +0 -2
  345. package/dist/__tests__/whiteboard-channel.test.d.ts.map +0 -1
  346. package/dist/__tests__/whiteboard-channel.test.js +0 -260
  347. package/dist/__tests__/whiteboard-channel.test.js.map +0 -1
  348. package/dist/__tests__/whiteboard-restore-state.test.d.ts +0 -2
  349. package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +0 -1
  350. package/dist/__tests__/whiteboard-restore-state.test.js +0 -108
  351. package/dist/__tests__/whiteboard-restore-state.test.js.map +0 -1
@@ -2,8 +2,9 @@ import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { RouterModule } from '@angular/router';
5
+ import { OverlayModule } from '@angular/cdk/overlay';
5
6
  // MJ UI Components
6
- import { MJButtonDirective, MJDatepickerComponent, MJDialogComponent, MJDialogActionsComponent } from '@memberjunction/ng-ui-components';
7
+ import { MJButtonDirective, MJDatepickerComponent, MJDialogComponent, MJDialogActionsComponent, MJEmptyStateComponent, MJAlertComponent, MJAccordionModule } from '@memberjunction/ng-ui-components';
7
8
  // MemberJunction modules
8
9
  import { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';
9
10
  import { CodeEditorModule } from '@memberjunction/ng-code-editor';
@@ -72,6 +73,10 @@ import { LoadRealtimeWhiteboardChannel } from './components/realtime/whiteboard/
72
73
  import { LoadWhiteboardArtifactViewer } from './components/realtime/whiteboard/whiteboard-artifact-viewer.component';
73
74
  import { LoadRealtimeRemoteBrowserChannel } from './components/realtime/remote-browser/remote-browser-channel';
74
75
  import { RemoteBrowserSurfaceComponent } from './components/realtime/remote-browser/remote-browser-surface.component';
76
+ import { LoadRealtimeMediaChannel } from './components/realtime/media/media-channel';
77
+ import { LoadClientContextChannel } from './components/realtime/channels/client-context-channel';
78
+ import { RealtimeMediaSurfaceComponent } from './components/realtime/media/realtime-media-surface.component';
79
+ import { RealtimeEvidencePlaybackComponent } from './components/realtime/evidence-playback/realtime-evidence-playback.component';
75
80
  // Directives
76
81
  import { SearchShortcutDirective } from './directives/search-shortcut.directive';
77
82
  // PR 2c — Widget extension surface (standalone)
@@ -92,6 +97,10 @@ LoadRealtimeWhiteboardChannel();
92
97
  // Remote Browser channel plugin — same registry-driven resolution (ClientPluginClass
93
98
  // 'RealtimeRemoteBrowserChannel'); the static call defeats tree-shaking of its @RegisterClass.
94
99
  LoadRealtimeRemoteBrowserChannel();
100
+ // Media channel plugin — same registry-driven resolution (ClientPluginClass
101
+ // 'RealtimeMediaChannel'); the static call defeats tree-shaking of its @RegisterClass.
102
+ LoadRealtimeMediaChannel();
103
+ LoadClientContextChannel();
95
104
  // Whiteboard ARTIFACT VIEWER plugin — resolved by the artifact plugin host via the
96
105
  // ClassFactory (keyed by the artifact type's DriverClass), same tree-shaking concern.
97
106
  LoadWhiteboardArtifactViewer();
@@ -150,9 +159,13 @@ export class ConversationsModule {
150
159
  FormsModule,
151
160
  ReactiveFormsModule,
152
161
  RouterModule,
162
+ OverlayModule,
153
163
  MJDatepickerComponent,
154
164
  MJDialogComponent,
155
165
  MJDialogActionsComponent,
166
+ MJEmptyStateComponent,
167
+ MJAlertComponent,
168
+ MJAccordionModule,
156
169
  ContainerDirectivesModule,
157
170
  CodeEditorModule,
158
171
  ArtifactsModule,
@@ -175,7 +188,9 @@ export class ConversationsModule {
175
188
  MJChatMessageBubbleDefaultComponent,
176
189
  RealtimeSessionOverlayComponent,
177
190
  RealtimeWhiteboardHostComponent,
178
- RemoteBrowserSurfaceComponent] });
191
+ RemoteBrowserSurfaceComponent,
192
+ RealtimeMediaSurfaceComponent,
193
+ RealtimeEvidencePlaybackComponent] });
179
194
  }
180
195
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationsModule, [{
181
196
  type: NgModule,
@@ -189,10 +204,14 @@ export class ConversationsModule {
189
204
  FormsModule,
190
205
  ReactiveFormsModule,
191
206
  RouterModule,
207
+ OverlayModule,
192
208
  MJButtonDirective,
193
209
  MJDatepickerComponent,
194
210
  MJDialogComponent,
195
211
  MJDialogActionsComponent,
212
+ MJEmptyStateComponent,
213
+ MJAlertComponent,
214
+ MJAccordionModule,
196
215
  ContainerDirectivesModule,
197
216
  CodeEditorModule,
198
217
  ArtifactsModule,
@@ -219,7 +238,9 @@ export class ConversationsModule {
219
238
  RealtimeAgentPickerComponent,
220
239
  RealtimeSessionOverlayComponent,
221
240
  RealtimeWhiteboardHostComponent,
222
- RemoteBrowserSurfaceComponent
241
+ RemoteBrowserSurfaceComponent,
242
+ RealtimeMediaSurfaceComponent,
243
+ RealtimeEvidencePlaybackComponent
223
244
  ],
224
245
  exports: [
225
246
  ...COMPONENTS,
@@ -238,7 +259,9 @@ export class ConversationsModule {
238
259
  RealtimeAgentPickerComponent,
239
260
  RealtimeSessionOverlayComponent,
240
261
  RealtimeWhiteboardHostComponent,
241
- RemoteBrowserSurfaceComponent
262
+ RemoteBrowserSurfaceComponent,
263
+ RealtimeMediaSurfaceComponent,
264
+ RealtimeEvidencePlaybackComponent
242
265
  ]
243
266
  }]
244
267
  }], null, null); })();
@@ -290,10 +313,14 @@ export class ConversationsModule {
290
313
  FormsModule,
291
314
  ReactiveFormsModule,
292
315
  RouterModule,
316
+ OverlayModule,
293
317
  MJButtonDirective,
294
318
  MJDatepickerComponent,
295
319
  MJDialogComponent,
296
320
  MJDialogActionsComponent,
321
+ MJEmptyStateComponent,
322
+ MJAlertComponent,
323
+ MJAccordionModule,
297
324
  ContainerDirectivesModule,
298
325
  CodeEditorModule,
299
326
  ArtifactsModule,
@@ -320,7 +347,9 @@ export class ConversationsModule {
320
347
  RealtimeAgentPickerComponent,
321
348
  RealtimeSessionOverlayComponent,
322
349
  RealtimeWhiteboardHostComponent,
323
- RemoteBrowserSurfaceComponent], exports: [MessageItemComponent,
350
+ RemoteBrowserSurfaceComponent,
351
+ RealtimeMediaSurfaceComponent,
352
+ RealtimeEvidencePlaybackComponent], exports: [MessageItemComponent,
324
353
  MessageListComponent,
325
354
  MessageInputComponent,
326
355
  MessageInputBoxComponent,
@@ -379,5 +408,7 @@ export class ConversationsModule {
379
408
  RealtimeAgentPickerComponent,
380
409
  RealtimeSessionOverlayComponent,
381
410
  RealtimeWhiteboardHostComponent,
382
- RemoteBrowserSurfaceComponent] }); })();
411
+ RemoteBrowserSurfaceComponent,
412
+ RealtimeMediaSurfaceComponent,
413
+ RealtimeEvidencePlaybackComponent] }); })();
383
414
  //# sourceMappingURL=conversations.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.module.js","sourceRoot":"","sources":["../../src/lib/conversations.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\n// MJ UI Components\nimport { MJButtonDirective, MJDatepickerComponent, MJDialogComponent, MJDialogActionsComponent } from '@memberjunction/ng-ui-components';\n\n// MemberJunction modules\nimport { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { ArtifactsModule } from '@memberjunction/ng-artifacts';\nimport { TestingModule } from '@memberjunction/ng-testing';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\n// Markdown module\nimport { MarkdownModule } from '@memberjunction/ng-markdown';\n\n// Resource permissions (generic share dialog)\nimport { ResourcePermissionsModule } from '@memberjunction/ng-resource-permissions';\n\n// Components\nimport { MessageItemComponent } from './components/message/message-item.component';\nimport { MessageListComponent } from './components/message/message-list.component';\nimport { MessageInputComponent } from './components/message/message-input.component';\nimport { MessageInputBoxComponent } from './components/message/message-input-box.component';\nimport { DynamicFormsModule } from '@memberjunction/ng-forms';\nimport { ActionableCommandsComponent } from './components/message/actionable-commands.component';\nimport { MentionDropdownComponent } from './components/mention/mention-dropdown.component';\nimport { MentionEditorComponent } from './components/mention/mention-editor.component';\nimport { ConversationMessageRatingComponent } from './components/message/conversation-message-rating.component';\nimport { ConversationWorkspaceComponent } from './components/workspace/conversation-workspace.component';\nimport { ConversationNavigationComponent } from './components/navigation/conversation-navigation.component';\nimport { ConversationSidebarComponent } from './components/sidebar/conversation-sidebar.component';\nimport { ConversationListComponent } from './components/conversation/conversation-list.component';\nimport { ConversationChatAreaComponent } from './components/conversation/conversation-chat-area.component';\nimport { ConversationEmptyStateComponent } from './components/conversation/conversation-empty-state.component';\nimport { ConversationAgentPickerComponent } from './components/conversation/conversation-agent-picker.component';\nimport { ConversationModePickerComponent } from './components/conversation/conversation-mode-picker.component';\nimport { ThreadPanelComponent } from './components/thread/thread-panel.component';\nimport { CollectionTreeComponent } from './components/collection/collection-tree.component';\nimport { CollectionViewComponent } from './components/collection/collection-view.component';\nimport { CollectionArtifactCardComponent } from './components/collection/collection-artifact-card.component';\nimport { LibraryFullViewComponent } from './components/library/library-full-view.component';\nimport { CollectionFormModalComponent } from './components/collection/collection-form-modal.component';\nimport { ArtifactCreateModalComponent } from './components/collection/artifact-create-modal.component';\nimport { CollectionsFullViewComponent } from './components/collection/collections-full-view.component';\nimport { ProjectSelectorComponent } from './components/project/project-selector.component';\nimport { ProjectFormModalComponent } from './components/project/project-form-modal.component';\nimport { TasksFullViewComponent } from './components/task/tasks-full-view.component';\nimport { TasksDropdownComponent } from './components/tasks/tasks-dropdown.component';\nimport { TaskWidgetComponent } from './components/tasks/task-widget.component';\nimport { AgentProcessPanelComponent } from './components/agent/agent-process-panel.component';\nimport { ActiveAgentIndicatorComponent } from './components/agent/active-agent-indicator.component';\nimport { ActiveTasksPanelComponent } from './components/active-tasks/active-tasks-panel.component';\nimport { ShareModalComponent } from './components/share/share-modal.component';\nimport { MembersModalComponent } from './components/members/members-modal.component';\nimport { ExportModalComponent } from './components/export/export-modal.component';\nimport { SearchPanelComponent } from './components/search/search-panel.component';\nimport { NotificationBadgeComponent } from './components/notification/notification-badge.component';\nimport { ActivityIndicatorComponent } from './components/notification/activity-indicator.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { InputDialogComponent } from './components/dialogs/input-dialog.component';\nimport { RatingDialogComponent } from './components/dialogs/rating-dialog.component';\nimport { CollectionShareModalComponent } from './components/collection/collection-share-modal.component';\nimport { UserPickerComponent } from './components/shared/user-picker.component';\nimport { ArtifactCollectionPickerModalComponent } from './components/collection/artifact-collection-picker-modal.component';\nimport { ArtifactShareModalComponent } from './components/artifact/artifact-share-modal.component';\nimport { GlobalTasksPanelComponent } from './components/global-tasks/global-tasks-panel.component';\nimport { ImageViewerComponent } from './components/attachment/image-viewer.component';\nimport { PinnedMessagesPanelComponent } from './components/conversation/pinned-messages-panel.component';\nimport { ChatAgentsOverlayComponent } from './components/overlay/chat-overlay.component';\nimport { RealtimeAgentPickerComponent } from './components/realtime/realtime-agent-picker.component';\nimport { RealtimeSessionOverlayComponent } from './components/realtime/realtime-session-overlay.component';\nimport { RealtimeWhiteboardHostComponent } from '@memberjunction/ng-whiteboard';\nimport { LoadRealtimeWhiteboardChannel } from './components/realtime/whiteboard/whiteboard-channel';\nimport { LoadWhiteboardArtifactViewer } from './components/realtime/whiteboard/whiteboard-artifact-viewer.component';\nimport { LoadRealtimeRemoteBrowserChannel } from './components/realtime/remote-browser/remote-browser-channel';\nimport { RemoteBrowserSurfaceComponent } from './components/realtime/remote-browser/remote-browser-surface.component';\n\n// Directives\nimport { SearchShortcutDirective } from './directives/search-shortcut.directive';\n\n// PR 2c — Widget extension surface (standalone)\nimport { ChatSlotDirective } from './directives/chat-slot.directive';\nimport { MJChatEmptyStateDefaultComponent } from './components/slots/mj-chat-empty-state-default.component';\nimport { MJChatAgentPresenceDefaultComponent } from './components/slots/mj-chat-agent-presence-default.component';\nimport { MJChatHeaderDefaultComponent } from './components/slots/mj-chat-header-default.component';\nimport { MJChatMessageExtraDefaultComponent } from './components/slots/mj-chat-message-extra-default.component';\nimport { MJChatDemonstrationSurfaceDefaultComponent } from './components/slots/mj-chat-demonstration-surface-default.component';\nimport { MJChatMessageBubbleDefaultComponent } from './components/slots/mj-chat-message-bubble-default.component';\n\n// Tree-shaking prevention for interactive-channel CLIENT PLUGINS: they are resolved\n// dynamically through the MJ ClassFactory (keyed by the `MJ: AI Agent Channels` registry's\n// ClientPluginClass), so these static calls are what keep their @RegisterClass side effects\n// from being eliminated by the bundler. They live here (not in RealtimeSessionService) because\n// channel plugins carry Angular surface components — the service stays component-free.\nLoadRealtimeWhiteboardChannel();\n// Remote Browser channel plugin — same registry-driven resolution (ClientPluginClass\n// 'RealtimeRemoteBrowserChannel'); the static call defeats tree-shaking of its @RegisterClass.\nLoadRealtimeRemoteBrowserChannel();\n// Whiteboard ARTIFACT VIEWER plugin — resolved by the artifact plugin host via the\n// ClassFactory (keyed by the artifact type's DriverClass), same tree-shaking concern.\nLoadWhiteboardArtifactViewer();\n\n// Export all components (excluding standalone components)\nconst COMPONENTS = [\n MessageItemComponent,\n MessageListComponent,\n MessageInputComponent,\n MessageInputBoxComponent,\n ActionableCommandsComponent,\n MentionDropdownComponent,\n MentionEditorComponent,\n ConversationMessageRatingComponent,\n ConversationWorkspaceComponent,\n ConversationNavigationComponent,\n ConversationSidebarComponent,\n ConversationListComponent,\n ConversationChatAreaComponent,\n ConversationEmptyStateComponent,\n ConversationAgentPickerComponent,\n ConversationModePickerComponent,\n ThreadPanelComponent,\n CollectionTreeComponent,\n CollectionViewComponent,\n CollectionArtifactCardComponent,\n LibraryFullViewComponent,\n CollectionFormModalComponent,\n ArtifactCreateModalComponent,\n CollectionsFullViewComponent,\n ProjectSelectorComponent,\n ProjectFormModalComponent,\n // TasksFullViewComponent - now standalone, imported below\n TasksDropdownComponent,\n TaskWidgetComponent,\n AgentProcessPanelComponent,\n ActiveAgentIndicatorComponent,\n ActiveTasksPanelComponent,\n ShareModalComponent,\n MembersModalComponent,\n ExportModalComponent,\n SearchPanelComponent,\n NotificationBadgeComponent,\n ActivityIndicatorComponent,\n ToastComponent,\n InputDialogComponent,\n RatingDialogComponent,\n GlobalTasksPanelComponent,\n ImageViewerComponent,\n PinnedMessagesPanelComponent,\n ChatAgentsOverlayComponent\n];\n\n@NgModule({\n declarations: [\n ...COMPONENTS,\n SearchShortcutDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n MJButtonDirective,\n MJDatepickerComponent,\n MJDialogComponent,\n MJDialogActionsComponent,\n ContainerDirectivesModule,\n CodeEditorModule,\n ArtifactsModule,\n TestingModule,\n SharedGenericModule,\n MarkdownModule,\n DynamicFormsModule,\n ResourcePermissionsModule,\n // Standalone components\n TasksFullViewComponent,\n CollectionShareModalComponent,\n UserPickerComponent,\n ArtifactCollectionPickerModalComponent,\n ArtifactShareModalComponent,\n // PR 2c — Widget extension surface (standalone)\n ChatSlotDirective,\n MJChatEmptyStateDefaultComponent,\n MJChatAgentPresenceDefaultComponent,\n MJChatHeaderDefaultComponent,\n MJChatMessageExtraDefaultComponent,\n MJChatDemonstrationSurfaceDefaultComponent,\n MJChatMessageBubbleDefaultComponent,\n // Realtime / voice (PR #2787)\n RealtimeAgentPickerComponent,\n RealtimeSessionOverlayComponent,\n RealtimeWhiteboardHostComponent,\n RemoteBrowserSurfaceComponent\n ],\n exports: [\n ...COMPONENTS,\n SearchShortcutDirective,\n // Standalone components\n TasksFullViewComponent,\n // PR 2c — Widget extension surface\n ChatSlotDirective,\n MJChatEmptyStateDefaultComponent,\n MJChatAgentPresenceDefaultComponent,\n MJChatHeaderDefaultComponent,\n MJChatMessageExtraDefaultComponent,\n MJChatDemonstrationSurfaceDefaultComponent,\n MJChatMessageBubbleDefaultComponent,\n // Realtime / voice (PR #2787)\n RealtimeAgentPickerComponent,\n RealtimeSessionOverlayComponent,\n RealtimeWhiteboardHostComponent,\n RemoteBrowserSurfaceComponent\n ]\n})\nexport class ConversationsModule { }"]}
1
+ {"version":3,"file":"conversations.module.js","sourceRoot":"","sources":["../../src/lib/conversations.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n// MJ UI Components\nimport { MJButtonDirective, MJDatepickerComponent, MJDialogComponent, MJDialogActionsComponent, MJEmptyStateComponent, MJAlertComponent, MJAccordionModule } from '@memberjunction/ng-ui-components';\n\n// MemberJunction modules\nimport { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';\nimport { CodeEditorModule } from '@memberjunction/ng-code-editor';\nimport { ArtifactsModule } from '@memberjunction/ng-artifacts';\nimport { TestingModule } from '@memberjunction/ng-testing';\nimport { SharedGenericModule } from '@memberjunction/ng-shared-generic';\n\n// Markdown module\nimport { MarkdownModule } from '@memberjunction/ng-markdown';\n\n// Resource permissions (generic share dialog)\nimport { ResourcePermissionsModule } from '@memberjunction/ng-resource-permissions';\n\n// Components\nimport { MessageItemComponent } from './components/message/message-item.component';\nimport { MessageListComponent } from './components/message/message-list.component';\nimport { MessageInputComponent } from './components/message/message-input.component';\nimport { MessageInputBoxComponent } from './components/message/message-input-box.component';\nimport { DynamicFormsModule } from '@memberjunction/ng-forms';\nimport { ActionableCommandsComponent } from './components/message/actionable-commands.component';\nimport { MentionDropdownComponent } from './components/mention/mention-dropdown.component';\nimport { MentionEditorComponent } from './components/mention/mention-editor.component';\nimport { ConversationMessageRatingComponent } from './components/message/conversation-message-rating.component';\nimport { ConversationWorkspaceComponent } from './components/workspace/conversation-workspace.component';\nimport { ConversationNavigationComponent } from './components/navigation/conversation-navigation.component';\nimport { ConversationSidebarComponent } from './components/sidebar/conversation-sidebar.component';\nimport { ConversationListComponent } from './components/conversation/conversation-list.component';\nimport { ConversationChatAreaComponent } from './components/conversation/conversation-chat-area.component';\nimport { ConversationEmptyStateComponent } from './components/conversation/conversation-empty-state.component';\nimport { ConversationAgentPickerComponent } from './components/conversation/conversation-agent-picker.component';\nimport { ConversationModePickerComponent } from './components/conversation/conversation-mode-picker.component';\nimport { ThreadPanelComponent } from './components/thread/thread-panel.component';\nimport { CollectionTreeComponent } from './components/collection/collection-tree.component';\nimport { CollectionViewComponent } from './components/collection/collection-view.component';\nimport { CollectionArtifactCardComponent } from './components/collection/collection-artifact-card.component';\nimport { LibraryFullViewComponent } from './components/library/library-full-view.component';\nimport { CollectionFormModalComponent } from './components/collection/collection-form-modal.component';\nimport { ArtifactCreateModalComponent } from './components/collection/artifact-create-modal.component';\nimport { CollectionsFullViewComponent } from './components/collection/collections-full-view.component';\nimport { ProjectSelectorComponent } from './components/project/project-selector.component';\nimport { ProjectFormModalComponent } from './components/project/project-form-modal.component';\nimport { TasksFullViewComponent } from './components/task/tasks-full-view.component';\nimport { TasksDropdownComponent } from './components/tasks/tasks-dropdown.component';\nimport { TaskWidgetComponent } from './components/tasks/task-widget.component';\nimport { AgentProcessPanelComponent } from './components/agent/agent-process-panel.component';\nimport { ActiveAgentIndicatorComponent } from './components/agent/active-agent-indicator.component';\nimport { ActiveTasksPanelComponent } from './components/active-tasks/active-tasks-panel.component';\nimport { ShareModalComponent } from './components/share/share-modal.component';\nimport { MembersModalComponent } from './components/members/members-modal.component';\nimport { ExportModalComponent } from './components/export/export-modal.component';\nimport { SearchPanelComponent } from './components/search/search-panel.component';\nimport { NotificationBadgeComponent } from './components/notification/notification-badge.component';\nimport { ActivityIndicatorComponent } from './components/notification/activity-indicator.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { InputDialogComponent } from './components/dialogs/input-dialog.component';\nimport { RatingDialogComponent } from './components/dialogs/rating-dialog.component';\nimport { CollectionShareModalComponent } from './components/collection/collection-share-modal.component';\nimport { UserPickerComponent } from './components/shared/user-picker.component';\nimport { ArtifactCollectionPickerModalComponent } from './components/collection/artifact-collection-picker-modal.component';\nimport { ArtifactShareModalComponent } from './components/artifact/artifact-share-modal.component';\nimport { GlobalTasksPanelComponent } from './components/global-tasks/global-tasks-panel.component';\nimport { ImageViewerComponent } from './components/attachment/image-viewer.component';\nimport { PinnedMessagesPanelComponent } from './components/conversation/pinned-messages-panel.component';\nimport { ChatAgentsOverlayComponent } from './components/overlay/chat-overlay.component';\nimport { RealtimeAgentPickerComponent } from './components/realtime/realtime-agent-picker.component';\nimport { RealtimeSessionOverlayComponent } from './components/realtime/realtime-session-overlay.component';\nimport { RealtimeWhiteboardHostComponent } from '@memberjunction/ng-whiteboard';\nimport { LoadRealtimeWhiteboardChannel } from './components/realtime/whiteboard/whiteboard-channel';\nimport { LoadWhiteboardArtifactViewer } from './components/realtime/whiteboard/whiteboard-artifact-viewer.component';\nimport { LoadRealtimeRemoteBrowserChannel } from './components/realtime/remote-browser/remote-browser-channel';\nimport { RemoteBrowserSurfaceComponent } from './components/realtime/remote-browser/remote-browser-surface.component';\nimport { LoadRealtimeMediaChannel } from './components/realtime/media/media-channel';\nimport { LoadClientContextChannel } from './components/realtime/channels/client-context-channel';\nimport { RealtimeMediaSurfaceComponent } from './components/realtime/media/realtime-media-surface.component';\nimport { RealtimeEvidencePlaybackComponent } from './components/realtime/evidence-playback/realtime-evidence-playback.component';\n\n// Directives\nimport { SearchShortcutDirective } from './directives/search-shortcut.directive';\n\n// PR 2c — Widget extension surface (standalone)\nimport { ChatSlotDirective } from './directives/chat-slot.directive';\nimport { MJChatEmptyStateDefaultComponent } from './components/slots/mj-chat-empty-state-default.component';\nimport { MJChatAgentPresenceDefaultComponent } from './components/slots/mj-chat-agent-presence-default.component';\nimport { MJChatHeaderDefaultComponent } from './components/slots/mj-chat-header-default.component';\nimport { MJChatMessageExtraDefaultComponent } from './components/slots/mj-chat-message-extra-default.component';\nimport { MJChatDemonstrationSurfaceDefaultComponent } from './components/slots/mj-chat-demonstration-surface-default.component';\nimport { MJChatMessageBubbleDefaultComponent } from './components/slots/mj-chat-message-bubble-default.component';\n\n// Tree-shaking prevention for interactive-channel CLIENT PLUGINS: they are resolved\n// dynamically through the MJ ClassFactory (keyed by the `MJ: AI Agent Channels` registry's\n// ClientPluginClass), so these static calls are what keep their @RegisterClass side effects\n// from being eliminated by the bundler. They live here (not in RealtimeSessionService) because\n// channel plugins carry Angular surface components — the service stays component-free.\nLoadRealtimeWhiteboardChannel();\n// Remote Browser channel plugin — same registry-driven resolution (ClientPluginClass\n// 'RealtimeRemoteBrowserChannel'); the static call defeats tree-shaking of its @RegisterClass.\nLoadRealtimeRemoteBrowserChannel();\n// Media channel plugin — same registry-driven resolution (ClientPluginClass\n// 'RealtimeMediaChannel'); the static call defeats tree-shaking of its @RegisterClass.\nLoadRealtimeMediaChannel();\nLoadClientContextChannel();\n// Whiteboard ARTIFACT VIEWER plugin — resolved by the artifact plugin host via the\n// ClassFactory (keyed by the artifact type's DriverClass), same tree-shaking concern.\nLoadWhiteboardArtifactViewer();\n\n// Export all components (excluding standalone components)\nconst COMPONENTS = [\n MessageItemComponent,\n MessageListComponent,\n MessageInputComponent,\n MessageInputBoxComponent,\n ActionableCommandsComponent,\n MentionDropdownComponent,\n MentionEditorComponent,\n ConversationMessageRatingComponent,\n ConversationWorkspaceComponent,\n ConversationNavigationComponent,\n ConversationSidebarComponent,\n ConversationListComponent,\n ConversationChatAreaComponent,\n ConversationEmptyStateComponent,\n ConversationAgentPickerComponent,\n ConversationModePickerComponent,\n ThreadPanelComponent,\n CollectionTreeComponent,\n CollectionViewComponent,\n CollectionArtifactCardComponent,\n LibraryFullViewComponent,\n CollectionFormModalComponent,\n ArtifactCreateModalComponent,\n CollectionsFullViewComponent,\n ProjectSelectorComponent,\n ProjectFormModalComponent,\n // TasksFullViewComponent - now standalone, imported below\n TasksDropdownComponent,\n TaskWidgetComponent,\n AgentProcessPanelComponent,\n ActiveAgentIndicatorComponent,\n ActiveTasksPanelComponent,\n ShareModalComponent,\n MembersModalComponent,\n ExportModalComponent,\n SearchPanelComponent,\n NotificationBadgeComponent,\n ActivityIndicatorComponent,\n ToastComponent,\n InputDialogComponent,\n RatingDialogComponent,\n GlobalTasksPanelComponent,\n ImageViewerComponent,\n PinnedMessagesPanelComponent,\n ChatAgentsOverlayComponent\n];\n\n@NgModule({\n declarations: [\n ...COMPONENTS,\n SearchShortcutDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule,\n OverlayModule,\n MJButtonDirective,\n MJDatepickerComponent,\n MJDialogComponent,\n MJDialogActionsComponent,\n MJEmptyStateComponent,\n MJAlertComponent,\n MJAccordionModule,\n ContainerDirectivesModule,\n CodeEditorModule,\n ArtifactsModule,\n TestingModule,\n SharedGenericModule,\n MarkdownModule,\n DynamicFormsModule,\n ResourcePermissionsModule,\n // Standalone components\n TasksFullViewComponent,\n CollectionShareModalComponent,\n UserPickerComponent,\n ArtifactCollectionPickerModalComponent,\n ArtifactShareModalComponent,\n // PR 2c — Widget extension surface (standalone)\n ChatSlotDirective,\n MJChatEmptyStateDefaultComponent,\n MJChatAgentPresenceDefaultComponent,\n MJChatHeaderDefaultComponent,\n MJChatMessageExtraDefaultComponent,\n MJChatDemonstrationSurfaceDefaultComponent,\n MJChatMessageBubbleDefaultComponent,\n // Realtime / voice (PR #2787)\n RealtimeAgentPickerComponent,\n RealtimeSessionOverlayComponent,\n RealtimeWhiteboardHostComponent,\n RemoteBrowserSurfaceComponent,\n RealtimeMediaSurfaceComponent,\n RealtimeEvidencePlaybackComponent\n ],\n exports: [\n ...COMPONENTS,\n SearchShortcutDirective,\n // Standalone components\n TasksFullViewComponent,\n // PR 2c — Widget extension surface\n ChatSlotDirective,\n MJChatEmptyStateDefaultComponent,\n MJChatAgentPresenceDefaultComponent,\n MJChatHeaderDefaultComponent,\n MJChatMessageExtraDefaultComponent,\n MJChatDemonstrationSurfaceDefaultComponent,\n MJChatMessageBubbleDefaultComponent,\n // Realtime / voice (PR #2787)\n RealtimeAgentPickerComponent,\n RealtimeSessionOverlayComponent,\n RealtimeWhiteboardHostComponent,\n RemoteBrowserSurfaceComponent,\n RealtimeMediaSurfaceComponent,\n RealtimeEvidencePlaybackComponent\n ]\n})\nexport class ConversationsModule { }"]}
@@ -81,9 +81,9 @@ export type ConversationGroupBy = 'project' | 'date' | 'none';
81
81
  /**
82
82
  * Type of entity being mentioned
83
83
  */
84
- export type MentionType = 'agent' | 'user' | 'entity' | 'query';
84
+ export type MentionType = 'agent' | 'user' | 'entity' | 'query' | 'skill';
85
85
  /**
86
- * Represents a mention in a message (@Agent or @User)
86
+ * Represents a mention in a message (@Agent, @User, #Entity, or /Skill)
87
87
  */
88
88
  export interface Mention {
89
89
  type: MentionType;
@@ -92,12 +92,15 @@ export interface Mention {
92
92
  configurationId?: string;
93
93
  }
94
94
  /**
95
- * Result of parsing mentions from a message
95
+ * Result of parsing mentions from a message.
96
+ * Structurally mirrors `MentionParseResult` from `@memberjunction/conversations-runtime`
97
+ * (deliberate duplicate — cross-package re-exports are prohibited). Keep in sync.
96
98
  */
97
99
  export interface MentionParseResult {
98
100
  mentions: Mention[];
99
101
  agentMention: Mention | null;
100
102
  userMentions: Mention[];
101
103
  entityMentions: Mention[];
104
+ skillMentions: Mention[];
102
105
  }
103
106
  //# sourceMappingURL=conversation-state.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-state.model.d.ts","sourceRoot":"","sources":["../../../src/lib/models/conversation-state.model.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,0BAA0B,EAC3B,MAAM,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,EAAE;QACT,0BAA0B;QAC1B,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,2CAA2C;QAC3C,OAAO,EAAE,uBAAuB,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,yDAAyD;IACzD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,OAAO,EAAE,uBAAuB,CAAC;KAClC,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,cAAc,EAAE,OAAO,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"conversation-state.model.d.ts","sourceRoot":"","sources":["../../../src/lib/models/conversation-state.model.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,0BAA0B,EAC3B,MAAM,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,EAAE;QACT,0BAA0B;QAC1B,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,2CAA2C;QAC3C,OAAO,EAAE,uBAAuB,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,yDAAyD;IACzD,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE;QAC/B,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,OAAO,EAAE,uBAAuB,CAAC;KAClC,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,cAAc,EAAE,OAAO,EAAE,CAAC;IAC1B,aAAa,EAAE,OAAO,EAAE,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-state.model.js","sourceRoot":"","sources":["../../../src/lib/models/conversation-state.model.ts"],"names":[],"mappings":"","sourcesContent":["import {\n MJArtifactEntity,\n MJArtifactVersionEntity\n} from '@memberjunction/core-entities';\n\nimport {\n MJAIAgentRunEntityExtended\n} from \"@memberjunction/ai-core-plus\";\n\n/**\n * Peripheral data loaded for a conversation detail message\n * Contains related entities like agent runs and artifacts\n */\nexport interface ConversationDetailPeripheralData {\n /** Agent run information if this message was generated by an agent */\n agentRun?: MJAIAgentRunEntityExtended;\n /** Artifact information if this message has an output artifact */\n artifact?: {\n /** The artifact entity */\n artifact: MJArtifactEntity;\n /** The specific version of the artifact */\n version: MJArtifactVersionEntity;\n };\n}\n\n/**\n * Type-safe maps for peripheral data indexed by ConversationDetailID\n */\nexport interface PeripheralDataMaps {\n /** Map of ConversationDetailID -> AIAgentRun */\n agentRunsByDetailId: Map<string, MJAIAgentRunEntityExtended>;\n /** Map of ConversationDetailID -> {artifact, version} */\n artifactsByDetailId: Map<string, {\n artifact: MJArtifactEntity;\n version: MJArtifactVersionEntity;\n }>;\n}\n\n/**\n * Represents an active agent process\n */\nexport interface AgentProcess {\n id: string;\n agentId: string;\n agentName: string;\n agentColor: string;\n status: 'pending' | 'in_progress' | 'complete' | 'failed';\n message: string;\n progress?: number;\n startedAt: Date;\n}\n\n/**\n * Options for filtering tasks\n */\nexport interface TaskFilters {\n status?: string[];\n projectId?: string;\n assignedToUserId?: string;\n assignedToAgentId?: string;\n environmentId?: string;\n}\n\n/**\n * Options for creating public links\n */\nexport interface PublicLinkOptions {\n password?: string;\n expiresAt?: Date;\n maxViews?: number;\n}\n\n/**\n * Tab types for the main navigation\n */\nexport type NavigationTab = 'conversations' | 'collections' | 'tasks';\n\n/**\n * Layout modes for the workspace\n */\nexport type WorkspaceLayout = 'full' | 'compact' | 'embedded';\n\n/**\n * View modes for collections\n */\nexport type CollectionViewMode = 'grid' | 'list';\n\n/**\n * Sort options for artifacts\n */\nexport type ArtifactSortBy = 'name' | 'date' | 'type' | 'modified';\n\n/**\n * Grouping options for conversations\n */\nexport type ConversationGroupBy = 'project' | 'date' | 'none';\n\n/**\n * Type of entity being mentioned\n */\nexport type MentionType = 'agent' | 'user' | 'entity' | 'query';\n\n/**\n * Represents a mention in a message (@Agent or @User)\n */\nexport interface Mention {\n type: MentionType;\n id: string;\n name: string;\n configurationId?: string; // Optional AI configuration preset ID for agents\n}\n\n/**\n * Result of parsing mentions from a message\n */\nexport interface MentionParseResult {\n mentions: Mention[];\n agentMention: Mention | null; // Single agent mention (first one found)\n userMentions: Mention[]; // All user mentions\n entityMentions: Mention[]; // All entity mentions (#Entity)\n}"]}
1
+ {"version":3,"file":"conversation-state.model.js","sourceRoot":"","sources":["../../../src/lib/models/conversation-state.model.ts"],"names":[],"mappings":"","sourcesContent":["import {\n MJArtifactEntity,\n MJArtifactVersionEntity\n} from '@memberjunction/core-entities';\n\nimport {\n MJAIAgentRunEntityExtended\n} from \"@memberjunction/ai-core-plus\";\n\n/**\n * Peripheral data loaded for a conversation detail message\n * Contains related entities like agent runs and artifacts\n */\nexport interface ConversationDetailPeripheralData {\n /** Agent run information if this message was generated by an agent */\n agentRun?: MJAIAgentRunEntityExtended;\n /** Artifact information if this message has an output artifact */\n artifact?: {\n /** The artifact entity */\n artifact: MJArtifactEntity;\n /** The specific version of the artifact */\n version: MJArtifactVersionEntity;\n };\n}\n\n/**\n * Type-safe maps for peripheral data indexed by ConversationDetailID\n */\nexport interface PeripheralDataMaps {\n /** Map of ConversationDetailID -> AIAgentRun */\n agentRunsByDetailId: Map<string, MJAIAgentRunEntityExtended>;\n /** Map of ConversationDetailID -> {artifact, version} */\n artifactsByDetailId: Map<string, {\n artifact: MJArtifactEntity;\n version: MJArtifactVersionEntity;\n }>;\n}\n\n/**\n * Represents an active agent process\n */\nexport interface AgentProcess {\n id: string;\n agentId: string;\n agentName: string;\n agentColor: string;\n status: 'pending' | 'in_progress' | 'complete' | 'failed';\n message: string;\n progress?: number;\n startedAt: Date;\n}\n\n/**\n * Options for filtering tasks\n */\nexport interface TaskFilters {\n status?: string[];\n projectId?: string;\n assignedToUserId?: string;\n assignedToAgentId?: string;\n environmentId?: string;\n}\n\n/**\n * Options for creating public links\n */\nexport interface PublicLinkOptions {\n password?: string;\n expiresAt?: Date;\n maxViews?: number;\n}\n\n/**\n * Tab types for the main navigation\n */\nexport type NavigationTab = 'conversations' | 'collections' | 'tasks';\n\n/**\n * Layout modes for the workspace\n */\nexport type WorkspaceLayout = 'full' | 'compact' | 'embedded';\n\n/**\n * View modes for collections\n */\nexport type CollectionViewMode = 'grid' | 'list';\n\n/**\n * Sort options for artifacts\n */\nexport type ArtifactSortBy = 'name' | 'date' | 'type' | 'modified';\n\n/**\n * Grouping options for conversations\n */\nexport type ConversationGroupBy = 'project' | 'date' | 'none';\n\n/**\n * Type of entity being mentioned\n */\nexport type MentionType = 'agent' | 'user' | 'entity' | 'query' | 'skill';\n\n/**\n * Represents a mention in a message (@Agent, @User, #Entity, or /Skill)\n */\nexport interface Mention {\n type: MentionType;\n id: string;\n name: string;\n configurationId?: string; // Optional AI configuration preset ID for agents\n}\n\n/**\n * Result of parsing mentions from a message.\n * Structurally mirrors `MentionParseResult` from `@memberjunction/conversations-runtime`\n * (deliberate duplicate — cross-package re-exports are prohibited). Keep in sync.\n */\nexport interface MentionParseResult {\n mentions: Mention[];\n agentMention: Mention | null; // Single agent mention (first one found)\n userMentions: Mention[]; // All user mentions\n entityMentions: Mention[]; // All entity mentions (#Entity)\n skillMentions: Mention[]; // All skill mentions (/Skill)\n}"]}
@@ -104,7 +104,7 @@ export declare class ConversationAgentService {
104
104
  * documented as "kept for backwards compatibility but not used" in the
105
105
  * original).
106
106
  */
107
- processMessage(conversationId: string, message: MJConversationDetailEntity, conversationHistory: MJConversationDetailEntity[], conversationDetailId: string, onProgress?: AgentExecutionProgressCallback, appContext?: Record<string, unknown> | null): Promise<ExecuteAgentResult | null>;
107
+ processMessage(conversationId: string, message: MJConversationDetailEntity, conversationHistory: MJConversationDetailEntity[], conversationDetailId: string, onProgress?: AgentExecutionProgressCallback, appContext?: Record<string, unknown> | null, planMode?: boolean, requestedSkillIDs?: string[]): Promise<ExecuteAgentResult | null>;
108
108
  /**
109
109
  * Find the configuration preset ID from a previous @mention of an agent in conversation history.
110
110
  * Searches backwards through User messages to find the most recent @mention of the specified agent
@@ -126,7 +126,7 @@ export declare class ConversationAgentService {
126
126
  * Stays on the Angular shim because it directly uses AgentClientService.
127
127
  * Could move to the runtime in a follow-up if needed.
128
128
  */
129
- invokeSubAgent(agentName: string, conversationId: string, message: MJConversationDetailEntity, conversationHistory: MJConversationDetailEntity[], reasoning: string, conversationDetailId: string, payload?: unknown, onProgress?: AgentExecutionProgressCallback, sourceArtifactId?: string, sourceArtifactVersionId?: string, agentConfigurationPresetId?: string, appContext?: Record<string, unknown> | null): Promise<ExecuteAgentResult | null>;
129
+ invokeSubAgent(agentName: string, conversationId: string, message: MJConversationDetailEntity, conversationHistory: MJConversationDetailEntity[], reasoning: string, conversationDetailId: string, payload?: unknown, onProgress?: AgentExecutionProgressCallback, sourceArtifactId?: string, sourceArtifactVersionId?: string, agentConfigurationPresetId?: string, appContext?: Record<string, unknown> | null, planMode?: boolean, requestedSkillIDs?: string[]): Promise<ExecuteAgentResult | null>;
130
130
  /**
131
131
  * Check if user's latest message should continue with the previous agent or route through Sage.
132
132
  * Uses fast inference (<500ms) to determine intent and avoid unnecessary Sage overhead.
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-agent.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-agent.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"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"}
@@ -140,7 +140,7 @@ export class ConversationAgentService {
140
140
  * documented as "kept for backwards compatibility but not used" in the
141
141
  * original).
142
142
  */
143
- async processMessage(conversationId, message, conversationHistory, conversationDetailId, onProgress, appContext) {
143
+ async processMessage(conversationId, message, conversationHistory, conversationDetailId, onProgress, appContext, planMode, requestedSkillIDs) {
144
144
  // Warm the cached default-agent name for any synchronous consumers
145
145
  // before the runtime resolves on its own.
146
146
  if (!this._conversationManagerAgent) {
@@ -152,6 +152,8 @@ export class ConversationAgentService {
152
152
  conversationDetailId,
153
153
  appContext,
154
154
  onProgress,
155
+ ...(planMode ? { planMode: true } : {}),
156
+ ...(requestedSkillIDs?.length ? { requestedSkillIDs } : {}),
155
157
  });
156
158
  }
157
159
  /**
@@ -196,7 +198,7 @@ export class ConversationAgentService {
196
198
  * Stays on the Angular shim because it directly uses AgentClientService.
197
199
  * Could move to the runtime in a follow-up if needed.
198
200
  */
199
- async invokeSubAgent(agentName, conversationId, message, conversationHistory, reasoning, conversationDetailId, payload, onProgress, sourceArtifactId, sourceArtifactVersionId, agentConfigurationPresetId, appContext) {
201
+ async invokeSubAgent(agentName, conversationId, message, conversationHistory, reasoning, conversationDetailId, payload, onProgress, sourceArtifactId, sourceArtifactVersionId, agentConfigurationPresetId, appContext, planMode, requestedSkillIDs) {
200
202
  try {
201
203
  // Ensure AIEngineBase is configured
202
204
  await AIEngineBase.Instance.Config(false);
@@ -234,6 +236,8 @@ export class ConversationAgentService {
234
236
  },
235
237
  ...(payload ? { Payload: payload } : {}),
236
238
  ...(aiConfigurationId ? { ConfigurationId: aiConfigurationId } : {}),
239
+ ...(planMode ? { PlanMode: true } : {}),
240
+ ...(requestedSkillIDs?.length ? { RequestedSkillIDs: requestedSkillIDs } : {}),
237
241
  CreateArtifacts: true,
238
242
  CreateNotification: true,
239
243
  SourceArtifactId: sourceArtifactId,
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-agent.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Metadata, IMetadataProvider } from '@memberjunction/core';\nimport { GraphQLDataProvider, GraphQLAIClient } from '@memberjunction/graphql-dataprovider';\nimport { ExecuteAgentResult, AgentExecutionProgressCallback } from '@memberjunction/ai-core-plus';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { MJConversationDetailEntity } from '@memberjunction/core-entities';\nimport { MJAIAgentEntityExtended, MJAIAgentRunEntityExtended } from '@memberjunction/ai-core-plus';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AgentClientService } from '@memberjunction/ng-agent-client';\nimport { RunAgentFromConversationDetailParams } from '@memberjunction/ai-agent-client';\nimport { ConversationsRuntime } from '@memberjunction/conversations-runtime';\nimport { LazyArtifactInfo } from '../models/lazy-artifact-info';\nimport { MentionParserService } from './mention-parser.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { ConversationsRuntimeBootstrap } from './conversations-runtime-bootstrap.service';\n\n/**\n * Context for artifact lookups - provides pre-loaded data from conversation\n * to avoid redundant database queries\n */\nexport interface ArtifactLookupContext {\n agentRunsByDetailId: Map<string, MJAIAgentRunEntityExtended>;\n artifactsByDetailId: Map<string, LazyArtifactInfo[]>;\n}\n\n/**\n * Result from intent check - indicates whether to continue with agent\n * and which artifact version to use as payload\n */\nexport interface IntentCheckResult {\n decision: 'YES' | 'NO' | 'UNSURE';\n reasoning: string;\n targetArtifactVersionId?: string;\n}\n\n/**\n * Angular DI service for conversation-level agent orchestration.\n *\n * After PR 2 of the conversations-runtime extraction, the core\n * `processMessage` flow and the conversation-manager-agent resolution are\n * delegated to `@memberjunction/conversations-runtime`. This service is\n * primarily a shim for those operations PLUS the holder of the helpers\n * that haven't been ported yet:\n *\n * - `invokeSubAgent(...)` — used by Sage's routing decisions in\n * `message-input.component`.\n * - `checkAgentContinuityIntent(...)` — fast intent classification when the\n * user replies to a previous-agent thread.\n * - `findConfigurationPresetFromHistory(...)` — locates an agent's preset\n * from prior @mentions in the conversation.\n * - `clearSession(...)` — per-conversation session-id bookkeeping.\n *\n * These can move to the runtime in a follow-up; they aren't strictly needed\n * to invoke an agent end-to-end and stay here so the shim has zero behavior\n * difference vs. the original.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ConversationAgentService {\n /** GraphQL AI client - retained for RunAIPrompt (intent checking) which AgentClientService doesn't wrap */\n private _aiClient: GraphQLAIClient | null = null;\n /** Cached resolution of the conversation manager agent (default agent). */\n private _conversationManagerAgent: MJAIAgentEntityExtended | null = null;\n private _sessionIds: Map<string, string> = new Map();\n\n /** Observable indicating if the ambient agent is currently processing — delegated to the runtime's AgentRunner. */\n public readonly isProcessing$: Observable<boolean>;\n\n private _provider: IMetadataProvider | null = null;\n\n constructor(\n _bootstrap: ConversationsRuntimeBootstrap,\n private mentionParser: MentionParserService,\n private agentClientService: AgentClientService\n ) {\n // Injecting `_bootstrap` forces the runtime's INotificationAdapter +\n // IActiveTaskTracker adapters to register before any shim method runs.\n this.isProcessing$ = ConversationsRuntime.Instance.AgentRunner.isProcessing$;\n this.initializeAIClient();\n }\n\n /**\n * The metadata provider this service uses. When unset, falls back to Metadata.Provider.\n * Setting it re-initializes the AI client and forwards the provider to the runtime's runner.\n */\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n this.initializeAIClient();\n ConversationsRuntime.Instance.AgentRunner.Provider = value;\n }\n\n /**\n * Initialize the GraphQL AI Client.\n * Retained for RunAIPrompt calls (intent checking) which the AgentClientService doesn't wrap.\n * Agent execution (RunAIAgentFromConversationDetail) now goes through ConversationsRuntime.AgentRunner.\n */\n private initializeAIClient(): void {\n try {\n const provider = this.Provider as GraphQLDataProvider;\n if (provider) {\n this._aiClient = new GraphQLAIClient(provider);\n } else {\n console.warn('GraphQLDataProvider not available, agent functionality will be limited');\n }\n } catch (error) {\n console.error('Failed to initialize GraphQL AI Client:', error);\n }\n }\n\n /**\n * Resolve the conversation manager agent via the runtime's 4-step\n * DefaultAgentResolver chain (explicit input → app-scoped Application\n * Setting → global Application Setting → code-const Sage fallback). The\n * result is cached on this service for use by the synchronous\n * {@link ConversationManagerAgentName} getter.\n *\n * Existing callers expect a Promise<MJAIAgentEntityExtended | null> — we\n * preserve that shape (returning null on failure rather than throwing)\n * so the call sites don't need to change.\n */\n public async getConversationManagerAgent(): Promise<MJAIAgentEntityExtended | null> {\n if (this._conversationManagerAgent) {\n return this._conversationManagerAgent;\n }\n\n try {\n const provider = this.Provider;\n const agent = await ConversationsRuntime.Instance.DefaultAgent.resolve({\n contextUser: provider.CurrentUser ?? undefined,\n provider,\n });\n this._conversationManagerAgent = agent;\n return agent;\n } catch (error) {\n const errorMsg = 'Error resolving conversation manager agent: ' + (error instanceof Error ? error.message : String(error));\n console.error(errorMsg);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n }\n\n /**\n * Synchronous read of the cached conversation-manager-agent name. Returns\n * `null` until {@link getConversationManagerAgent} has been called at least\n * once and resolved successfully. Used by `MessageItemComponent.isConversationManager`\n * to flag messages from the routing agent without hardcoding `'Sage'`.\n */\n public get ConversationManagerAgentName(): string | null {\n return this._conversationManagerAgent?.Name ?? null;\n }\n\n /**\n * Returns `true` if the supplied agent identifier (UUID or name) matches the\n * currently cached conversation manager agent. Robust to either input.\n */\n public IsConversationManagerAgent(agentIdOrName: string | null | undefined): boolean {\n if (!agentIdOrName || !this._conversationManagerAgent) return false;\n return (\n UUIDsEqual(this._conversationManagerAgent.ID, agentIdOrName) ||\n this._conversationManagerAgent.Name === agentIdOrName\n );\n }\n\n /**\n * Process a message through the conversation manager agent. Delegates to\n * `ConversationsRuntime.Instance.AgentRunner.processMessage(...)`.\n *\n * Signature is preserved verbatim from the original service so existing\n * call sites continue to compile. The unused `conversationHistory`\n * parameter is kept for backwards compatibility (it was already\n * documented as \"kept for backwards compatibility but not used\" in the\n * original).\n */\n async processMessage(\n conversationId: string,\n message: MJConversationDetailEntity,\n conversationHistory: MJConversationDetailEntity[],\n conversationDetailId: string,\n onProgress?: AgentExecutionProgressCallback,\n appContext?: Record<string, unknown> | null\n ): Promise<ExecuteAgentResult | null> {\n // Warm the cached default-agent name for any synchronous consumers\n // before the runtime resolves on its own.\n if (!this._conversationManagerAgent) {\n await this.getConversationManagerAgent();\n }\n return ConversationsRuntime.Instance.AgentRunner.processMessage({\n conversationId,\n message,\n conversationDetailId,\n appContext,\n onProgress,\n });\n }\n\n /**\n * Find the configuration preset ID from a previous @mention of an agent in conversation history.\n * Searches backwards through User messages to find the most recent @mention of the specified agent\n * that includes a configId.\n *\n * @param agentId The agent ID to search for\n * @param conversationHistory The conversation history to search through\n * @returns The configuration preset ID if found, undefined otherwise\n */\n public findConfigurationPresetFromHistory(\n agentId: string,\n conversationHistory: MJConversationDetailEntity[]\n ): string | undefined {\n // Search backwards through history for User messages that @mention this agent with a configId\n const userMentionWithConfig = conversationHistory\n .slice()\n .reverse()\n .find(msg => {\n if (msg.Role !== 'User' || !msg.Message) return false;\n const mentionResult = this.mentionParser.parseMentions(\n msg.Message,\n AIEngineBase.Instance.Agents,\n []\n );\n return mentionResult.agentMention?.id === agentId && mentionResult.agentMention?.configurationId;\n });\n\n if (userMentionWithConfig) {\n const mentionResult = this.mentionParser.parseMentions(\n userMentionWithConfig.Message,\n AIEngineBase.Instance.Agents,\n []\n );\n if (mentionResult.agentMention?.configurationId) {\n console.log(`🎯 Found configuration preset from @mention: ${mentionResult.agentMention.configurationId}`);\n return mentionResult.agentMention.configurationId;\n }\n }\n\n return undefined;\n }\n\n /**\n * Clear the session for a conversation (useful when starting a new topic)\n */\n clearSession(conversationId: string): void {\n this._sessionIds.delete(conversationId);\n }\n\n /**\n * Invoke a sub-agent based on Sage Agent's payload.\n * This is called when Sage decides to delegate to a specialist agent.\n *\n * Stays on the Angular shim because it directly uses AgentClientService.\n * Could move to the runtime in a follow-up if needed.\n */\n async invokeSubAgent(\n agentName: string,\n conversationId: string,\n message: MJConversationDetailEntity,\n conversationHistory: MJConversationDetailEntity[],\n reasoning: string,\n conversationDetailId: string,\n payload?: unknown,\n onProgress?: AgentExecutionProgressCallback,\n sourceArtifactId?: string,\n sourceArtifactVersionId?: string,\n agentConfigurationPresetId?: string,\n appContext?: Record<string, unknown> | null\n ): Promise<ExecuteAgentResult | null> {\n try {\n // Ensure AIEngineBase is configured\n await AIEngineBase.Instance.Config(false);\n\n // Find the agent by name\n const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);\n\n if (!agent || !agent.ID) {\n const errorMsg = `Sub-agent \"${agentName}\" not found`;\n console.warn(`${errorMsg}`);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n\n console.log(`Invoking sub-agent: ${agentName}`, { reasoning, hasPayload: !!payload, hasConfigPreset: !!agentConfigurationPresetId });\n\n // Map AIAgentConfiguration preset ID to actual AIConfiguration ID\n let aiConfigurationId: string | undefined = undefined;\n if (agentConfigurationPresetId) {\n const presets = AIEngineBase.Instance.GetAgentConfigurationPresets(agent.ID, false);\n const preset = presets.find(p => UUIDsEqual(p.ID, agentConfigurationPresetId) || UUIDsEqual(p.AIConfigurationID, agentConfigurationPresetId));\n\n if (preset) {\n aiConfigurationId = preset.AIConfigurationID || undefined;\n console.log(`Mapped agent configuration preset \"${preset.Name}\" to AIConfigurationID: ${aiConfigurationId || 'default'}`);\n } else {\n console.warn(`Agent configuration preset ${agentConfigurationPresetId} not found for agent ${agent.ID}`);\n }\n }\n\n const agentParams: RunAgentFromConversationDetailParams = {\n ConversationDetailId: conversationDetailId,\n AgentId: agent.ID,\n MaxHistoryMessages: 20,\n Data: {\n conversationId: conversationId,\n latestMessageId: message.ID,\n invocationReason: reasoning,\n ...(appContext ? { appContext } : {}),\n },\n ...(payload ? { Payload: payload as Record<string, unknown> } : {}),\n ...(aiConfigurationId ? { ConfigurationId: aiConfigurationId } : {}),\n CreateArtifacts: true,\n CreateNotification: true,\n SourceArtifactId: sourceArtifactId,\n SourceArtifactVersionId: sourceArtifactVersionId,\n OnProgress: onProgress ? (progress) => {\n onProgress({\n step: progress.CurrentStep as 'initialization' | 'validation' | 'prompt_execution' | 'action_execution' | 'subagent_execution' | 'decision_processing' | 'finalization',\n percentage: progress.Percentage,\n message: progress.Message,\n metadata: progress.Metadata\n });\n } : undefined\n };\n\n const runResult = await this.agentClientService.RunAgentFromConversationDetail(agentParams);\n\n if (runResult.Success && runResult.Result) {\n return runResult.Result as ExecuteAgentResult;\n } else if (!runResult.Success) {\n const errorMsg = `Sub-agent \"${agentName}\" failed: ${runResult.ErrorMessage || 'unknown error'}`;\n console.error(errorMsg);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n\n return null;\n } catch (error) {\n const errorMsg = `Error invoking sub-agent \"${agentName}\": ` + (error instanceof Error ? error.message : String(error));\n console.error(`Error invoking sub-agent \"${agentName}\":`, error);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n }\n\n /**\n * Check if user's latest message should continue with the previous agent or route through Sage.\n * Uses fast inference (<500ms) to determine intent and avoid unnecessary Sage overhead.\n *\n * Stays on the Angular shim because it directly uses GraphQLAIClient.\n * Could move to the runtime in a follow-up.\n */\n async checkAgentContinuityIntent(\n agentId: string,\n latestMessage: string,\n conversationHistory: MJConversationDetailEntity[],\n context: ArtifactLookupContext\n ): Promise<IntentCheckResult> {\n if (!this._aiClient) {\n console.warn('AI Client not initialized, defaulting to UNSURE for intent check');\n return { decision: 'UNSURE', reasoning: 'AI Client not initialized' };\n }\n\n try {\n await AIEngineBase.Instance.Config(false);\n const prompt = AIEngineBase.Instance.Prompts.find(p => p.Name === 'Check Sage Intent');\n if (!prompt) {\n console.warn('⚠️ Check Sage Intent prompt not found, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Check Sage Intent prompt not found' };\n }\n\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, agentId));\n if (!agent) {\n console.warn('⚠️ Previous agent not found, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Previous agent not found' };\n }\n\n const agentArtifacts = this.findAllAgentArtifacts(\n agentId,\n conversationHistory,\n context\n );\n\n const recentHistory = conversationHistory.slice(-10);\n const compactHistory = recentHistory.map((msg, idx) => {\n const role = msg.Role === 'User' ? 'User' : agent.Name || 'Agent';\n const content = msg.Message || '';\n return `${idx + 1}. ${role}: ${content.substring(0, 150)}${content.length > 150 ? '...' : ''}`;\n }).join('\\n');\n\n let artifactContext = '';\n if (agentArtifacts.length > 0) {\n artifactContext = '\\n\\n**Prior Artifacts Created by This Agent**:\\n';\n agentArtifacts.forEach((artifact, idx) => {\n artifactContext += `${idx + 1}. ${artifact.artifactName} (${artifact.artifactType})\\n`;\n artifactContext += ` - Versions: ${artifact.versions.length}\\n`;\n if (artifact.versions.length > 0) {\n artifactContext += ` - Latest: v${artifact.versions[0].versionNumber}`;\n if (artifact.versions[0].versionName) {\n artifactContext += ` - ${artifact.versions[0].versionName}`;\n }\n artifactContext += '\\n';\n }\n });\n }\n\n const userMessage = `**Previous Agent**: ${agent.Name} - ${agent.Description || 'No description'}\n\n**Conversation History** (last ${recentHistory.length} messages):\n${compactHistory}${artifactContext}\n\n**Latest User Message**: \"${latestMessage}\"`;\n\n console.log('🔍 Checking agent continuity intent...', {\n agentName: agent.Name,\n messagePreview: latestMessage.substring(0, 50),\n artifactCount: agentArtifacts.length\n });\n\n const result = await this._aiClient.RunAIPrompt({\n promptId: prompt.ID,\n messages: [{ role: 'user', content: userMessage }],\n data: {\n hasPriorArtifact: agentArtifacts.length > 0,\n priorArtifacts: agentArtifacts\n }\n });\n\n if (result && result.success && (result.parsedResult || result.output)) {\n const parsed = result.parsedResult ||\n (result.output ? JSON.parse(result.output) : null);\n\n if (parsed && parsed.continuesWith) {\n const decision = parsed.continuesWith.toUpperCase();\n const reasoning = parsed.reasoning || 'No reasoning provided';\n const targetArtifactVersionId = parsed.targetArtifactVersionId || undefined;\n\n console.log(`✅ Intent check result: ${decision}`, {\n reasoning,\n targetArtifactVersionId,\n latency: result.executionTimeMs || 'unknown'\n });\n\n if (decision === 'YES' || decision === 'NO' || decision === 'UNSURE') {\n return {\n decision: decision as 'YES' | 'NO' | 'UNSURE',\n reasoning,\n targetArtifactVersionId\n };\n }\n }\n }\n\n console.warn('⚠️ Intent check failed or returned invalid format, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Invalid format from intent check prompt' };\n } catch (error) {\n console.error('❌ Error checking agent continuity intent:', error);\n return {\n decision: 'UNSURE',\n reasoning: `Error during intent check: ${error instanceof Error ? error.message : String(error)}`\n };\n }\n }\n\n /**\n * Find all artifacts created by the specified agent in this conversation.\n * Returns artifacts grouped by artifact with versions, ordered most recent first.\n * Enables LLM to reason about which artifact/version user is referencing.\n *\n * Uses pre-loaded data from ArtifactLookupContext for performance (no database queries).\n */\n private findAllAgentArtifacts(\n agentId: string,\n conversationDetails: MJConversationDetailEntity[],\n context: ArtifactLookupContext\n ): Array<{\n artifactId: string;\n artifactName: string;\n artifactType: string;\n artifactDescription: string | null;\n versions: Array<{\n runId: string;\n versionId: string;\n versionNumber: number;\n versionName: string | null;\n versionDescription: string | null;\n createdAt: Date;\n }>;\n }> {\n const artifactMap = new Map<string, {\n artifactId: string;\n artifactName: string;\n artifactType: string;\n artifactDescription: string | null;\n versions: Array<{\n runId: string;\n versionId: string;\n versionNumber: number;\n versionName: string | null;\n versionDescription: string | null;\n createdAt: Date;\n }>;\n }>();\n\n for (let i = conversationDetails.length - 1; i >= 0; i--) {\n const detail = conversationDetails[i];\n\n if (detail.Role !== 'AI' || detail.Status === 'Error') continue;\n\n const agentRun = context.agentRunsByDetailId.get(detail.ID);\n if (!agentRun || !UUIDsEqual(agentRun.AgentID, agentId) || agentRun.Status !== 'Completed') {\n continue;\n }\n\n const artifacts = context.artifactsByDetailId.get(detail.ID);\n if (!artifacts || artifacts.length === 0) continue;\n\n for (const lazyArtifact of artifacts) {\n const mainArtifactId = lazyArtifact.artifactId;\n\n if (!artifactMap.has(mainArtifactId)) {\n artifactMap.set(mainArtifactId, {\n artifactId: mainArtifactId,\n artifactName: lazyArtifact.artifactName,\n artifactType: lazyArtifact.artifactType,\n artifactDescription: lazyArtifact.artifactDescription || null,\n versions: []\n });\n }\n\n const artifactEntry = artifactMap.get(mainArtifactId)!;\n artifactEntry.versions.push({\n runId: agentRun.ID,\n versionId: lazyArtifact.artifactVersionId,\n versionNumber: lazyArtifact.versionNumber,\n versionName: lazyArtifact.versionName,\n versionDescription: lazyArtifact.versionDescription,\n createdAt: lazyArtifact.versionCreatedAt\n });\n }\n }\n\n return Array.from(artifactMap.values()).sort((a, b) => {\n const aLatest = a.versions[0]?.createdAt || new Date(0);\n const bLatest = b.versions[0]?.createdAt || new Date(0);\n return bLatest.getTime() - aLatest.getTime();\n });\n }\n}\n"]}
1
+ {"version":3,"file":"conversation-agent.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Metadata, IMetadataProvider } from '@memberjunction/core';\nimport { GraphQLDataProvider, GraphQLAIClient } from '@memberjunction/graphql-dataprovider';\nimport { ExecuteAgentResult, AgentExecutionProgressCallback } from '@memberjunction/ai-core-plus';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { MJConversationDetailEntity } from '@memberjunction/core-entities';\nimport { MJAIAgentEntityExtended, MJAIAgentRunEntityExtended } from '@memberjunction/ai-core-plus';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AgentClientService } from '@memberjunction/ng-agent-client';\nimport { RunAgentFromConversationDetailParams } from '@memberjunction/ai-agent-client';\nimport { ConversationsRuntime } from '@memberjunction/conversations-runtime';\nimport { LazyArtifactInfo } from '../models/lazy-artifact-info';\nimport { MentionParserService } from './mention-parser.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { ConversationsRuntimeBootstrap } from './conversations-runtime-bootstrap.service';\n\n/**\n * Context for artifact lookups - provides pre-loaded data from conversation\n * to avoid redundant database queries\n */\nexport interface ArtifactLookupContext {\n agentRunsByDetailId: Map<string, MJAIAgentRunEntityExtended>;\n artifactsByDetailId: Map<string, LazyArtifactInfo[]>;\n}\n\n/**\n * Result from intent check - indicates whether to continue with agent\n * and which artifact version to use as payload\n */\nexport interface IntentCheckResult {\n decision: 'YES' | 'NO' | 'UNSURE';\n reasoning: string;\n targetArtifactVersionId?: string;\n}\n\n/**\n * Angular DI service for conversation-level agent orchestration.\n *\n * After PR 2 of the conversations-runtime extraction, the core\n * `processMessage` flow and the conversation-manager-agent resolution are\n * delegated to `@memberjunction/conversations-runtime`. This service is\n * primarily a shim for those operations PLUS the holder of the helpers\n * that haven't been ported yet:\n *\n * - `invokeSubAgent(...)` — used by Sage's routing decisions in\n * `message-input.component`.\n * - `checkAgentContinuityIntent(...)` — fast intent classification when the\n * user replies to a previous-agent thread.\n * - `findConfigurationPresetFromHistory(...)` — locates an agent's preset\n * from prior @mentions in the conversation.\n * - `clearSession(...)` — per-conversation session-id bookkeeping.\n *\n * These can move to the runtime in a follow-up; they aren't strictly needed\n * to invoke an agent end-to-end and stay here so the shim has zero behavior\n * difference vs. the original.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ConversationAgentService {\n /** GraphQL AI client - retained for RunAIPrompt (intent checking) which AgentClientService doesn't wrap */\n private _aiClient: GraphQLAIClient | null = null;\n /** Cached resolution of the conversation manager agent (default agent). */\n private _conversationManagerAgent: MJAIAgentEntityExtended | null = null;\n private _sessionIds: Map<string, string> = new Map();\n\n /** Observable indicating if the ambient agent is currently processing — delegated to the runtime's AgentRunner. */\n public readonly isProcessing$: Observable<boolean>;\n\n private _provider: IMetadataProvider | null = null;\n\n constructor(\n _bootstrap: ConversationsRuntimeBootstrap,\n private mentionParser: MentionParserService,\n private agentClientService: AgentClientService\n ) {\n // Injecting `_bootstrap` forces the runtime's INotificationAdapter +\n // IActiveTaskTracker adapters to register before any shim method runs.\n this.isProcessing$ = ConversationsRuntime.Instance.AgentRunner.isProcessing$;\n this.initializeAIClient();\n }\n\n /**\n * The metadata provider this service uses. When unset, falls back to Metadata.Provider.\n * Setting it re-initializes the AI client and forwards the provider to the runtime's runner.\n */\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n this.initializeAIClient();\n ConversationsRuntime.Instance.AgentRunner.Provider = value;\n }\n\n /**\n * Initialize the GraphQL AI Client.\n * Retained for RunAIPrompt calls (intent checking) which the AgentClientService doesn't wrap.\n * Agent execution (RunAIAgentFromConversationDetail) now goes through ConversationsRuntime.AgentRunner.\n */\n private initializeAIClient(): void {\n try {\n const provider = this.Provider as GraphQLDataProvider;\n if (provider) {\n this._aiClient = new GraphQLAIClient(provider);\n } else {\n console.warn('GraphQLDataProvider not available, agent functionality will be limited');\n }\n } catch (error) {\n console.error('Failed to initialize GraphQL AI Client:', error);\n }\n }\n\n /**\n * Resolve the conversation manager agent via the runtime's 4-step\n * DefaultAgentResolver chain (explicit input → app-scoped Application\n * Setting → global Application Setting → code-const Sage fallback). The\n * result is cached on this service for use by the synchronous\n * {@link ConversationManagerAgentName} getter.\n *\n * Existing callers expect a Promise<MJAIAgentEntityExtended | null> — we\n * preserve that shape (returning null on failure rather than throwing)\n * so the call sites don't need to change.\n */\n public async getConversationManagerAgent(): Promise<MJAIAgentEntityExtended | null> {\n if (this._conversationManagerAgent) {\n return this._conversationManagerAgent;\n }\n\n try {\n const provider = this.Provider;\n const agent = await ConversationsRuntime.Instance.DefaultAgent.resolve({\n contextUser: provider.CurrentUser ?? undefined,\n provider,\n });\n this._conversationManagerAgent = agent;\n return agent;\n } catch (error) {\n const errorMsg = 'Error resolving conversation manager agent: ' + (error instanceof Error ? error.message : String(error));\n console.error(errorMsg);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n }\n\n /**\n * Synchronous read of the cached conversation-manager-agent name. Returns\n * `null` until {@link getConversationManagerAgent} has been called at least\n * once and resolved successfully. Used by `MessageItemComponent.isConversationManager`\n * to flag messages from the routing agent without hardcoding `'Sage'`.\n */\n public get ConversationManagerAgentName(): string | null {\n return this._conversationManagerAgent?.Name ?? null;\n }\n\n /**\n * Returns `true` if the supplied agent identifier (UUID or name) matches the\n * currently cached conversation manager agent. Robust to either input.\n */\n public IsConversationManagerAgent(agentIdOrName: string | null | undefined): boolean {\n if (!agentIdOrName || !this._conversationManagerAgent) return false;\n return (\n UUIDsEqual(this._conversationManagerAgent.ID, agentIdOrName) ||\n this._conversationManagerAgent.Name === agentIdOrName\n );\n }\n\n /**\n * Process a message through the conversation manager agent. Delegates to\n * `ConversationsRuntime.Instance.AgentRunner.processMessage(...)`.\n *\n * Signature is preserved verbatim from the original service so existing\n * call sites continue to compile. The unused `conversationHistory`\n * parameter is kept for backwards compatibility (it was already\n * documented as \"kept for backwards compatibility but not used\" in the\n * original).\n */\n async processMessage(\n conversationId: string,\n message: MJConversationDetailEntity,\n conversationHistory: MJConversationDetailEntity[],\n conversationDetailId: string,\n onProgress?: AgentExecutionProgressCallback,\n appContext?: Record<string, unknown> | null,\n planMode?: boolean,\n requestedSkillIDs?: string[]\n ): Promise<ExecuteAgentResult | null> {\n // Warm the cached default-agent name for any synchronous consumers\n // before the runtime resolves on its own.\n if (!this._conversationManagerAgent) {\n await this.getConversationManagerAgent();\n }\n return ConversationsRuntime.Instance.AgentRunner.processMessage({\n conversationId,\n message,\n conversationDetailId,\n appContext,\n onProgress,\n ...(planMode ? { planMode: true } : {}),\n ...(requestedSkillIDs?.length ? { requestedSkillIDs } : {}),\n });\n }\n\n /**\n * Find the configuration preset ID from a previous @mention of an agent in conversation history.\n * Searches backwards through User messages to find the most recent @mention of the specified agent\n * that includes a configId.\n *\n * @param agentId The agent ID to search for\n * @param conversationHistory The conversation history to search through\n * @returns The configuration preset ID if found, undefined otherwise\n */\n public findConfigurationPresetFromHistory(\n agentId: string,\n conversationHistory: MJConversationDetailEntity[]\n ): string | undefined {\n // Search backwards through history for User messages that @mention this agent with a configId\n const userMentionWithConfig = conversationHistory\n .slice()\n .reverse()\n .find(msg => {\n if (msg.Role !== 'User' || !msg.Message) return false;\n const mentionResult = this.mentionParser.parseMentions(\n msg.Message,\n AIEngineBase.Instance.Agents,\n []\n );\n return mentionResult.agentMention?.id === agentId && mentionResult.agentMention?.configurationId;\n });\n\n if (userMentionWithConfig) {\n const mentionResult = this.mentionParser.parseMentions(\n userMentionWithConfig.Message,\n AIEngineBase.Instance.Agents,\n []\n );\n if (mentionResult.agentMention?.configurationId) {\n console.log(`🎯 Found configuration preset from @mention: ${mentionResult.agentMention.configurationId}`);\n return mentionResult.agentMention.configurationId;\n }\n }\n\n return undefined;\n }\n\n /**\n * Clear the session for a conversation (useful when starting a new topic)\n */\n clearSession(conversationId: string): void {\n this._sessionIds.delete(conversationId);\n }\n\n /**\n * Invoke a sub-agent based on Sage Agent's payload.\n * This is called when Sage decides to delegate to a specialist agent.\n *\n * Stays on the Angular shim because it directly uses AgentClientService.\n * Could move to the runtime in a follow-up if needed.\n */\n async invokeSubAgent(\n agentName: string,\n conversationId: string,\n message: MJConversationDetailEntity,\n conversationHistory: MJConversationDetailEntity[],\n reasoning: string,\n conversationDetailId: string,\n payload?: unknown,\n onProgress?: AgentExecutionProgressCallback,\n sourceArtifactId?: string,\n sourceArtifactVersionId?: string,\n agentConfigurationPresetId?: string,\n appContext?: Record<string, unknown> | null,\n planMode?: boolean,\n requestedSkillIDs?: string[]\n ): Promise<ExecuteAgentResult | null> {\n try {\n // Ensure AIEngineBase is configured\n await AIEngineBase.Instance.Config(false);\n\n // Find the agent by name\n const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);\n\n if (!agent || !agent.ID) {\n const errorMsg = `Sub-agent \"${agentName}\" not found`;\n console.warn(`${errorMsg}`);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n\n console.log(`Invoking sub-agent: ${agentName}`, { reasoning, hasPayload: !!payload, hasConfigPreset: !!agentConfigurationPresetId });\n\n // Map AIAgentConfiguration preset ID to actual AIConfiguration ID\n let aiConfigurationId: string | undefined = undefined;\n if (agentConfigurationPresetId) {\n const presets = AIEngineBase.Instance.GetAgentConfigurationPresets(agent.ID, false);\n const preset = presets.find(p => UUIDsEqual(p.ID, agentConfigurationPresetId) || UUIDsEqual(p.AIConfigurationID, agentConfigurationPresetId));\n\n if (preset) {\n aiConfigurationId = preset.AIConfigurationID || undefined;\n console.log(`Mapped agent configuration preset \"${preset.Name}\" to AIConfigurationID: ${aiConfigurationId || 'default'}`);\n } else {\n console.warn(`Agent configuration preset ${agentConfigurationPresetId} not found for agent ${agent.ID}`);\n }\n }\n\n const agentParams: RunAgentFromConversationDetailParams = {\n ConversationDetailId: conversationDetailId,\n AgentId: agent.ID,\n MaxHistoryMessages: 20,\n Data: {\n conversationId: conversationId,\n latestMessageId: message.ID,\n invocationReason: reasoning,\n ...(appContext ? { appContext } : {}),\n },\n ...(payload ? { Payload: payload as Record<string, unknown> } : {}),\n ...(aiConfigurationId ? { ConfigurationId: aiConfigurationId } : {}),\n ...(planMode ? { PlanMode: true } : {}),\n ...(requestedSkillIDs?.length ? { RequestedSkillIDs: requestedSkillIDs } : {}),\n CreateArtifacts: true,\n CreateNotification: true,\n SourceArtifactId: sourceArtifactId,\n SourceArtifactVersionId: sourceArtifactVersionId,\n OnProgress: onProgress ? (progress) => {\n onProgress({\n step: progress.CurrentStep as 'initialization' | 'validation' | 'prompt_execution' | 'action_execution' | 'subagent_execution' | 'decision_processing' | 'finalization',\n percentage: progress.Percentage,\n message: progress.Message,\n metadata: progress.Metadata\n });\n } : undefined\n };\n\n const runResult = await this.agentClientService.RunAgentFromConversationDetail(agentParams);\n\n if (runResult.Success && runResult.Result) {\n return runResult.Result as ExecuteAgentResult;\n } else if (!runResult.Success) {\n const errorMsg = `Sub-agent \"${agentName}\" failed: ${runResult.ErrorMessage || 'unknown error'}`;\n console.error(errorMsg);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n\n return null;\n } catch (error) {\n const errorMsg = `Error invoking sub-agent \"${agentName}\": ` + (error instanceof Error ? error.message : String(error));\n console.error(`Error invoking sub-agent \"${agentName}\":`, error);\n MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);\n return null;\n }\n }\n\n /**\n * Check if user's latest message should continue with the previous agent or route through Sage.\n * Uses fast inference (<500ms) to determine intent and avoid unnecessary Sage overhead.\n *\n * Stays on the Angular shim because it directly uses GraphQLAIClient.\n * Could move to the runtime in a follow-up.\n */\n async checkAgentContinuityIntent(\n agentId: string,\n latestMessage: string,\n conversationHistory: MJConversationDetailEntity[],\n context: ArtifactLookupContext\n ): Promise<IntentCheckResult> {\n if (!this._aiClient) {\n console.warn('AI Client not initialized, defaulting to UNSURE for intent check');\n return { decision: 'UNSURE', reasoning: 'AI Client not initialized' };\n }\n\n try {\n await AIEngineBase.Instance.Config(false);\n const prompt = AIEngineBase.Instance.Prompts.find(p => p.Name === 'Check Sage Intent');\n if (!prompt) {\n console.warn('⚠️ Check Sage Intent prompt not found, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Check Sage Intent prompt not found' };\n }\n\n const agent = AIEngineBase.Instance.Agents.find(a => UUIDsEqual(a.ID, agentId));\n if (!agent) {\n console.warn('⚠️ Previous agent not found, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Previous agent not found' };\n }\n\n const agentArtifacts = this.findAllAgentArtifacts(\n agentId,\n conversationHistory,\n context\n );\n\n const recentHistory = conversationHistory.slice(-10);\n const compactHistory = recentHistory.map((msg, idx) => {\n const role = msg.Role === 'User' ? 'User' : agent.Name || 'Agent';\n const content = msg.Message || '';\n return `${idx + 1}. ${role}: ${content.substring(0, 150)}${content.length > 150 ? '...' : ''}`;\n }).join('\\n');\n\n let artifactContext = '';\n if (agentArtifacts.length > 0) {\n artifactContext = '\\n\\n**Prior Artifacts Created by This Agent**:\\n';\n agentArtifacts.forEach((artifact, idx) => {\n artifactContext += `${idx + 1}. ${artifact.artifactName} (${artifact.artifactType})\\n`;\n artifactContext += ` - Versions: ${artifact.versions.length}\\n`;\n if (artifact.versions.length > 0) {\n artifactContext += ` - Latest: v${artifact.versions[0].versionNumber}`;\n if (artifact.versions[0].versionName) {\n artifactContext += ` - ${artifact.versions[0].versionName}`;\n }\n artifactContext += '\\n';\n }\n });\n }\n\n const userMessage = `**Previous Agent**: ${agent.Name} - ${agent.Description || 'No description'}\n\n**Conversation History** (last ${recentHistory.length} messages):\n${compactHistory}${artifactContext}\n\n**Latest User Message**: \"${latestMessage}\"`;\n\n console.log('🔍 Checking agent continuity intent...', {\n agentName: agent.Name,\n messagePreview: latestMessage.substring(0, 50),\n artifactCount: agentArtifacts.length\n });\n\n const result = await this._aiClient.RunAIPrompt({\n promptId: prompt.ID,\n messages: [{ role: 'user', content: userMessage }],\n data: {\n hasPriorArtifact: agentArtifacts.length > 0,\n priorArtifacts: agentArtifacts\n }\n });\n\n if (result && result.success && (result.parsedResult || result.output)) {\n const parsed = result.parsedResult ||\n (result.output ? JSON.parse(result.output) : null);\n\n if (parsed && parsed.continuesWith) {\n const decision = parsed.continuesWith.toUpperCase();\n const reasoning = parsed.reasoning || 'No reasoning provided';\n const targetArtifactVersionId = parsed.targetArtifactVersionId || undefined;\n\n console.log(`✅ Intent check result: ${decision}`, {\n reasoning,\n targetArtifactVersionId,\n latency: result.executionTimeMs || 'unknown'\n });\n\n if (decision === 'YES' || decision === 'NO' || decision === 'UNSURE') {\n return {\n decision: decision as 'YES' | 'NO' | 'UNSURE',\n reasoning,\n targetArtifactVersionId\n };\n }\n }\n }\n\n console.warn('⚠️ Intent check failed or returned invalid format, defaulting to UNSURE');\n return { decision: 'UNSURE', reasoning: 'Invalid format from intent check prompt' };\n } catch (error) {\n console.error('❌ Error checking agent continuity intent:', error);\n return {\n decision: 'UNSURE',\n reasoning: `Error during intent check: ${error instanceof Error ? error.message : String(error)}`\n };\n }\n }\n\n /**\n * Find all artifacts created by the specified agent in this conversation.\n * Returns artifacts grouped by artifact with versions, ordered most recent first.\n * Enables LLM to reason about which artifact/version user is referencing.\n *\n * Uses pre-loaded data from ArtifactLookupContext for performance (no database queries).\n */\n private findAllAgentArtifacts(\n agentId: string,\n conversationDetails: MJConversationDetailEntity[],\n context: ArtifactLookupContext\n ): Array<{\n artifactId: string;\n artifactName: string;\n artifactType: string;\n artifactDescription: string | null;\n versions: Array<{\n runId: string;\n versionId: string;\n versionNumber: number;\n versionName: string | null;\n versionDescription: string | null;\n createdAt: Date;\n }>;\n }> {\n const artifactMap = new Map<string, {\n artifactId: string;\n artifactName: string;\n artifactType: string;\n artifactDescription: string | null;\n versions: Array<{\n runId: string;\n versionId: string;\n versionNumber: number;\n versionName: string | null;\n versionDescription: string | null;\n createdAt: Date;\n }>;\n }>();\n\n for (let i = conversationDetails.length - 1; i >= 0; i--) {\n const detail = conversationDetails[i];\n\n if (detail.Role !== 'AI' || detail.Status === 'Error') continue;\n\n const agentRun = context.agentRunsByDetailId.get(detail.ID);\n if (!agentRun || !UUIDsEqual(agentRun.AgentID, agentId) || agentRun.Status !== 'Completed') {\n continue;\n }\n\n const artifacts = context.artifactsByDetailId.get(detail.ID);\n if (!artifacts || artifacts.length === 0) continue;\n\n for (const lazyArtifact of artifacts) {\n const mainArtifactId = lazyArtifact.artifactId;\n\n if (!artifactMap.has(mainArtifactId)) {\n artifactMap.set(mainArtifactId, {\n artifactId: mainArtifactId,\n artifactName: lazyArtifact.artifactName,\n artifactType: lazyArtifact.artifactType,\n artifactDescription: lazyArtifact.artifactDescription || null,\n versions: []\n });\n }\n\n const artifactEntry = artifactMap.get(mainArtifactId)!;\n artifactEntry.versions.push({\n runId: agentRun.ID,\n versionId: lazyArtifact.artifactVersionId,\n versionNumber: lazyArtifact.versionNumber,\n versionName: lazyArtifact.versionName,\n versionDescription: lazyArtifact.versionDescription,\n createdAt: lazyArtifact.versionCreatedAt\n });\n }\n }\n\n return Array.from(artifactMap.values()).sort((a, b) => {\n const aLatest = a.versions[0]?.createdAt || new Date(0);\n const bLatest = b.versions[0]?.createdAt || new Date(0);\n return bLatest.getTime() - aLatest.getTime();\n });\n }\n}\n"]}
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
5
5
  * Item in the autocomplete dropdown
6
6
  */
7
7
  export interface MentionSuggestion {
8
- type: 'agent' | 'user' | 'entity' | 'query';
8
+ type: 'agent' | 'user' | 'entity' | 'query' | 'skill';
9
9
  id: string;
10
10
  name: string;
11
11
  displayName: string;
@@ -13,6 +13,7 @@ export interface MentionSuggestion {
13
13
  avatarUrl?: string;
14
14
  imageUrl?: string;
15
15
  icon?: string;
16
+ color?: string;
16
17
  }
17
18
  /**
18
19
  * Service for autocomplete suggestions when typing @mentions
@@ -22,6 +23,10 @@ export declare class MentionAutocompleteService {
22
23
  private usersCache;
23
24
  private entitiesCache;
24
25
  private queriesCache;
26
+ /** Active skills the current user can Run — surfaced under the '/' trigger. */
27
+ private skillsCache;
28
+ /** Default icon for a skill with no IconClass of its own. */
29
+ private defaultSkillIcon;
25
30
  /** Generic icon for all query mentions, sourced from the 'MJ: Queries' entity. */
26
31
  private queriesEntityIcon;
27
32
  private isInitialized;
@@ -42,6 +47,12 @@ export declare class MentionAutocompleteService {
42
47
  * Agents with explicit permission records are checked against the user.
43
48
  */
44
49
  private filterAgentsByRunPermission;
50
+ /**
51
+ * Filter Active skills to those the current user has 'run' permission for.
52
+ * Skills with no permission records are open to everyone (canRun = true);
53
+ * skills with explicit records are checked against the user (open-by-default).
54
+ */
55
+ private filterSkillsByRunPermission;
45
56
  /**
46
57
  * Load entities the current user has read permission for.
47
58
  * These are the candidates surfaced for #entity mentions.
@@ -68,6 +79,11 @@ export declare class MentionAutocompleteService {
68
79
  * Capped to keep the dropdown light (entity/query sets can be large).
69
80
  */
70
81
  private getEntityAndQuerySuggestions;
82
+ /**
83
+ * Get skill suggestions for '/'-mentions, ranked by query match. Each carries the skill's own
84
+ * IconClass/Color (UX metadata) so the dropdown + inserted chip render distinctly per skill.
85
+ */
86
+ private getSkillSuggestions;
71
87
  /**
72
88
  * Calculate match score for ranking
73
89
  * Higher score = better match
@@ -1 +1 @@
1
- {"version":3,"file":"mention-autocomplete.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAY,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;;AAGpG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAGa,0BAA0B;IACrC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAmB;IACvC,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;;IAI3D;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpF;;OAEG;YACW,mBAAmB;IAiCjC;;;;OAIG;YACW,2BAA2B;IAkBzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,EAAE,OAAO,GAAE,MAAY,GAAG,iBAAiB,EAAE;IAwDvG;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IA2CpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,kBAAkB,IAAI,uBAAuB,EAAE;IAI/C;;OAEG;IACH,iBAAiB,IAAI,QAAQ,EAAE;IAI/B;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAIpC;;OAEG;IACH,mBAAmB,IAAI,SAAS,EAAE;IAIlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACG,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAxVxC,0BAA0B;6CAA1B,0BAA0B;CA6VtC"}
1
+ {"version":3,"file":"mention-autocomplete.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/mention-autocomplete.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAY,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;;AAGpG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAGa,0BAA0B;IACrC,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAmB;IACvC,+EAA+E;IAC/E,OAAO,CAAC,WAAW,CAAyB;IAC5C,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,qBAAqB,CAA8B;;IAI3D;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpF;;OAEG;YACW,mBAAmB;IAuCjC;;;;OAIG;YACW,2BAA2B;IAkBzC;;;;OAIG;YACW,2BAA2B;IAUzC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAShC;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,EAAE,OAAO,GAAE,MAAY,GAAG,iBAAiB,EAAE;IA2DvG;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IA2CpC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,kBAAkB,IAAI,uBAAuB,EAAE;IAI/C;;OAEG;IACH,iBAAiB,IAAI,QAAQ,EAAE;IAI/B;;OAEG;IACH,oBAAoB,IAAI,UAAU,EAAE;IAIpC;;OAEG;IACH,mBAAmB,IAAI,SAAS,EAAE;IAIlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACG,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlZxC,0BAA0B;6CAA1B,0BAA0B;CAuZtC"}