@memberjunction/ai-agents 3.4.0 → 4.0.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 (97) hide show
  1. package/dist/AgentDataPreloader.d.ts +117 -1
  2. package/dist/AgentDataPreloader.d.ts.map +1 -1
  3. package/dist/AgentDataPreloader.js +156 -58
  4. package/dist/AgentDataPreloader.js.map +1 -1
  5. package/dist/AgentRunner.d.ts +212 -0
  6. package/dist/AgentRunner.d.ts.map +1 -1
  7. package/dist/AgentRunner.js +354 -103
  8. package/dist/AgentRunner.js.map +1 -1
  9. package/dist/PayloadChangeAnalyzer.d.ts +68 -0
  10. package/dist/PayloadChangeAnalyzer.d.ts.map +1 -1
  11. package/dist/PayloadChangeAnalyzer.js +68 -32
  12. package/dist/PayloadChangeAnalyzer.js.map +1 -1
  13. package/dist/PayloadFeedbackManager.d.ts +57 -1
  14. package/dist/PayloadFeedbackManager.d.ts.map +1 -1
  15. package/dist/PayloadFeedbackManager.js +66 -21
  16. package/dist/PayloadFeedbackManager.js.map +1 -1
  17. package/dist/PayloadManager.d.ts +286 -1
  18. package/dist/PayloadManager.d.ts.map +1 -1
  19. package/dist/PayloadManager.js +423 -50
  20. package/dist/PayloadManager.js.map +1 -1
  21. package/dist/__tests__/action-changes.test.d.ts +13 -0
  22. package/dist/__tests__/action-changes.test.d.ts.map +1 -1
  23. package/dist/__tests__/action-changes.test.js +57 -4
  24. package/dist/__tests__/action-changes.test.js.map +1 -1
  25. package/dist/__tests__/agent-memory-features.test.d.ts +52 -0
  26. package/dist/__tests__/agent-memory-features.test.d.ts.map +1 -1
  27. package/dist/__tests__/agent-memory-features.test.js +96 -13
  28. package/dist/__tests__/agent-memory-features.test.js.map +1 -1
  29. package/dist/__tests__/agent-type-prompt-params.test.d.ts +12 -0
  30. package/dist/__tests__/agent-type-prompt-params.test.d.ts.map +1 -1
  31. package/dist/__tests__/agent-type-prompt-params.test.js +112 -20
  32. package/dist/__tests__/agent-type-prompt-params.test.js.map +1 -1
  33. package/dist/__tests__/chat-handling-option.test.d.ts +26 -0
  34. package/dist/__tests__/chat-handling-option.test.d.ts.map +1 -1
  35. package/dist/__tests__/chat-handling-option.test.js +41 -2
  36. package/dist/__tests__/chat-handling-option.test.js.map +1 -1
  37. package/dist/agent-context-injector.d.ts +114 -0
  38. package/dist/agent-context-injector.d.ts.map +1 -1
  39. package/dist/agent-context-injector.js +138 -19
  40. package/dist/agent-context-injector.js.map +1 -1
  41. package/dist/agent-types/base-agent-type.d.ts +354 -0
  42. package/dist/agent-types/base-agent-type.d.ts.map +1 -1
  43. package/dist/agent-types/base-agent-type.js +288 -17
  44. package/dist/agent-types/base-agent-type.js.map +1 -1
  45. package/dist/agent-types/flow-agent-type.d.ts +328 -2
  46. package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
  47. package/dist/agent-types/flow-agent-type.js +503 -63
  48. package/dist/agent-types/flow-agent-type.js.map +1 -1
  49. package/dist/agent-types/index.d.ts +14 -3
  50. package/dist/agent-types/index.d.ts.map +1 -1
  51. package/dist/agent-types/index.js +14 -23
  52. package/dist/agent-types/index.js.map +1 -1
  53. package/dist/agent-types/loop-agent-prompt-params.d.ts +190 -0
  54. package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
  55. package/dist/agent-types/loop-agent-prompt-params.js +23 -6
  56. package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
  57. package/dist/agent-types/loop-agent-response-type.d.ts +62 -0
  58. package/dist/agent-types/loop-agent-response-type.d.ts.map +1 -1
  59. package/dist/agent-types/loop-agent-response-type.js +3 -2
  60. package/dist/agent-types/loop-agent-response-type.js.map +1 -1
  61. package/dist/agent-types/loop-agent-type.d.ts +139 -2
  62. package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
  63. package/dist/agent-types/loop-agent-type.js +207 -35
  64. package/dist/agent-types/loop-agent-type.js.map +1 -1
  65. package/dist/base-agent.d.ts +1344 -1
  66. package/dist/base-agent.d.ts.map +1 -1
  67. package/dist/base-agent.js +2282 -211
  68. package/dist/base-agent.js.map +1 -1
  69. package/dist/index.d.ts +24 -14
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +25 -35
  72. package/dist/index.js.map +1 -1
  73. package/dist/memory-cleanup-agent.d.ts +53 -1
  74. package/dist/memory-cleanup-agent.d.ts.map +1 -1
  75. package/dist/memory-cleanup-agent.js +89 -21
  76. package/dist/memory-cleanup-agent.js.map +1 -1
  77. package/dist/memory-manager-agent.d.ts +61 -1
  78. package/dist/memory-manager-agent.d.ts.map +1 -1
  79. package/dist/memory-manager-agent.js +260 -116
  80. package/dist/memory-manager-agent.js.map +1 -1
  81. package/dist/services/AgentEmbeddingService.d.ts +16 -0
  82. package/dist/services/AgentEmbeddingService.d.ts.map +1 -0
  83. package/dist/services/AgentEmbeddingService.js +158 -0
  84. package/dist/services/AgentEmbeddingService.js.map +1 -0
  85. package/dist/types/AgentMatchResult.d.ts +18 -0
  86. package/dist/types/AgentMatchResult.d.ts.map +1 -0
  87. package/dist/types/AgentMatchResult.js +3 -0
  88. package/dist/types/AgentMatchResult.js.map +1 -0
  89. package/dist/types/payload-operations.d.ts +51 -0
  90. package/dist/types/payload-operations.d.ts.map +1 -1
  91. package/dist/types/payload-operations.js +54 -15
  92. package/dist/types/payload-operations.js.map +1 -1
  93. package/dist/utils/ConversationMessageResolver.d.ts +79 -1
  94. package/dist/utils/ConversationMessageResolver.d.ts.map +1 -1
  95. package/dist/utils/ConversationMessageResolver.js +99 -9
  96. package/dist/utils/ConversationMessageResolver.js.map +1 -1
  97. package/package.json +20 -19
