@memberjunction/ng-conversations 2.104.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 (226) hide show
  1. package/README.md +197 -0
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
  12. package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
  14. package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
  15. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
  16. package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
  17. package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
  18. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
  19. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
  20. package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
  21. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
  22. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
  23. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
  24. package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
  25. package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
  26. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
  27. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
  28. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
  29. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
  30. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
  31. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
  32. package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
  33. package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
  34. package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
  35. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
  36. package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
  37. package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
  38. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
  39. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
  40. package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
  41. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
  42. package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
  43. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
  44. package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
  45. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
  46. package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
  47. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
  48. package/dist/lib/components/collection/collection-tree.component.js +482 -0
  49. package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
  50. package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
  51. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
  52. package/dist/lib/components/collection/collection-view.component.js +254 -0
  53. package/dist/lib/components/collection/collection-view.component.js.map +1 -0
  54. package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
  55. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
  56. package/dist/lib/components/collection/collections-full-view.component.js +578 -0
  57. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
  58. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
  59. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
  60. package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
  61. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
  62. package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
  63. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
  64. package/dist/lib/components/conversation/conversation-list.component.js +255 -0
  65. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
  66. package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
  67. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
  68. package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
  69. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
  70. package/dist/lib/components/export/export-modal.component.d.ts +37 -0
  71. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
  72. package/dist/lib/components/export/export-modal.component.js +414 -0
  73. package/dist/lib/components/export/export-modal.component.js.map +1 -0
  74. package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
  75. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
  76. package/dist/lib/components/library/library-full-view.component.js +270 -0
  77. package/dist/lib/components/library/library-full-view.component.js.map +1 -0
  78. package/dist/lib/components/members/members-modal.component.d.ts +42 -0
  79. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
  80. package/dist/lib/components/members/members-modal.component.js +352 -0
  81. package/dist/lib/components/members/members-modal.component.js.map +1 -0
  82. package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
  83. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
  84. package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
  85. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
  86. package/dist/lib/components/message/message-input.component.d.ts +137 -0
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
  88. package/dist/lib/components/message/message-input.component.js +1159 -0
  89. package/dist/lib/components/message/message-input.component.js.map +1 -0
  90. package/dist/lib/components/message/message-item.component.d.ts +140 -0
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
  92. package/dist/lib/components/message/message-item.component.js +817 -0
  93. package/dist/lib/components/message/message-item.component.js.map +1 -0
  94. package/dist/lib/components/message/message-list.component.d.ts +77 -0
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
  96. package/dist/lib/components/message/message-list.component.js +316 -0
  97. package/dist/lib/components/message/message-list.component.js.map +1 -0
  98. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
  99. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
  100. package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
  101. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
  102. package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
  103. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
  104. package/dist/lib/components/notification/activity-indicator.component.js +56 -0
  105. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
  106. package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
  107. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
  108. package/dist/lib/components/notification/notification-badge.component.js +160 -0
  109. package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
  110. package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
  112. package/dist/lib/components/project/project-form-modal.component.js +357 -0
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
  114. package/dist/lib/components/project/project-selector.component.d.ts +36 -0
  115. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
  116. package/dist/lib/components/project/project-selector.component.js +317 -0
  117. package/dist/lib/components/project/project-selector.component.js.map +1 -0
  118. package/dist/lib/components/search/search-panel.component.d.ts +120 -0
  119. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
  120. package/dist/lib/components/search/search-panel.component.js +714 -0
  121. package/dist/lib/components/search/search-panel.component.js.map +1 -0
  122. package/dist/lib/components/share/share-modal.component.d.ts +46 -0
  123. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
  124. package/dist/lib/components/share/share-modal.component.js +431 -0
  125. package/dist/lib/components/share/share-modal.component.js.map +1 -0
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
  128. package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
  129. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
  130. package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
  131. package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
  132. package/dist/lib/components/task/task-form-modal.component.js +329 -0
  133. package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
  134. package/dist/lib/components/task/task-item.component.d.ts +22 -0
  135. package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
  136. package/dist/lib/components/task/task-item.component.js +234 -0
  137. package/dist/lib/components/task/task-item.component.js.map +1 -0
  138. package/dist/lib/components/task/task-list.component.d.ts +32 -0
  139. package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
  140. package/dist/lib/components/task/task-list.component.js +290 -0
  141. package/dist/lib/components/task/task-list.component.js.map +1 -0
  142. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
  143. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
  144. package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
  145. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
  146. package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
  147. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
  148. package/dist/lib/components/thread/thread-panel.component.js +325 -0
  149. package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
  150. package/dist/lib/components/toast/toast.component.d.ts +26 -0
  151. package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
  152. package/dist/lib/components/toast/toast.component.js +108 -0
  153. package/dist/lib/components/toast/toast.component.js.map +1 -0
  154. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
  155. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
  156. package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
  157. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
  158. package/dist/lib/conversations.module.d.ts +62 -0
  159. package/dist/lib/conversations.module.d.ts.map +1 -0
  160. package/dist/lib/conversations.module.js +248 -0
  161. package/dist/lib/conversations.module.js.map +1 -0
  162. package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
  163. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
  164. package/dist/lib/directives/search-shortcut.directive.js +39 -0
  165. package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
  166. package/dist/lib/models/conversation-state.model.d.ts +72 -0
  167. package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
  168. package/dist/lib/models/conversation-state.model.js +2 -0
  169. package/dist/lib/models/conversation-state.model.js.map +1 -0
  170. package/dist/lib/models/notification.model.d.ts +89 -0
  171. package/dist/lib/models/notification.model.d.ts.map +1 -0
  172. package/dist/lib/models/notification.model.js +11 -0
  173. package/dist/lib/models/notification.model.js.map +1 -0
  174. package/dist/lib/services/active-tasks.service.d.ts +65 -0
  175. package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
  176. package/dist/lib/services/active-tasks.service.js +95 -0
  177. package/dist/lib/services/active-tasks.service.js.map +1 -0
  178. package/dist/lib/services/agent-state.service.d.ts +78 -0
  179. package/dist/lib/services/agent-state.service.d.ts.map +1 -0
  180. package/dist/lib/services/agent-state.service.js +213 -0
  181. package/dist/lib/services/agent-state.service.js.map +1 -0
  182. package/dist/lib/services/artifact-state.service.d.ts +114 -0
  183. package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
  184. package/dist/lib/services/artifact-state.service.js +288 -0
  185. package/dist/lib/services/artifact-state.service.js.map +1 -0
  186. package/dist/lib/services/conversation-agent.service.d.ts +79 -0
  187. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
  188. package/dist/lib/services/conversation-agent.service.js +259 -0
  189. package/dist/lib/services/conversation-agent.service.js.map +1 -0
  190. package/dist/lib/services/conversation-state.service.d.ts +122 -0
  191. package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
  192. package/dist/lib/services/conversation-state.service.js +255 -0
  193. package/dist/lib/services/conversation-state.service.js.map +1 -0
  194. package/dist/lib/services/dialog.service.d.ts +54 -0
  195. package/dist/lib/services/dialog.service.d.ts.map +1 -0
  196. package/dist/lib/services/dialog.service.js +157 -0
  197. package/dist/lib/services/dialog.service.js.map +1 -0
  198. package/dist/lib/services/export.service.d.ts +25 -0
  199. package/dist/lib/services/export.service.d.ts.map +1 -0
  200. package/dist/lib/services/export.service.js +237 -0
  201. package/dist/lib/services/export.service.js.map +1 -0
  202. package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
  203. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
  204. package/dist/lib/services/mention-autocomplete.service.js +160 -0
  205. package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
  206. package/dist/lib/services/mention-parser.service.d.ts +46 -0
  207. package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
  208. package/dist/lib/services/mention-parser.service.js +156 -0
  209. package/dist/lib/services/mention-parser.service.js.map +1 -0
  210. package/dist/lib/services/notification.service.d.ts +108 -0
  211. package/dist/lib/services/notification.service.d.ts.map +1 -0
  212. package/dist/lib/services/notification.service.js +431 -0
  213. package/dist/lib/services/notification.service.js.map +1 -0
  214. package/dist/lib/services/search.service.d.ts +144 -0
  215. package/dist/lib/services/search.service.d.ts.map +1 -0
  216. package/dist/lib/services/search.service.js +370 -0
  217. package/dist/lib/services/search.service.js.map +1 -0
  218. package/dist/lib/services/toast.service.d.ts +46 -0
  219. package/dist/lib/services/toast.service.d.ts.map +1 -0
  220. package/dist/lib/services/toast.service.js +76 -0
  221. package/dist/lib/services/toast.service.js.map +1 -0
  222. package/dist/public-api.d.ts +42 -0
  223. package/dist/public-api.d.ts.map +1 -0
  224. package/dist/public-api.js +49 -0
  225. package/dist/public-api.js.map +1 -0
  226. package/package.json +54 -0
