@memberjunction/ai-agents 3.4.0 → 4.1.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/README.md +232 -2584
- 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/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
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Feedback mechanism for validating suspicious payload changes with LLMs
|
|
3
|
+
*
|
|
4
|
+
* This module provides a standardized way to query AI agents about potentially
|
|
5
|
+
* unintended changes and receive structured yes/no confirmations.
|
|
6
|
+
*
|
|
7
|
+
* @module @memberjunction/ai-agents
|
|
8
|
+
* @author MemberJunction.com
|
|
9
|
+
* @since 3.1.0
|
|
10
|
+
*/
|
|
11
|
+
import { LogStatus, LogError } from '@memberjunction/core';
|
|
12
|
+
import { AIEngine } from '@memberjunction/aiengine';
|
|
13
|
+
import { AIPromptRunner } from '@memberjunction/ai-prompts';
|
|
14
|
+
import { AIPromptParams } from '@memberjunction/ai-core-plus';
|
|
15
|
+
/**
|
|
16
|
+
* Manages feedback collection for suspicious payload changes
|
|
17
|
+
*/
|
|
18
|
+
export class PayloadFeedbackManager {
|
|
9
19
|
constructor(config) {
|
|
10
20
|
this.config = {
|
|
11
21
|
maxQuestionsPerBatch: 10,
|
|
@@ -13,6 +23,9 @@ class PayloadFeedbackManager {
|
|
|
13
23
|
...config
|
|
14
24
|
};
|
|
15
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Generate feedback questions from warnings
|
|
28
|
+
*/
|
|
16
29
|
generateQuestions(warnings) {
|
|
17
30
|
const questions = [];
|
|
18
31
|
const feedbackWarnings = warnings.filter(w => w.requiresFeedback);
|
|
@@ -23,6 +36,9 @@ class PayloadFeedbackManager {
|
|
|
23
36
|
}
|
|
24
37
|
return questions;
|
|
25
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a structured question from a warning
|
|
41
|
+
*/
|
|
26
42
|
createQuestionFromWarning(warning, index) {
|
|
27
43
|
let question = '';
|
|
28
44
|
switch (warning.type) {
|
|
@@ -55,15 +71,25 @@ class PayloadFeedbackManager {
|
|
|
55
71
|
}
|
|
56
72
|
};
|
|
57
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Query the AI agent about suspicious changes using MemberJunction AI Prompts system.
|
|
76
|
+
*
|
|
77
|
+
* @param questions - Array of feedback questions to ask about payload changes
|
|
78
|
+
* @param conversationContext - Context from the conversation (for reference)
|
|
79
|
+
* @param contextUser - User context for the prompt execution
|
|
80
|
+
* @returns Array of responses indicating whether each change was intended
|
|
81
|
+
*/
|
|
58
82
|
async queryAgent(questions, conversationContext, contextUser) {
|
|
59
83
|
if (questions.length === 0) {
|
|
60
84
|
return [];
|
|
61
85
|
}
|
|
86
|
+
// Find the payload feedback prompt
|
|
62
87
|
const promptName = 'Payload Change Feedback Query';
|
|
63
|
-
const prompt =
|
|
88
|
+
const prompt = AIEngine.Instance.Prompts.find(p => p.Name.trim().toLowerCase() === promptName.toLowerCase() &&
|
|
64
89
|
p.Category?.trim().toLowerCase() === 'mj: system');
|
|
65
90
|
if (!prompt) {
|
|
66
|
-
|
|
91
|
+
// Fallback: accept all changes if prompt not configured
|
|
92
|
+
LogStatus(`PayloadFeedbackManager: Prompt "${promptName}" not found in MJ: System category. Accepting all changes by default.`);
|
|
67
93
|
return questions.map(q => ({
|
|
68
94
|
questionId: q.id,
|
|
69
95
|
intended: true,
|
|
@@ -71,9 +97,11 @@ class PayloadFeedbackManager {
|
|
|
71
97
|
}));
|
|
72
98
|
}
|
|
73
99
|
try {
|
|
100
|
+
// Build template parameters
|
|
74
101
|
const templateData = this.buildFeedbackTemplateParams(questions);
|
|
75
|
-
|
|
76
|
-
const
|
|
102
|
+
// Execute the prompt
|
|
103
|
+
const runner = new AIPromptRunner();
|
|
104
|
+
const promptParams = new AIPromptParams();
|
|
77
105
|
promptParams.prompt = prompt;
|
|
78
106
|
promptParams.data = templateData;
|
|
79
107
|
if (contextUser) {
|
|
@@ -81,17 +109,20 @@ class PayloadFeedbackManager {
|
|
|
81
109
|
}
|
|
82
110
|
const result = await runner.ExecutePrompt(promptParams);
|
|
83
111
|
if (!result.success || !result.result?.responses) {
|
|
84
|
-
|
|
112
|
+
LogError('PayloadFeedbackManager: Failed to get valid response from feedback prompt', undefined, result.errorMessage);
|
|
113
|
+
// Fallback to accepting all changes
|
|
85
114
|
return questions.map(q => ({
|
|
86
115
|
questionId: q.id,
|
|
87
116
|
intended: true,
|
|
88
117
|
explanation: 'Accepted by default (prompt execution failed)'
|
|
89
118
|
}));
|
|
90
119
|
}
|
|
120
|
+
// Map LLM responses back to our format
|
|
91
121
|
return this.mapLLMResponsesToFeedback(questions, result.result.responses);
|
|
92
122
|
}
|
|
93
123
|
catch (error) {
|
|
94
|
-
|
|
124
|
+
LogError('PayloadFeedbackManager: Error querying agent for feedback', undefined, error);
|
|
125
|
+
// Fallback to accepting all changes
|
|
95
126
|
return questions.map(q => ({
|
|
96
127
|
questionId: q.id,
|
|
97
128
|
intended: true,
|
|
@@ -99,6 +130,9 @@ class PayloadFeedbackManager {
|
|
|
99
130
|
}));
|
|
100
131
|
}
|
|
101
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Map LLM responses back to PayloadFeedbackResponse format
|
|
135
|
+
*/
|
|
102
136
|
mapLLMResponsesToFeedback(questions, llmResponses) {
|
|
103
137
|
return questions.map((q, index) => {
|
|
104
138
|
const questionNumber = index + 1;
|
|
@@ -110,6 +144,7 @@ class PayloadFeedbackManager {
|
|
|
110
144
|
explanation: llmResponse.explanation
|
|
111
145
|
};
|
|
112
146
|
}
|
|
147
|
+
// Default to intended if no matching response found
|
|
113
148
|
return {
|
|
114
149
|
questionId: q.id,
|
|
115
150
|
intended: true,
|
|
@@ -117,6 +152,11 @@ class PayloadFeedbackManager {
|
|
|
117
152
|
};
|
|
118
153
|
});
|
|
119
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Build template parameters for the feedback prompt
|
|
157
|
+
*
|
|
158
|
+
* @todo This should prepare the data structure to pass to the stored prompt template
|
|
159
|
+
*/
|
|
120
160
|
buildFeedbackTemplateParams(questions) {
|
|
121
161
|
return {
|
|
122
162
|
questions: questions.map((q, i) => ({
|
|
@@ -130,6 +170,9 @@ class PayloadFeedbackManager {
|
|
|
130
170
|
timestamp: new Date().toISOString()
|
|
131
171
|
};
|
|
132
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Process feedback responses and determine final result
|
|
175
|
+
*/
|
|
133
176
|
processFeedback(questions, responses) {
|
|
134
177
|
const acceptedChanges = [];
|
|
135
178
|
const rejectedChanges = [];
|
|
@@ -152,23 +195,25 @@ class PayloadFeedbackManager {
|
|
|
152
195
|
requiresRevision: rejectedChanges.length > 0
|
|
153
196
|
};
|
|
154
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Log feedback results
|
|
200
|
+
*/
|
|
155
201
|
logFeedbackResults(result) {
|
|
156
202
|
if (result.responses.length === 0) {
|
|
157
203
|
return;
|
|
158
204
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
205
|
+
LogStatus(`\n📋 Payload Change Feedback Results:`);
|
|
206
|
+
LogStatus(` ✅ Accepted changes: ${result.acceptedChanges.length}`);
|
|
207
|
+
LogStatus(` ❌ Rejected changes: ${result.rejectedChanges.length}`);
|
|
162
208
|
if (result.rejectedChanges.length > 0) {
|
|
163
|
-
|
|
209
|
+
LogStatus(`\n Rejected change paths:`);
|
|
164
210
|
for (const path of result.rejectedChanges) {
|
|
165
|
-
|
|
211
|
+
LogStatus(` - ${path}`);
|
|
166
212
|
}
|
|
167
213
|
}
|
|
168
214
|
if (result.requiresRevision) {
|
|
169
|
-
|
|
215
|
+
LogStatus(`\n ⚠️ Agent needs to revise the payload`);
|
|
170
216
|
}
|
|
171
217
|
}
|
|
172
218
|
}
|
|
173
|
-
exports.PayloadFeedbackManager = PayloadFeedbackManager;
|
|
174
219
|
//# sourceMappingURL=PayloadFeedbackManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadFeedbackManager.js","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PayloadFeedbackManager.js","sourceRoot":"","sources":["../src/PayloadFeedbackManager.ts"],"names":[],"mappings":"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"}
|
package/dist/PayloadManager.d.ts
CHANGED
|
@@ -1,15 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Payload management for hierarchical agent execution.
|
|
3
|
+
*
|
|
4
|
+
* This module provides functionality to control which parts of a payload
|
|
5
|
+
* are accessible to sub-agents (downstream) and which parts they can
|
|
6
|
+
* modify (upstream). It supports JSON path-based access control with
|
|
7
|
+
* wildcards and nested path support.
|
|
8
|
+
*
|
|
9
|
+
* ## Key Features:
|
|
10
|
+
* - Path-based access control for sub-agent data isolation
|
|
11
|
+
* - Operation-level permissions (add, update, delete) per path
|
|
12
|
+
* - Automatic detection of suspicious payload changes
|
|
13
|
+
* - Human-readable diff generation for audit trails
|
|
14
|
+
* - Configurable warning thresholds for content changes
|
|
15
|
+
*
|
|
16
|
+
* ## Path Syntax:
|
|
17
|
+
* - Exact paths: "customer.name"
|
|
18
|
+
* - Wildcards: "customer.*" (all properties under customer)
|
|
19
|
+
* - Array indices: "items[0].price" or "items[*].price"
|
|
20
|
+
* - Deep wildcards: "**.id" (all id fields at any depth)
|
|
21
|
+
* - Root wildcard: "*" (entire payload)
|
|
22
|
+
* - Operation control: "path:add,update" (specific operations only)
|
|
23
|
+
*
|
|
24
|
+
* ## Change Detection Rules:
|
|
25
|
+
* - Content truncation: Warns when text reduced by >70%
|
|
26
|
+
* - Key removal: Flags when non-empty keys are removed
|
|
27
|
+
* - Type changes: Detects object→primitive conversions
|
|
28
|
+
* - Pattern anomalies: Identifies placeholder replacements
|
|
29
|
+
*
|
|
30
|
+
* @module @memberjunction/ai-agents
|
|
31
|
+
* @author MemberJunction.com
|
|
32
|
+
* @since 3.0.0
|
|
33
|
+
*/
|
|
1
34
|
import { AgentPayloadChangeRequest } from '@memberjunction/ai-core-plus';
|
|
2
35
|
import { DeepDiffResult } from '@memberjunction/global';
|
|
3
|
-
import { PayloadAnalysisResult } from './PayloadChangeAnalyzer';
|
|
36
|
+
import { PayloadAnalysisResult } from './PayloadChangeAnalyzer.js';
|
|
37
|
+
/**
|
|
38
|
+
* Result of applying a payload change request with enhanced tracking
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Summary of payload change operations for audit trail storage
|
|
42
|
+
*/
|
|
4
43
|
export interface PayloadChangeResultSummary {
|
|
44
|
+
/** Operation counts */
|
|
5
45
|
applied: {
|
|
6
46
|
additions: number;
|
|
7
47
|
updates: number;
|
|
8
48
|
deletions: number;
|
|
9
49
|
};
|
|
50
|
+
/** Warning messages */
|
|
10
51
|
warnings: string[];
|
|
52
|
+
/** Whether feedback is required */
|
|
11
53
|
requiresFeedback: boolean;
|
|
54
|
+
/** Timestamp of the operation */
|
|
12
55
|
timestamp: Date | string;
|
|
56
|
+
/** Payload validation tracking */
|
|
13
57
|
payloadValidation?: {
|
|
14
58
|
selfWriteViolations?: {
|
|
15
59
|
deniedOperations: Array<{
|
|
@@ -36,6 +80,7 @@ export interface PayloadChangeResultSummary {
|
|
|
36
80
|
timestamp: string;
|
|
37
81
|
};
|
|
38
82
|
};
|
|
83
|
+
/** Analysis summary */
|
|
39
84
|
analysis?: {
|
|
40
85
|
totalWarnings: number;
|
|
41
86
|
warningsByType: Record<string, number>;
|
|
@@ -47,6 +92,7 @@ export interface PayloadChangeResultSummary {
|
|
|
47
92
|
message: string;
|
|
48
93
|
}>;
|
|
49
94
|
};
|
|
95
|
+
/** Diff summary */
|
|
50
96
|
diffSummary?: {
|
|
51
97
|
added: number;
|
|
52
98
|
removed: number;
|
|
@@ -55,17 +101,25 @@ export interface PayloadChangeResultSummary {
|
|
|
55
101
|
};
|
|
56
102
|
}
|
|
57
103
|
export interface PayloadManagerResult<P = any> {
|
|
104
|
+
/** The resulting payload after changes */
|
|
58
105
|
result: P;
|
|
106
|
+
/** Counts of applied operations */
|
|
59
107
|
applied: {
|
|
60
108
|
additions: number;
|
|
61
109
|
updates: number;
|
|
62
110
|
deletions: number;
|
|
63
111
|
};
|
|
112
|
+
/** Basic warnings from the change process */
|
|
64
113
|
warnings: string[];
|
|
114
|
+
/** Detailed analysis of suspicious changes */
|
|
65
115
|
analysis?: PayloadAnalysisResult;
|
|
116
|
+
/** Diff between original and result payload */
|
|
66
117
|
diff?: DeepDiffResult;
|
|
118
|
+
/** Whether feedback is required from the agent */
|
|
67
119
|
requiresFeedback?: boolean;
|
|
120
|
+
/** Timestamp of the operation */
|
|
68
121
|
timestamp: Date;
|
|
122
|
+
/** Blocked operations with detailed tracking */
|
|
69
123
|
blockedOperations?: Array<{
|
|
70
124
|
path: string;
|
|
71
125
|
operation: 'add' | 'update' | 'delete';
|
|
@@ -75,23 +129,167 @@ export interface PayloadManagerResult<P = any> {
|
|
|
75
129
|
timestamp: string;
|
|
76
130
|
}>;
|
|
77
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Manages payload access control for agent hierarchies.
|
|
134
|
+
*
|
|
135
|
+
* This class handles extracting specific paths from payloads when sending
|
|
136
|
+
* data downstream to sub-agents, and merging results back upstream while
|
|
137
|
+
* respecting write permissions.
|
|
138
|
+
*
|
|
139
|
+
* Path syntax supports:
|
|
140
|
+
* - Exact paths: "customer.name"
|
|
141
|
+
* - Wildcards: "customer.*" (all properties under customer)
|
|
142
|
+
* - Array indices: "items[0].price" or "items[*].price"
|
|
143
|
+
* - Deep wildcards: "**.id" (all id fields at any depth)
|
|
144
|
+
* - Root wildcard: "*" (entire payload)
|
|
145
|
+
*/
|
|
78
146
|
export declare class PayloadManager {
|
|
147
|
+
/**
|
|
148
|
+
* Extracts only the allowed paths from a payload for downstream transmission.
|
|
149
|
+
*
|
|
150
|
+
* @param fullPayload The complete payload object
|
|
151
|
+
* @param downstreamPaths Array of path patterns defining what to extract
|
|
152
|
+
* @returns A new object containing only the allowed paths
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const payload = { customer: { id: 1, name: 'John', secret: 'xxx' }, order: { id: 2 } };
|
|
157
|
+
* const paths = ['customer.id', 'customer.name', 'order.*'];
|
|
158
|
+
* const result = extractDownstreamPayload(payload, paths);
|
|
159
|
+
* // Returns: { customer: { id: 1, name: 'John' }, order: { id: 2 } }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
79
162
|
extractDownstreamPayload<P = any>(subAgentName: string, fullPayload: P | null | undefined, downstreamPaths: string[]): Partial<P> | null;
|
|
163
|
+
/**
|
|
164
|
+
* Merges sub-agent results back into the parent payload, respecting write permissions.
|
|
165
|
+
*
|
|
166
|
+
* @param parentPayload The original parent payload
|
|
167
|
+
* @param subAgentPayload The payload returned by the sub-agent
|
|
168
|
+
* @param upstreamPaths Array of path patterns the sub-agent is allowed to write
|
|
169
|
+
* @returns A new merged payload object
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* const parent = { customer: { id: 1 }, analysis: { sentiment: null } };
|
|
174
|
+
* const subResult = { customer: { id: 2 }, analysis: { sentiment: 'positive', score: 0.9 } };
|
|
175
|
+
* const writePaths = ['analysis.*'];
|
|
176
|
+
* const merged = mergeUpstreamPayload(parent, subResult, writePaths);
|
|
177
|
+
* // Returns: { customer: { id: 1 }, analysis: { sentiment: 'positive', score: 0.9 } }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
80
180
|
mergeUpstreamPayload<P = any>(subAgentName: string, parentPayload: P | null | undefined, subAgentPayload: Partial<P> | null | undefined, upstreamPaths: string[], verbose?: boolean): PayloadManagerResult<P>;
|
|
181
|
+
/**
|
|
182
|
+
* Extracts a path pattern from source object into destination.
|
|
183
|
+
*
|
|
184
|
+
* @private
|
|
185
|
+
*/
|
|
81
186
|
private extractPathPattern;
|
|
187
|
+
/**
|
|
188
|
+
* Recursively extracts paths based on parsed path parts.
|
|
189
|
+
*
|
|
190
|
+
* @private
|
|
191
|
+
*/
|
|
82
192
|
private extractPath;
|
|
193
|
+
/**
|
|
194
|
+
* Handles array path extraction (e.g., items[0] or items[*]).
|
|
195
|
+
*
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
83
198
|
private extractArrayPath;
|
|
199
|
+
/**
|
|
200
|
+
* Handles deep wildcard extraction (e.g., **.id).
|
|
201
|
+
*
|
|
202
|
+
* @private
|
|
203
|
+
*/
|
|
84
204
|
private extractDeepWildcard;
|
|
205
|
+
/**
|
|
206
|
+
* Merges allowed paths from sub-agent payload into result.
|
|
207
|
+
*
|
|
208
|
+
* @private
|
|
209
|
+
*/
|
|
85
210
|
private mergeAllowedPaths;
|
|
211
|
+
/**
|
|
212
|
+
* Count changes between two payloads for tracking operations
|
|
213
|
+
*
|
|
214
|
+
* @private
|
|
215
|
+
*/
|
|
86
216
|
private countChanges;
|
|
217
|
+
/**
|
|
218
|
+
* Groups unauthorized changes by their root path for cleaner display.
|
|
219
|
+
*
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
87
222
|
private groupUnauthorizedChanges;
|
|
223
|
+
/**
|
|
224
|
+
* Formats a value for display in warning messages.
|
|
225
|
+
*
|
|
226
|
+
* @private
|
|
227
|
+
*/
|
|
88
228
|
private formatValue;
|
|
229
|
+
/**
|
|
230
|
+
* Gets all leaf paths from an object.
|
|
231
|
+
*
|
|
232
|
+
* @private
|
|
233
|
+
*/
|
|
89
234
|
private getAllPaths;
|
|
235
|
+
/**
|
|
236
|
+
* Recursively cleans up empty objects from arrays after merge operations.
|
|
237
|
+
* This is necessary because property-level deletions can leave empty object shells in arrays.
|
|
238
|
+
*
|
|
239
|
+
* @private
|
|
240
|
+
*/
|
|
90
241
|
private cleanupEmptyArrayElements;
|
|
242
|
+
/**
|
|
243
|
+
* Checks if a path matches any of the allowed patterns.
|
|
244
|
+
*
|
|
245
|
+
* @private
|
|
246
|
+
*/
|
|
91
247
|
private isPathAllowed;
|
|
248
|
+
/**
|
|
249
|
+
* Checks if a specific operation is allowed for a path.
|
|
250
|
+
*
|
|
251
|
+
* @param actualPath The actual path to check
|
|
252
|
+
* @param operation The operation to check
|
|
253
|
+
* @param allowedPatterns Array of allowed patterns with optional operations
|
|
254
|
+
* @returns True if the operation is allowed on this path
|
|
255
|
+
*/
|
|
92
256
|
private isOperationAllowedForPath;
|
|
257
|
+
/**
|
|
258
|
+
* Parses a path string into parts, handling array notation.
|
|
259
|
+
*
|
|
260
|
+
* @private
|
|
261
|
+
*/
|
|
93
262
|
private parsePathParts;
|
|
263
|
+
/**
|
|
264
|
+
* Deep merges two objects, with source overriding destination.
|
|
265
|
+
*
|
|
266
|
+
* This method preserves existing nested properties in the destination while
|
|
267
|
+
* adding or updating properties from the source. It handles nested objects
|
|
268
|
+
* recursively, ensuring that partial updates don't wipe out existing data.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* const dest = { decision: { Y: 4, Z: 2 } };
|
|
273
|
+
* const src = { decision: { x: "string" } };
|
|
274
|
+
* const result = deepMerge(dest, src);
|
|
275
|
+
* // Returns: { decision: { x: "string", Y: 4, Z: 2 } }
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* @param destination The target object to merge into
|
|
279
|
+
* @param source The source object to merge from
|
|
280
|
+
* @returns A new merged object with all properties from both objects
|
|
281
|
+
*
|
|
282
|
+
* @public
|
|
283
|
+
*/
|
|
94
284
|
deepMerge<T = any>(destination: T | null | undefined, source: Partial<T> | null | undefined): T;
|
|
285
|
+
/**
|
|
286
|
+
* Applies an AgentPayloadChangeRequest to a payload
|
|
287
|
+
*
|
|
288
|
+
* @param originalPayload The original payload to apply changes to
|
|
289
|
+
* @param changeRequest The change request from the AI agent
|
|
290
|
+
* @param options Configuration options for the operation
|
|
291
|
+
* @returns Result object with the modified payload, operation counts, and any warnings
|
|
292
|
+
*/
|
|
95
293
|
applyAgentChangeRequest<P = any>(originalPayload: P, changeRequest: AgentPayloadChangeRequest<any>, options?: {
|
|
96
294
|
validateChanges?: boolean;
|
|
97
295
|
logChanges?: boolean;
|
|
@@ -101,20 +299,107 @@ export declare class PayloadManager {
|
|
|
101
299
|
allowedPaths?: string[];
|
|
102
300
|
verbose?: boolean;
|
|
103
301
|
}): PayloadManagerResult<P>;
|
|
302
|
+
/**
|
|
303
|
+
* Process a change request recursively through the payload structure
|
|
304
|
+
*/
|
|
104
305
|
private processChangeRequest;
|
|
306
|
+
/**
|
|
307
|
+
* Process changes for array elements with support for deep merging object elements.
|
|
308
|
+
*
|
|
309
|
+
* For arrays containing objects, updates are merged deeply rather than replacing
|
|
310
|
+
* the entire element. This preserves existing properties while updating only the
|
|
311
|
+
* specified fields.
|
|
312
|
+
*
|
|
313
|
+
* Example:
|
|
314
|
+
* Original: [{id: 1, name: "Test", value: 100}]
|
|
315
|
+
* Update: [{value: 200}]
|
|
316
|
+
* Result: [{id: 1, name: "Test", value: 200}]
|
|
317
|
+
*
|
|
318
|
+
* Arrays of primitives still use replacement behavior for backwards compatibility.
|
|
319
|
+
*/
|
|
105
320
|
private processArrayChanges;
|
|
321
|
+
/**
|
|
322
|
+
* Process changes for object properties
|
|
323
|
+
*/
|
|
106
324
|
private processObjectChanges;
|
|
325
|
+
/**
|
|
326
|
+
* Process a single key change (add, update, or delete)
|
|
327
|
+
*/
|
|
107
328
|
private processKeyChange;
|
|
329
|
+
/**
|
|
330
|
+
* Get all unique keys from change request for a given path
|
|
331
|
+
*/
|
|
108
332
|
private getChangeKeys;
|
|
333
|
+
/**
|
|
334
|
+
* Check if a value is significant (not empty object or undefined)
|
|
335
|
+
*/
|
|
109
336
|
private isSignificantValue;
|
|
337
|
+
/**
|
|
338
|
+
* Log a summary of changes applied
|
|
339
|
+
*/
|
|
110
340
|
private logChangesSummary;
|
|
341
|
+
/**
|
|
342
|
+
* Apply a change request to a sub-agent payload with upstream guardrails
|
|
343
|
+
*
|
|
344
|
+
* This method first applies the change request, then enforces upstream path restrictions
|
|
345
|
+
* to ensure the sub-agent only modifies allowed paths.
|
|
346
|
+
*/
|
|
111
347
|
applySubAgentChangeRequest<P = any>(parentPayload: P, changeRequest: AgentPayloadChangeRequest<P>, upstreamPaths: string[], subAgentName: string): PayloadManagerResult<P> & {
|
|
112
348
|
blocked: number;
|
|
113
349
|
};
|
|
350
|
+
/**
|
|
351
|
+
* Count how many changes were blocked by guardrails
|
|
352
|
+
*/
|
|
114
353
|
private countBlockedChanges;
|
|
354
|
+
/**
|
|
355
|
+
* Applies a payload scope transformation to extract only the scoped portion.
|
|
356
|
+
*
|
|
357
|
+
* @param payload The full payload to scope
|
|
358
|
+
* @param scopePath The scope path (e.g., "/functionalRequirements" or "/PropA/SubProp1")
|
|
359
|
+
* @returns The scoped portion of the payload
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```typescript
|
|
363
|
+
* const payload = { functionalRequirements: { feature1: "..." }, technicalDesign: { ... } };
|
|
364
|
+
* const scoped = applyPayloadScope(payload, "/functionalRequirements");
|
|
365
|
+
* // Returns: { feature1: "..." }
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
115
368
|
applyPayloadScope<P = any>(payload: P, scopePath: string): any | null;
|
|
369
|
+
/**
|
|
370
|
+
* Reverses a payload scope transformation by wrapping the scoped content back into the full structure.
|
|
371
|
+
*
|
|
372
|
+
* @param scopedPayload The scoped payload to wrap
|
|
373
|
+
* @param scopePath The scope path used for extraction
|
|
374
|
+
* @returns A full payload structure with the scoped content at the correct path
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* ```typescript
|
|
378
|
+
* const scoped = { feature1: "updated" };
|
|
379
|
+
* const full = reversePayloadScope(scoped, "/functionalRequirements");
|
|
380
|
+
* // Returns: { functionalRequirements: { feature1: "updated" } }
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
116
383
|
reversePayloadScope<P = any>(scopedPayload: unknown, scopePath: string): P;
|
|
384
|
+
/**
|
|
385
|
+
* Transforms paths in a change request to account for payload scoping.
|
|
386
|
+
* Prepends the scope path to all paths in the change request.
|
|
387
|
+
*
|
|
388
|
+
* @param changeRequest The change request with paths relative to the scoped view
|
|
389
|
+
* @param scopePath The scope path to prepend
|
|
390
|
+
* @returns A new change request with transformed paths
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```typescript
|
|
394
|
+
* const request = { updateElements: { "field1": "value" } };
|
|
395
|
+
* const transformed = transformChangeRequestPaths(request, "/functionalRequirements");
|
|
396
|
+
* // Returns: { updateElements: { "functionalRequirements.field1": "value" } }
|
|
397
|
+
* ```
|
|
398
|
+
*/
|
|
117
399
|
transformChangeRequestPaths<P = any>(changeRequest: AgentPayloadChangeRequest<P>, scopePath: string): AgentPayloadChangeRequest<P>;
|
|
400
|
+
/**
|
|
401
|
+
* Helper to determine if a value is a leaf value (not a path structure)
|
|
402
|
+
*/
|
|
118
403
|
private isLeafValue;
|
|
119
404
|
}
|
|
120
405
|
//# sourceMappingURL=PayloadManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadManager.d.ts","sourceRoot":"","sources":["../src/PayloadManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PayloadManager.d.ts","sourceRoot":"","sources":["../src/PayloadManager.ts"],"names":[],"mappings":"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"}
|