@@ -1,39 +1,251 @@
1
+ /**
2
+ * @fileoverview AgentRunner provides a thin wrapper for executing AI agents
3
+ * using the MemberJunction AI Agent framework.
4
+ *
5
+ * This module handles agent instantiation using the ClassFactory pattern to ensure
6
+ * the correct agent subclass is used based on the agent type's DriverClass property.
7
+ *
8
+ * @module @memberjunction/ai-agents
9
+ * @author MemberJunction.com
10
+ * @since 2.49.0
11
+ */
1
12
  import { UserInfo } from '@memberjunction/core';
2
13
  import { ExecuteAgentResult, ExecuteAgentParams, MediaOutput } from '@memberjunction/ai-core-plus';
14
+ /**
15
+ * AgentRunner provides a thin wrapper for executing AI agents.
16
+ *
17
+ * This class handles:
18
+ * - Loading agent type metadata to get the DriverClass
19
+ * - Instantiating the correct agent class using ClassFactory
20
+ * - Passing through to the agent's Execute method
21
+ *
22
+ * @class AgentRunner
23
+ * @example
24
+ * ```typescript
25
+ * const runner = new AgentRunner();
26
+ * const result = await runner.RunAgent({
27
+ * agent: myAgent,
28
+ * conversationMessages: messages,
29
+ * contextUser: currentUser
30
+ * });
31
+ * ```
32
+ */
3
33
  export declare class AgentRunner {
34
+ /**
35
+ * Runs an AI agent with the specified parameters.
36
+ *
37
+ * This method acts as a thin pass-through that:
38
+ * 1. Loads the agent type to get the DriverClass
39
+ * 2. Uses ClassFactory to instantiate the correct agent class
40
+ * 3. Calls Execute on the agent instance and returns the result
41
+ *
42
+ * @param {ExecuteAgentParams} params - Parameters for agent execution (same as BaseAgent.Execute)
43
+ * @template C - The type of the agent's context as provided in the ExecuteAgentParams
44
+ * @template R - The type of the agent's result as returned in ExecuteAgentResult
45
+ * @returns {Promise<ExecuteAgentResult<T>>} The execution result (same as BaseAgent.Execute)
46
+ *
47
+ * @throws {Error} Throws if agent type loading fails or agent instantiation fails
48
+ */
4
49
  RunAgent<C = any, R = any>(params: ExecuteAgentParams<C>): Promise<ExecuteAgentResult<R>>;
50
+ /**
51
+ * Runs an AI agent within a conversation context, handling conversation and artifact management.
52
+ *
53
+ * This method provides a complete workflow for running agents in conversations:
54
+ * 1. Creates or uses existing conversation
55
+ * 2. Creates conversation detail record for the user message
56
+ * 3. Executes the agent
57
+ * 4. Creates artifacts from the agent's payload (if configured)
58
+ * 5. Links artifacts to the conversation detail
59
+ *
60
+ * @param params - Core agent execution parameters
61
+ * @param options - Conversation-specific options
62
+ * @returns Promise containing the agent execution result and conversation/artifact metadata
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const runner = new AgentRunner();
67
+ * const result = await runner.RunAgentInConversation({
68
+ * agent: myAgent,
69
+ * conversationMessages: messages,
70
+ * contextUser: currentUser
71
+ * }, {
72
+ * conversationId: existingConvoId, // Optional - creates new if not provided
73
+ * userMessage: 'User query text',
74
+ * createArtifacts: true
75
+ * });
76
+ * ```
77
+ */
5
78
  RunAgentInConversation<C = any, R = any>(params: ExecuteAgentParams<C>, options: {
79
+ /** Optional existing conversation ID. If not provided, a new conversation will be created */
6
80
  conversationId?: string;
81
+ /** Optional existing conversation detail ID. If provided, skips conversation/detail creation */
7
82
  conversationDetailId?: string;
83
+ /** The user's message text for this conversation turn (required if conversationDetailId not provided) */
8
84
  userMessage?: string;
85
+ /** Whether to create artifacts from the agent's payload (default: true) */
9
86
  createArtifacts?: boolean;
87
+ /** Optional source artifact ID for versioning (agent continuity/refinement) */
10
88
  sourceArtifactId?: string;
89
+ /** Optional conversation name (only used when creating new conversation) */
11
90
  conversationName?: string;
91
+ /** Optional test run ID to link conversation and details to (for test execution traceability) */
12
92
  testRunId?: string;
13
93
  }): Promise<{
94
+ /** The agent execution result */
14
95
  agentResult: ExecuteAgentResult<R>;
96
+ /** The conversation ID (created or existing) */
15
97
  conversationId: string;
98
+ /** The conversation detail ID for the user message */
16
99
  userMessageDetailId: string;
100
+ /** The conversation detail ID for the agent response (only present if server created it) */
17
101
  agentResponseDetailId?: string;
102
+ /** Artifact information if created */
18
103
  artifactInfo?: {
19
104
  artifactId: string;
20
105
  versionId: string;
21
106
  versionNumber: number;
22
107
  };
23
108
  }>;
109
+ /**
110
+ * Gets the maximum version number for an artifact.
111
+ * Used when creating new versions of explicitly specified artifacts.
112
+ *
113
+ * @param artifactId - The artifact ID to query
114
+ * @param contextUser - The user context for the query
115
+ * @returns The maximum version number, or 0 if no versions exist
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * const runner = new AgentRunner();
120
+ * const maxVersion = await runner.GetMaxVersionForArtifact(artifactId, currentUser);
121
+ * const newVersionNumber = maxVersion + 1;
122
+ * ```
123
+ */
24
124
  GetMaxVersionForArtifact(artifactId: string, contextUser: UserInfo): Promise<number>;
125
+ /**
126
+ * Finds the most recent artifact for a conversation detail to determine versioning.
127
+ * Queries the junction table to locate artifacts linked to a specific conversation message.
128
+ *
129
+ * @param conversationDetailId - The conversation detail ID to query
130
+ * @param contextUser - The user context for the query
131
+ * @returns Artifact info if exists, null if this is the first artifact for this message
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const runner = new AgentRunner();
136
+ * const previousArtifact = await runner.FindPreviousArtifactForMessage(detailId, currentUser);
137
+ * if (previousArtifact) {
138
+ * console.log(`Found artifact ${previousArtifact.artifactId} at version ${previousArtifact.versionNumber}`);
139
+ * }
140
+ * ```
141
+ */
25
142
  FindPreviousArtifactForMessage(conversationDetailId: string, contextUser: UserInfo): Promise<{
26
143
  artifactId: string;
27
144
  versionNumber: number;
28
145
  } | null>;
146
+ /**
147
+ * Processes agent completion to create artifacts from the agent's payload.
148
+ * Handles artifact creation, versioning, and linking to conversation details.
149
+ *
150
+ * This method implements intelligent artifact versioning:
151
+ * 1. If sourceArtifactId is provided (explicit continuity), creates new version of that artifact
152
+ * 2. Otherwise, checks for previous artifacts on this conversation detail
153
+ * 3. If previous artifact exists, creates new version of it
154
+ * 4. If no previous artifact, creates entirely new artifact
155
+ *
156
+ * Respects the agent's ArtifactCreationMode configuration:
157
+ * - "Never": Skips artifact creation entirely
158
+ * - "System Only": Creates artifact with Visibility='System Only'
159
+ * - Other modes: Creates artifact with Visibility='Always'
160
+ *
161
+ * @param agentResult - The result from agent execution containing the payload
162
+ * @param conversationDetailId - The conversation detail to link the artifact to
163
+ * @param sourceArtifactId - Optional explicit artifact to version from (agent continuity)
164
+ * @param contextUser - The user context for the operation
165
+ * @returns Artifact metadata if created, undefined if skipped or failed
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const runner = new AgentRunner();
170
+ * const artifactInfo = await runner.ProcessAgentArtifacts(
171
+ * agentResult,
172
+ * conversationDetailId,
173
+ * sourceArtifactId, // Optional
174
+ * currentUser
175
+ * );
176
+ * if (artifactInfo) {
177
+ * console.log(`Created artifact ${artifactInfo.artifactId} version ${artifactInfo.versionNumber}`);
178
+ * }
179
+ * ```
180
+ */
29
181
  ProcessAgentArtifacts<R>(agentResult: ExecuteAgentResult<R>, conversationDetailId: string, sourceArtifactId: string | undefined, contextUser: UserInfo): Promise<{
30
182
  artifactId: string;
31
183
  versionId: string;
32
184
  versionNumber: number;
33
185
  } | undefined>;
186
+ /**
187
+ * Generates a conversation name and description using the "Name Conversation" AI prompt.
188
+ * Same approach as UI - uses AI to create a meaningful title and description from the first user message.
189
+ * Falls back to null if prompt not found or execution fails (caller will use fallback).
190
+ *
191
+ * @param userMessage - The first user message to base the name on
192
+ * @param contextUser - User context for prompt execution
193
+ * @returns Generated conversation name and description, or null if generation failed
194
+ * @private
195
+ */
34
196
  private GenerateConversationName;
197
+ /**
198
+ * Saves media outputs to AIAgentRunMedia table for permanent storage.
199
+ * This creates records for each media output promoted during agent execution.
200
+ *
201
+ * Only media with `persist !== false` is saved. Media items with `persist: false`
202
+ * are typically intercepted binary content that was never used in the final output.
203
+ *
204
+ * @param agentRunId - The ID of the agent run
205
+ * @param mediaOutputs - Array of media outputs to save
206
+ * @param contextUser - User context for the operation
207
+ * @returns Array of saved AIAgentRunMedia IDs
208
+ * @since 3.1.0
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * const runner = new AgentRunner();
213
+ * const mediaIds = await runner.SaveAgentRunMedia(
214
+ * agentResult.agentRun.ID,
215
+ * agentResult.mediaOutputs,
216
+ * currentUser
217
+ * );
218
+ * console.log(`Saved ${mediaIds.length} media outputs`);
219
+ * ```
220
+ */
35
221
  SaveAgentRunMedia(agentRunId: string, mediaOutputs: MediaOutput[] | undefined, contextUser: UserInfo): Promise<string[]>;
222
+ /**
223
+ * Creates ConversationDetailAttachment records for media outputs.
224
+ * This enables media to be displayed in the conversation UI.
225
+ *
226
+ * @param conversationDetailId - The conversation detail to attach media to
227
+ * @param mediaOutputs - Array of media outputs
228
+ * @param agentRunMediaIds - Corresponding AIAgentRunMedia IDs
229
+ * @param contextUser - User context for the operation
230
+ * @returns Array of created attachment IDs
231
+ * @since 3.1.0
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * const runner = new AgentRunner();
236
+ * const attachmentIds = await runner.CreateConversationMediaAttachments(
237
+ * conversationDetailId,
238
+ * mediaOutputs,
239
+ * agentRunMediaIds,
240
+ * currentUser
241
+ * );
242
+ * ```
243
+ */
36
244
  CreateConversationMediaAttachments(conversationDetailId: string, mediaOutputs: MediaOutput[], agentRunMediaIds: string[], contextUser: UserInfo): Promise<string[]>;
245
+ /**
246
+ * Gets file extension from MIME type
247
+ * @private
248
+ */
37
249
  private getMimeTypeExtension;
38
250
  }
