@memberjunction/ai-agents 3.3.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.
- package/dist/AgentDataPreloader.d.ts +117 -1
- package/dist/AgentDataPreloader.d.ts.map +1 -1
- package/dist/AgentDataPreloader.js +156 -58
- package/dist/AgentDataPreloader.js.map +1 -1
- package/dist/AgentRunner.d.ts +212 -0
- package/dist/AgentRunner.d.ts.map +1 -1
- package/dist/AgentRunner.js +354 -103
- package/dist/AgentRunner.js.map +1 -1
- package/dist/PayloadChangeAnalyzer.d.ts +68 -0
- package/dist/PayloadChangeAnalyzer.d.ts.map +1 -1
- package/dist/PayloadChangeAnalyzer.js +68 -32
- package/dist/PayloadChangeAnalyzer.js.map +1 -1
- package/dist/PayloadFeedbackManager.d.ts +57 -1
- package/dist/PayloadFeedbackManager.d.ts.map +1 -1
- package/dist/PayloadFeedbackManager.js +66 -21
- package/dist/PayloadFeedbackManager.js.map +1 -1
- package/dist/PayloadManager.d.ts +286 -1
- package/dist/PayloadManager.d.ts.map +1 -1
- package/dist/PayloadManager.js +423 -50
- package/dist/PayloadManager.js.map +1 -1
- package/dist/__tests__/action-changes.test.d.ts +13 -0
- package/dist/__tests__/action-changes.test.d.ts.map +1 -1
- package/dist/__tests__/action-changes.test.js +57 -4
- package/dist/__tests__/action-changes.test.js.map +1 -1
- package/dist/__tests__/agent-memory-features.test.d.ts +52 -0
- package/dist/__tests__/agent-memory-features.test.d.ts.map +1 -1
- package/dist/__tests__/agent-memory-features.test.js +96 -13
- package/dist/__tests__/agent-memory-features.test.js.map +1 -1
- package/dist/__tests__/agent-type-prompt-params.test.d.ts +12 -0
- package/dist/__tests__/agent-type-prompt-params.test.d.ts.map +1 -1
- package/dist/__tests__/agent-type-prompt-params.test.js +112 -20
- package/dist/__tests__/agent-type-prompt-params.test.js.map +1 -1
- package/dist/__tests__/chat-handling-option.test.d.ts +26 -0
- package/dist/__tests__/chat-handling-option.test.d.ts.map +1 -1
- package/dist/__tests__/chat-handling-option.test.js +41 -2
- package/dist/__tests__/chat-handling-option.test.js.map +1 -1
- package/dist/agent-context-injector.d.ts +114 -0
- package/dist/agent-context-injector.d.ts.map +1 -1
- package/dist/agent-context-injector.js +138 -19
- package/dist/agent-context-injector.js.map +1 -1
- package/dist/agent-types/base-agent-type.d.ts +354 -0
- package/dist/agent-types/base-agent-type.d.ts.map +1 -1
- package/dist/agent-types/base-agent-type.js +288 -17
- package/dist/agent-types/base-agent-type.js.map +1 -1
- package/dist/agent-types/flow-agent-type.d.ts +328 -2
- package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
- package/dist/agent-types/flow-agent-type.js +503 -63
- package/dist/agent-types/flow-agent-type.js.map +1 -1
- package/dist/agent-types/index.d.ts +14 -3
- package/dist/agent-types/index.d.ts.map +1 -1
- package/dist/agent-types/index.js +14 -23
- package/dist/agent-types/index.js.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.d.ts +190 -0
- package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.js +23 -6
- package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
- package/dist/agent-types/loop-agent-response-type.d.ts +62 -0
- package/dist/agent-types/loop-agent-response-type.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-response-type.js +3 -2
- package/dist/agent-types/loop-agent-response-type.js.map +1 -1
- package/dist/agent-types/loop-agent-type.d.ts +139 -2
- package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-type.js +207 -35
- package/dist/agent-types/loop-agent-type.js.map +1 -1
- package/dist/base-agent.d.ts +1344 -1
- package/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +2282 -211
- package/dist/base-agent.js.map +1 -1
- package/dist/index.d.ts +24 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -35
- package/dist/index.js.map +1 -1
- package/dist/memory-cleanup-agent.d.ts +53 -1
- package/dist/memory-cleanup-agent.d.ts.map +1 -1
- package/dist/memory-cleanup-agent.js +89 -21
- package/dist/memory-cleanup-agent.js.map +1 -1
- package/dist/memory-manager-agent.d.ts +61 -1
- package/dist/memory-manager-agent.d.ts.map +1 -1
- package/dist/memory-manager-agent.js +260 -116
- package/dist/memory-manager-agent.js.map +1 -1
- package/dist/services/AgentEmbeddingService.d.ts +16 -0
- package/dist/services/AgentEmbeddingService.d.ts.map +1 -0
- package/dist/services/AgentEmbeddingService.js +158 -0
- package/dist/services/AgentEmbeddingService.js.map +1 -0
- package/dist/types/AgentMatchResult.d.ts +18 -0
- package/dist/types/AgentMatchResult.d.ts.map +1 -0
- package/dist/types/AgentMatchResult.js +3 -0
- package/dist/types/AgentMatchResult.js.map +1 -0
- package/dist/types/payload-operations.d.ts +51 -0
- package/dist/types/payload-operations.d.ts.map +1 -1
- package/dist/types/payload-operations.js +54 -15
- package/dist/types/payload-operations.js.map +1 -1
- package/dist/utils/ConversationMessageResolver.d.ts +79 -1
- package/dist/utils/ConversationMessageResolver.d.ts.map +1 -1
- package/dist/utils/ConversationMessageResolver.js +99 -9
- package/dist/utils/ConversationMessageResolver.js.map +1 -1
- package/package.json +20 -19
package/dist/AgentRunner.d.ts
CHANGED
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"AgentRunner.d.ts","sourceRoot":"","sources":["../src/AgentRunner.ts"],"names":[],"mappings":"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"}
|