@@ -0,0 +1,79 @@
1
+ import { Observable } from 'rxjs';
2
+ import { ExecuteAgentResult, AgentExecutionProgressCallback } from '@memberjunction/ai-core-plus';
3
+ import { AIAgentEntityExtended, ConversationDetailEntity } from '@memberjunction/core-entities';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Service for managing agent interactions within conversations.
7
+ * Handles communication with the ambient Conversation Manager Agent and other agents.
8
+ */
9
+ export declare class ConversationAgentService {
10
+ private _aiClient;
11
+ private _conversationManagerAgent;
12
+ private _sessionIds;
13
+ private _isProcessing$;
14
+ /**
15
+ * Observable indicating if the ambient agent is currently processing
16
+ */
17
+ readonly isProcessing$: Observable<boolean>;
18
+ constructor();
19
+ /**
20
+ * Initialize the GraphQL AI Client
21
+ */
22
+ private initializeAIClient;
23
+ /**
24
+ * Get or load the Conversation Manager Agent
25
+ */
26
+ getConversationManagerAgent(): Promise<AIAgentEntityExtended | null>;
27
+ /**
28
+ * Get or create a session ID for a conversation
29
+ */
30
+ private getSessionId;
31
+ /**
32
+ * Process a message through the ambient Conversation Manager Agent.
33
+ * This should be called for every message sent in a conversation.
34
+ *
35
+ * @param conversationId The conversation ID
36
+ * @param message The message that was just sent
37
+ * @param conversationHistory Recent messages in the conversation for context
38
+ * @param conversationDetailId The ID of the conversation detail record to link to the agent run
39
+ * @param onProgress Optional callback for receiving progress updates during execution
40
+ * @returns The agent's response, or null if the agent chooses not to respond
41
+ */
42
+ processMessage(conversationId: string, message: ConversationDetailEntity, conversationHistory: ConversationDetailEntity[], conversationDetailId: string, onProgress?: AgentExecutionProgressCallback): Promise<ExecuteAgentResult | null>;
43
+ /**
44
+ * Build the message array for the agent from conversation history
45
+ */
46
+ private buildAgentMessages;
47
+ /**
48
+ * Map ConversationDetail Role to agent message role
49
+ */
50
+ private mapRoleToAgentRole;
51
+ /**
52
+ * Check if a message is tagging another user or agent.
53
+ * Returns true if the message contains @mentions that are NOT the ambient agent.
54
+ * Future enhancement: parse @mentions and determine if ambient agent should process.
55
+ */
56
+ private isTaggingOthers;
57
+ /**
58
+ * Invoke a sub-agent based on Conversation Manager Agent's payload.
59
+ * This is called when the Conversation Manager decides to delegate to a specialist agent.
60
+ *
61
+ * @param agentName Name of the agent to invoke
62
+ * @param conversationId The conversation ID
63
+ * @param message The user message that triggered this
64
+ * @param conversationHistory Recent conversation history for context
65
+ * @param reasoning Why this agent is being invoked
66
+ * @param conversationDetailId The ID of the conversation detail record to link to the agent run
67
+ * @param payload Optional payload to pass to the agent (e.g., previous OUTPUT artifact for continuity)
68
+ * @param onProgress Optional callback for receiving progress updates during execution
69
+ * @returns The agent's execution result, or null if agent not found
70
+ */
71
+ invokeSubAgent(agentName: string, conversationId: string, message: ConversationDetailEntity, conversationHistory: ConversationDetailEntity[], reasoning: string, conversationDetailId: string, payload?: any, onProgress?: AgentExecutionProgressCallback): Promise<ExecuteAgentResult | null>;
72
+ /**
73
+ * Clear the session for a conversation (useful when starting a new topic)
74
+ */
75
+ clearSession(conversationId: string): void;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationAgentService, never>;
77
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationAgentService>;
78
+ }
79
+ //# sourceMappingURL=conversation-agent.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-agent.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD,OAAO,EAAsB,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAGtH,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAGhG;;;GAGG;AACH,qBAGa,wBAAwB;IACnC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,yBAAyB,CAAsC;IACvE,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,cAAc,CAAuC;IAE7D;;OAEG;IACH,SAAgB,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAsC;;IAMxF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACU,2BAA2B,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA8BjF;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;;;;;;OAUG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,wBAAwB,EACjC,mBAAmB,EAAE,wBAAwB,EAAE,EAC/C,oBAAoB,EAAE,MAAM,EAC5B,UAAU,CAAC,EAAE,8BAA8B,GAC1C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA6DrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;;;;;;;;OAaG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,wBAAwB,EACjC,mBAAmB,EAAE,wBAAwB,EAAE,EAC/C,SAAS,EAAE,MAAM,EACjB,oBAAoB,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,8BAA8B,GAC1C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAqDrC;;OAEG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;yCAxR/B,wBAAwB;6CAAxB,wBAAwB;CA2RpC"}
@@ -0,0 +1,259 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { Metadata } from '@memberjunction/core';
4
+ import { GraphQLAIClient } from '@memberjunction/graphql-dataprovider';
5
+ import { AIEngineBase } from '@memberjunction/ai-engine-base';
6
+ import { MJNotificationService } from '@memberjunction/ng-notifications';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Service for managing agent interactions within conversations.
10
+ * Handles communication with the ambient Conversation Manager Agent and other agents.
11
+ */
12
+ export class ConversationAgentService {
13
+ _aiClient = null;
14
+ _conversationManagerAgent = null;
15
+ _sessionIds = new Map(); // conversationId -> sessionId
16
+ _isProcessing$ = new BehaviorSubject(false);
17
+ /**
18
+ * Observable indicating if the ambient agent is currently processing
19
+ */
20
+ isProcessing$ = this._isProcessing$.asObservable();
21
+ constructor() {
22
+ this.initializeAIClient();
23
+ }
24
+ /**
25
+ * Initialize the GraphQL AI Client
26
+ */
27
+ initializeAIClient() {
28
+ try {
29
+ const provider = Metadata.Provider;
30
+ if (provider) {
31
+ this._aiClient = new GraphQLAIClient(provider);
32
+ }
33
+ else {
34
+ console.warn('GraphQLDataProvider not available, agent functionality will be limited');
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error('Failed to initialize GraphQL AI Client:', error);
39
+ }
40
+ }
41
+ /**
42
+ * Get or load the Conversation Manager Agent
43
+ */
44
+ async getConversationManagerAgent() {
45
+ if (this._conversationManagerAgent) {
46
+ return this._conversationManagerAgent;
47
+ }
48
+ try {
49
+ // Ensure AIEngineBase is configured
50
+ await AIEngineBase.Instance.Config(false);
51
+ // Find the Conversation Manager Agent
52
+ const agents = AIEngineBase.Instance.Agents;
53
+ this._conversationManagerAgent = agents.find((agent) => agent.Name === 'Conversation Manager Agent') || null;
54
+ if (!this._conversationManagerAgent) {
55
+ const errorMsg = 'Conversation Manager Agent not found in AIEngineBase.Agents';
56
+ console.warn(errorMsg);
57
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);
58
+ }
59
+ return this._conversationManagerAgent;
60
+ }
61
+ catch (error) {
62
+ const errorMsg = 'Error loading Conversation Manager Agent: ' + (error instanceof Error ? error.message : String(error));
63
+ console.error('Error loading Conversation Manager Agent:', error);
64
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);
65
+ return null;
66
+ }
67
+ }
68
+ /**
69
+ * Get or create a session ID for a conversation
70
+ */
71
+ getSessionId(conversationId) {
72
+ if (!this._sessionIds.has(conversationId)) {
73
+ // Create a new session ID for this conversation
74
+ this._sessionIds.set(conversationId, `conv-${conversationId}-${Date.now()}`);
75
+ }
76
+ return this._sessionIds.get(conversationId);
77
+ }
78
+ /**
79
+ * Process a message through the ambient Conversation Manager Agent.
80
+ * This should be called for every message sent in a conversation.
81
+ *
82
+ * @param conversationId The conversation ID
83
+ * @param message The message that was just sent
84
+ * @param conversationHistory Recent messages in the conversation for context
85
+ * @param conversationDetailId The ID of the conversation detail record to link to the agent run
86
+ * @param onProgress Optional callback for receiving progress updates during execution
87
+ * @returns The agent's response, or null if the agent chooses not to respond
88
+ */
89
+ async processMessage(conversationId, message, conversationHistory, conversationDetailId, onProgress) {
90
+ // Don't process if user is tagging someone else (future enhancement)
91
+ // For now, we'll always send to the ambient agent
92
+ if (!this._aiClient) {
93
+ const errorMsg = 'AI Client not initialized, cannot process message through agent';
94
+ console.warn(errorMsg);
95
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'warning', 5000);
96
+ return null;
97
+ }
98
+ const agent = await this.getConversationManagerAgent();
99
+ if (!agent || !agent.ID) {
100
+ const errorMsg = 'Conversation Manager Agent not available';
101
+ console.warn(errorMsg);
102
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'warning', 5000);
103
+ return null;
104
+ }
105
+ try {
106
+ // Indicate agent is processing
107
+ this._isProcessing$.next(true);
108
+ // Build conversation messages for the agent
109
+ const conversationMessages = this.buildAgentMessages(conversationHistory, message);
110
+ // Prepare parameters using the correct ExecuteAgentParams type
111
+ const availAgents = AIEngineBase.Instance.Agents.filter(a => a.ID !== agent.ID && !a.ParentID && a.Status === 'Active');
112
+ const params = {
113
+ agent: agent,
114
+ conversationMessages: conversationMessages,
115
+ conversationDetailId: conversationDetailId,
116
+ data: {
117
+ ALL_AVAILABLE_AGENTS: availAgents.map(a => {
118
+ return {
119
+ ID: a.ID,
120
+ Name: a.Name,
121
+ Description: a.Description
122
+ };
123
+ }),
124
+ conversationId: conversationId,
125
+ latestMessageId: message.ID
126
+ },
127
+ onProgress: onProgress
128
+ };
129
+ // Run the agent
130
+ const result = await this._aiClient.RunAIAgent(params);
131
+ return result;
132
+ }
133
+ catch (error) {
134
+ const errorMsg = 'Error processing message through agent: ' + (error instanceof Error ? error.message : String(error));
135
+ console.error('Error processing message through agent:', error);
136
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);
137
+ return null;
138
+ }
139
+ finally {
140
+ // Always clear processing state
141
+ this._isProcessing$.next(false);
142
+ }
143
+ }
144
+ /**
145
+ * Build the message array for the agent from conversation history
146
+ */
147
+ buildAgentMessages(history, currentMessage) {
148
+ const messages = [];
149
+ // Add historical messages (limit to recent context, e.g., last 20 messages)
150
+ const recentHistory = history.slice(-20);
151
+ for (const msg of recentHistory) {
152
+ messages.push({
153
+ role: this.mapRoleToAgentRole(msg.Role),
154
+ content: msg.Message || ''
155
+ });
156
+ }
157
+ // Add the current message
158
+ messages.push({
159
+ role: this.mapRoleToAgentRole(currentMessage.Role),
160
+ content: currentMessage.Message || ''
161
+ });
162
+ return messages;
163
+ }
164
+ /**
165
+ * Map ConversationDetail Role to agent message role
166
+ */
167
+ mapRoleToAgentRole(role) {
168
+ const roleLower = (role || '').toLowerCase();
169
+ if (roleLower === 'user')
170
+ return 'user';
171
+ if (roleLower === 'assistant' || roleLower === 'agent')
172
+ return 'assistant';
173
+ return 'user'; // Default to user
174
+ }
175
+ /**
176
+ * Check if a message is tagging another user or agent.
177
+ * Returns true if the message contains @mentions that are NOT the ambient agent.
178
+ * Future enhancement: parse @mentions and determine if ambient agent should process.
179
+ */
180
+ isTaggingOthers(message) {
181
+ // Future implementation: check for @mentions
182
+ // For now, always return false (always process through ambient agent)
183
+ return false;
184
+ }
185
+ /**
186
+ * Invoke a sub-agent based on Conversation Manager Agent's payload.
187
+ * This is called when the Conversation Manager decides to delegate to a specialist agent.
188
+ *
189
+ * @param agentName Name of the agent to invoke
190
+ * @param conversationId The conversation ID
191
+ * @param message The user message that triggered this
192
+ * @param conversationHistory Recent conversation history for context
193
+ * @param reasoning Why this agent is being invoked
194
+ * @param conversationDetailId The ID of the conversation detail record to link to the agent run
195
+ * @param payload Optional payload to pass to the agent (e.g., previous OUTPUT artifact for continuity)
196
+ * @param onProgress Optional callback for receiving progress updates during execution
197
+ * @returns The agent's execution result, or null if agent not found
198
+ */
199
+ async invokeSubAgent(agentName, conversationId, message, conversationHistory, reasoning, conversationDetailId, payload, onProgress) {
200
+ if (!this._aiClient) {
201
+ const errorMsg = 'AI Client not initialized, cannot invoke sub-agent';
202
+ console.warn(errorMsg);
203
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'warning', 5000);
204
+ return null;
205
+ }
206
+ try {
207
+ // Ensure AIEngineBase is configured
208
+ await AIEngineBase.Instance.Config(false);
209
+ // Find the agent by name
210
+ const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);
211
+ if (!agent || !agent.ID) {
212
+ const errorMsg = `Sub-agent "${agentName}" not found`;
213
+ console.warn(`❌ ${errorMsg}`);
214
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);
215
+ return null;
216
+ }
217
+ console.log(`🎯 Invoking sub-agent: ${agentName}`, { reasoning, hasPayload: !!payload });
218
+ // Build conversation messages for the sub-agent
219
+ const conversationMessages = this.buildAgentMessages(conversationHistory, message);
220
+ // Prepare parameters with optional payload and progress callback
221
+ const params = {
222
+ agent: agent,
223
+ conversationMessages: conversationMessages,
224
+ conversationDetailId: conversationDetailId,
225
+ data: {
226
+ conversationId: conversationId,
227
+ latestMessageId: message.ID,
228
+ invocationReason: reasoning
229
+ },
230
+ ...(payload ? { payload } : {}),
231
+ onProgress: onProgress
232
+ };
233
+ // Run the sub-agent
234
+ const result = await this._aiClient.RunAIAgent(params);
235
+ return result;
236
+ }
237
+ catch (error) {
238
+ const errorMsg = `Error invoking sub-agent "${agentName}": ` + (error instanceof Error ? error.message : String(error));
239
+ console.error(`Error invoking sub-agent "${agentName}":`, error);
240
+ MJNotificationService.Instance?.CreateSimpleNotification(errorMsg, 'error', 5000);
241
+ return null;
242
+ }
243
+ }
244
+ /**
245
+ * Clear the session for a conversation (useful when starting a new topic)
246
+ */
247
+ clearSession(conversationId) {
248
+ this._sessionIds.delete(conversationId);
249
+ }
250
+ static ɵfac = function ConversationAgentService_Factory(t) { return new (t || ConversationAgentService)(); };
251
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConversationAgentService, factory: ConversationAgentService.ɵfac, providedIn: 'root' });
252
+ }
253
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationAgentService, [{
254
+ type: Injectable,
255
+ args: [{
256
+ providedIn: 'root'
257
+ }]
258
+ }], () => [], null); })();
259
+ //# sourceMappingURL=conversation-agent.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-agent.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-agent.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { ConversationEntity } from '@memberjunction/core-entities';
2
+ import { UserInfo } from '@memberjunction/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Simplified state management for conversations
6
+ * Uses simple arrays with Angular change detection instead of complex observables
7
+ * This prevents synchronization issues when updating conversation properties
8
+ */
9
+ export declare class ConversationStateService {
10
+ conversations: ConversationEntity[];
11
+ activeConversationId: string | null;
12
+ searchQuery: string;
13
+ isLoading: boolean;
14
+ activeThreadId: string | null;
15
+ constructor();
16
+ /**
17
+ * Gets the active conversation object
18
+ */
19
+ get activeConversation(): ConversationEntity | null;
20
+ /**
21
+ * Gets filtered conversations based on search query
22
+ */
23
+ get filteredConversations(): ConversationEntity[];
24
+ /**
25
+ * Gets pinned conversations
26
+ */
27
+ get pinnedConversations(): ConversationEntity[];
28
+ /**
29
+ * Sets the active conversation
30
+ * @param id The conversation ID to activate (or null to clear)
31
+ */
32
+ setActiveConversation(id: string | null): void;
33
+ /**
34
+ * Gets the current active conversation ID
35
+ */
36
+ getActiveConversationId(): string | null;
37
+ /**
38
+ * Adds a conversation to the list
39
+ * @param conversation The conversation to add
40
+ */
41
+ addConversation(conversation: ConversationEntity): void;
42
+ /**
43
+ * Updates a conversation in the list by directly modifying the entity object
44
+ * Angular change detection will pick up the changes automatically
45
+ * @param id The conversation ID
46
+ * @param updates The fields to update
47
+ */
48
+ updateConversationInPlace(id: string, updates: Partial<ConversationEntity>): void;
49
+ /**
50
+ * Removes a conversation from the list
51
+ * @param id The conversation ID to remove
52
+ */
53
+ removeConversation(id: string): void;
54
+ /**
55
+ * Sets the search query
56
+ * @param query The search query string
57
+ */
58
+ setSearchQuery(query: string): void;
59
+ /**
60
+ * Clears the search query
61
+ */
62
+ clearSearchQuery(): void;
63
+ /**
64
+ * Loads conversations from the database
65
+ * @param environmentId The environment ID to filter by
66
+ * @param currentUser The current user context
67
+ */
68
+ loadConversations(environmentId: string, currentUser: UserInfo): Promise<void>;
69
+ /**
70
+ * Creates a new conversation
71
+ * @param name The conversation name
72
+ * @param environmentId The environment ID
73
+ * @param currentUser The current user context
74
+ * @param description Optional description
75
+ * @param projectId Optional project ID
76
+ * @returns The created conversation entity
77
+ */
78
+ createConversation(name: string, environmentId: string, currentUser: UserInfo, description?: string, projectId?: string): Promise<ConversationEntity>;
79
+ /**
80
+ * Deletes a conversation
81
+ * @param id The conversation ID
82
+ * @param currentUser The current user context
83
+ * @returns True if successful
84
+ */
85
+ deleteConversation(id: string, currentUser: UserInfo): Promise<boolean>;
86
+ /**
87
+ * Updates a conversation - saves to database AND updates in-place in the array
88
+ * @param id The conversation ID
89
+ * @param updates The fields to update
90
+ * @param currentUser The current user context
91
+ * @returns True if successful
92
+ */
93
+ saveConversation(id: string, updates: Partial<ConversationEntity>, currentUser: UserInfo): Promise<boolean>;
94
+ /**
95
+ * Toggles the pinned status of a conversation
96
+ * @param id The conversation ID
97
+ * @param currentUser The current user context
98
+ */
99
+ togglePin(id: string, currentUser: UserInfo): Promise<void>;
100
+ /**
101
+ * Archives a conversation
102
+ * @param id The conversation ID
103
+ * @param currentUser The current user context
104
+ */
105
+ archiveConversation(id: string, currentUser: UserInfo): Promise<void>;
106
+ /**
107
+ * Opens a thread panel for a specific message
108
+ * @param messageId The parent message ID
109
+ */
110
+ openThread(messageId: string): void;
111
+ /**
112
+ * Closes the currently open thread panel
113
+ */
114
+ closeThread(): void;
115
+ /**
116
+ * Gets the currently active thread ID
117
+ */
118
+ getActiveThreadId(): string | null;
119
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationStateService, never>;
120
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationStateService>;
121
+ }
122
+ //# sourceMappingURL=conversation-state.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-state.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEnE;;;;GAIG;AACH,qBAGa,wBAAwB;IAE5B,aAAa,EAAE,kBAAkB,EAAE,CAAM;IACzC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3C,WAAW,EAAE,MAAM,CAAM;IACzB,SAAS,EAAE,OAAO,CAAS;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;;IAI5C;;OAEG;IACH,IAAI,kBAAkB,IAAI,kBAAkB,GAAG,IAAI,CAGlD;IAED;;OAEG;IACH,IAAI,qBAAqB,IAAI,kBAAkB,EAAE,CAShD;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAE9C;IAED;;;OAGG;IACH,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK9C;;OAEG;IACH,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAIxC;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAIvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAQjF;;;OAGG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIpC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BpF;;;;;;;;OAQG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAmB9B;;;;;OAKG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7E;;;;;;OAMG;IACG,gBAAgB,CACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACpC,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;OAIG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE;;;;OAIG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;yCA7QvB,wBAAwB;6CAAxB,wBAAwB;CAgRpC"}