39
251
  //# sourceMappingURL=AgentRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentRunner.d.ts","sourceRoot":"","sources":["../src/AgentRunner.ts"],"names":[],"mappings":"AAYA,OAAO,EAAgF,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG9H,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAuBnG,qBAAa,WAAW;IAgBP,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IA2EzF,sBAAsB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAChD,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE;QAEL,cAAc,CAAC,EAAE,MAAM,CAAC;QAExB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB,eAAe,CAAC,EAAE,OAAO,CAAC;QAE1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAE1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GACF,OAAO,CAAC;QAEP,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAEnC,cAAc,EAAE,MAAM,CAAC;QAEvB,mBAAmB,EAAE,MAAM,CAAC;QAE5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAE/B,YAAY,CAAC,EAAE;YACX,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,aAAa,EAAE,MAAM,CAAC;SACzB,CAAC;KACL,CAAC;IA4RW,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCpF,8BAA8B,CACvC,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAuEnD,qBAAqB,CAAC,CAAC,EAChC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAClC,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;YAgK1E,wBAAwB;IA4EzB,iBAAiB,CAC1B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,EACvC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IA6HP,kCAAkC,CAC3C,oBAAoB,EAAE,MAAM,EAC5B,YAAY,EAAE,WAAW,EAAE,EAC3B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IA6FpB,OAAO,CAAC,oBAAoB;CAiB/B"}
1
+ {"version":3,"file":"AgentRunner.d.ts","sourceRoot":"","sources":["../src/AgentRunner.ts"],"names":[],"mappings":"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"}