@memberjunction/ai-agents 4.2.0 → 4.3.1

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 (30) hide show
  1. package/README.md +4 -0
  2. package/dist/agent-context-injector.d.ts +63 -23
  3. package/dist/agent-context-injector.d.ts.map +1 -1
  4. package/dist/agent-context-injector.js +205 -55
  5. package/dist/agent-context-injector.js.map +1 -1
  6. package/dist/base-agent.d.ts +36 -2
  7. package/dist/base-agent.d.ts.map +1 -1
  8. package/dist/base-agent.js +189 -13
  9. package/dist/base-agent.js.map +1 -1
  10. package/dist/memory-manager-agent.d.ts +47 -0
  11. package/dist/memory-manager-agent.d.ts.map +1 -1
  12. package/dist/memory-manager-agent.js +389 -51
  13. package/dist/memory-manager-agent.js.map +1 -1
  14. package/package.json +16 -18
  15. package/dist/__tests__/action-changes.test.d.ts +0 -15
  16. package/dist/__tests__/action-changes.test.d.ts.map +0 -1
  17. package/dist/__tests__/action-changes.test.js +0 -394
  18. package/dist/__tests__/action-changes.test.js.map +0 -1
  19. package/dist/__tests__/agent-memory-features.test.d.ts +0 -123
  20. package/dist/__tests__/agent-memory-features.test.d.ts.map +0 -1
  21. package/dist/__tests__/agent-memory-features.test.js +0 -596
  22. package/dist/__tests__/agent-memory-features.test.js.map +0 -1
  23. package/dist/__tests__/agent-type-prompt-params.test.d.ts +0 -14
  24. package/dist/__tests__/agent-type-prompt-params.test.d.ts.map +0 -1
  25. package/dist/__tests__/agent-type-prompt-params.test.js +0 -583
  26. package/dist/__tests__/agent-type-prompt-params.test.js.map +0 -1
  27. package/dist/__tests__/chat-handling-option.test.d.ts +0 -54
  28. package/dist/__tests__/chat-handling-option.test.d.ts.map +0 -1
  29. package/dist/__tests__/chat-handling-option.test.js +0 -222
  30. package/dist/__tests__/chat-handling-option.test.js.map +0 -1
@@ -1,54 +0,0 @@
1
- /**
2
- * Unit tests for ChatHandlingOption functionality in sub-agent execution.
3
- *
4
- * These tests verify that when a sub-agent returns FinalStep='Chat',
5
- * the parent agent's ChatHandlingOption is respected and the Chat step
6
- * is remapped to Success/Failed/Retry as configured.
7
- *
8
- * To run these tests:
9
- * npx ts-node src/__tests__/chat-handling-option.test.ts
10
- *
11
- * @since 3.1.1
12
- */
13
- declare let testCount: number;
14
- declare let passCount: number;
15
- declare let failCount: number;
16
- declare function assert(condition: boolean, message: string): void;
17
- declare function assertDeepEqual(actual: any, expected: any, message: string): void;
18
- declare function testGroup(description: string, testFn: () => void): void;
19
- declare function printSummary(): void;
20
- /**
21
- * Mock agent entity for testing
22
- */
23
- interface MockAgent {
24
- ID: string;
25
- Name: string;
26
- ChatHandlingOption: 'Success' | 'Failed' | 'Retry' | null;
27
- }
28
- /**
29
- * Mock next step structure
30
- */
31
- interface MockNextStep {
32
- step: 'Success' | 'Failed' | 'Chat' | 'Retry';
33
- terminate?: boolean;
34
- message?: string | null;
35
- previousPayload?: any;
36
- newPayload?: any;
37
- responseForm?: any;
38
- actionableCommands?: any[];
39
- automaticCommands?: any[];
40
- }
41
- /**
42
- * Mock params structure
43
- */
44
- interface MockParams {
45
- agent: MockAgent;
46
- verbose?: boolean;
47
- }
48
- /**
49
- * Validates that the Chat next step is valid and can be executed by the current agent.
50
- * Implements ChatHandlingOption remapping logic - if the agent has ChatHandlingOption set,
51
- * the Chat step is remapped to the specified value (Success, Failed, or Retry).
52
- */
53
- declare function validateChatNextStep(params: MockParams, nextStep: MockNextStep): MockNextStep;
54
- //# sourceMappingURL=chat-handling-option.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-handling-option.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/chat-handling-option.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,QAAA,IAAI,SAAS,QAAI,CAAC;AAClB,QAAA,IAAI,SAAS,QAAI,CAAC;AAClB,QAAA,IAAI,SAAS,QAAI,CAAC;AAElB,iBAAS,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASzD;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI1E;AAED,iBAAS,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI,CAGhE;AAED,iBAAS,YAAY,IAAI,IAAI,CAW5B;AAMD;;GAEG;AACH,UAAU,SAAS;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAC7D;AAED;;GAEG;AACH,UAAU,YAAY;IAClB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,UAAU,UAAU;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD;;;;GAIG;AACH,iBAAS,oBAAoB,CACzB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,GACvB,YAAY,CAuCd"}
@@ -1,222 +0,0 @@
1
- /**
2
- * Unit tests for ChatHandlingOption functionality in sub-agent execution.
3
- *
4
- * These tests verify that when a sub-agent returns FinalStep='Chat',
5
- * the parent agent's ChatHandlingOption is respected and the Chat step
6
- * is remapped to Success/Failed/Retry as configured.
7
- *
8
- * To run these tests:
9
- * npx ts-node src/__tests__/chat-handling-option.test.ts
10
- *
11
- * @since 3.1.1
12
- */
13
- // ============================================================================
14
- // Test Helpers - Simple assertion and test runner
15
- // ============================================================================
16
- let testCount = 0;
17
- let passCount = 0;
18
- let failCount = 0;
19
- function assert(condition, message) {
20
- testCount++;
21
- if (condition) {
22
- passCount++;
23
- console.log(` ✓ ${message}`);
24
- }
25
- else {
26
- failCount++;
27
- console.log(` ✗ FAILED: ${message}`);
28
- }
29
- }
30
- function assertDeepEqual(actual, expected, message) {
31
- const actualStr = JSON.stringify(actual, null, 2);
32
- const expectedStr = JSON.stringify(expected, null, 2);
33
- assert(actualStr === expectedStr, message);
34
- }
35
- function testGroup(description, testFn) {
36
- console.log(`\n${description}:`);
37
- testFn();
38
- }
39
- function printSummary() {
40
- console.log('\n' + '='.repeat(70));
41
- console.log('Test Summary');
42
- console.log('='.repeat(70));
43
- console.log(`Total: ${testCount} | Passed: ${passCount} | Failed: ${failCount}`);
44
- if (failCount === 0) {
45
- console.log('\n✅ All tests passed!\n');
46
- }
47
- else {
48
- console.log(`\n❌ ${failCount} test(s) failed\n`);
49
- process.exit(1);
50
- }
51
- }
52
- // ============================================================================
53
- // Standalone Implementation of validateChatNextStep for Testing
54
- // This mirrors the BaseAgent.validateChatNextStep() implementation
55
- // ============================================================================
56
- /**
57
- * Validates that the Chat next step is valid and can be executed by the current agent.
58
- * Implements ChatHandlingOption remapping logic - if the agent has ChatHandlingOption set,
59
- * the Chat step is remapped to the specified value (Success, Failed, or Retry).
60
- */
61
- function validateChatNextStep(params, nextStep) {
62
- // Check if the agent has ChatHandlingOption configured
63
- const chatHandlingOption = params.agent.ChatHandlingOption;
64
- if (chatHandlingOption) {
65
- // Use a switch to validate and map the ChatHandlingOption value
66
- let mappedStep;
67
- switch (chatHandlingOption) {
68
- case 'Success':
69
- mappedStep = 'Success';
70
- break;
71
- case 'Failed':
72
- mappedStep = 'Failed';
73
- break;
74
- case 'Retry':
75
- mappedStep = 'Retry';
76
- break;
77
- default:
78
- // Invalid option - treat as null and allow Chat to propagate
79
- console.error(`Invalid ChatHandlingOption value: ${chatHandlingOption}`);
80
- return nextStep;
81
- }
82
- // Remap the Chat step to the configured option
83
- const remappedStep = {
84
- ...nextStep,
85
- step: mappedStep
86
- };
87
- if (params.verbose) {
88
- console.log(` [DEBUG] Remapping Chat step to ${chatHandlingOption}`);
89
- }
90
- return remappedStep;
91
- }
92
- // Default behavior: let Chat propagate up (no remapping)
93
- return nextStep;
94
- }
95
- // ============================================================================
96
- // Tests for ChatHandlingOption with Sub-Agent Execution
97
- // ============================================================================
98
- testGroup('ChatHandlingOption = null (default behavior)', () => {
99
- const parentAgent = {
100
- ID: 'parent-1',
101
- Name: 'Parent Agent',
102
- ChatHandlingOption: null
103
- };
104
- const params = { agent: parentAgent };
105
- const chatStep = {
106
- step: 'Chat',
107
- terminate: true,
108
- message: 'Need user input',
109
- newPayload: { someData: 'test' }
110
- };
111
- const result = validateChatNextStep(params, chatStep);
112
- assert(result.step === 'Chat', 'Chat step is not remapped when ChatHandlingOption is null');
113
- assert(result.message === 'Need user input', 'Message is preserved');
114
- assert(result.terminate === true, 'Terminate flag is preserved');
115
- });
116
- testGroup('ChatHandlingOption = "Success" (remap Chat to Success)', () => {
117
- const parentAgent = {
118
- ID: 'parent-2',
119
- Name: 'Parent Agent with Success Override',
120
- ChatHandlingOption: 'Success'
121
- };
122
- const params = { agent: parentAgent };
123
- const chatStep = {
124
- step: 'Chat',
125
- terminate: true,
126
- message: 'Need user input',
127
- newPayload: { someData: 'test' },
128
- responseForm: { type: 'form' },
129
- actionableCommands: [{ command: 'approve' }]
130
- };
131
- const result = validateChatNextStep(params, chatStep);
132
- assert(result.step === 'Success', 'Chat step is remapped to Success');
133
- assert(result.message === 'Need user input', 'Message is preserved');
134
- assert(result.terminate === true, 'Terminate flag is preserved');
135
- assertDeepEqual(result.newPayload, { someData: 'test' }, 'Payload is preserved');
136
- assertDeepEqual(result.responseForm, { type: 'form' }, 'Response form is preserved');
137
- });
138
- testGroup('ChatHandlingOption = "Failed" (remap Chat to Failed)', () => {
139
- const parentAgent = {
140
- ID: 'parent-3',
141
- Name: 'Parent Agent with Failed Override',
142
- ChatHandlingOption: 'Failed'
143
- };
144
- const params = { agent: parentAgent };
145
- const chatStep = {
146
- step: 'Chat',
147
- terminate: true,
148
- message: 'Cannot proceed without user input',
149
- newPayload: { someData: 'test' }
150
- };
151
- const result = validateChatNextStep(params, chatStep);
152
- assert(result.step === 'Failed', 'Chat step is remapped to Failed');
153
- assert(result.message === 'Cannot proceed without user input', 'Message is preserved');
154
- });
155
- testGroup('ChatHandlingOption = "Retry" (remap Chat to Retry)', () => {
156
- const parentAgent = {
157
- ID: 'parent-4',
158
- Name: 'Parent Agent with Retry Override',
159
- ChatHandlingOption: 'Retry'
160
- };
161
- const params = { agent: parentAgent };
162
- const chatStep = {
163
- step: 'Chat',
164
- terminate: true,
165
- message: 'Need clarification',
166
- newPayload: { someData: 'test' }
167
- };
168
- const result = validateChatNextStep(params, chatStep);
169
- assert(result.step === 'Retry', 'Chat step is remapped to Retry');
170
- assert(result.message === 'Need clarification', 'Message is preserved');
171
- });
172
- testGroup('Sub-Agent Chat Bubbling (Real-World Scenario)', () => {
173
- // Scenario: Child agent returns Chat, parent has ChatHandlingOption = "Success"
174
- // Expected: Parent should remap Chat to Success and continue execution
175
- const childAgent = {
176
- ID: 'child-1',
177
- Name: 'Software Architect',
178
- ChatHandlingOption: null // Child allows Chat to propagate
179
- };
180
- const parentAgent = {
181
- ID: 'parent-5',
182
- Name: 'Technical Product Manager',
183
- ChatHandlingOption: 'Success' // Parent remaps Chat to Success
184
- };
185
- // Step 1: Child agent returns Chat (simulated)
186
- const childFinalStep = {
187
- step: 'Chat',
188
- terminate: true,
189
- message: 'Need design approval',
190
- newPayload: { technicalDesign: 'Component architecture' }
191
- };
192
- // Step 2: Parent receives child's Chat and validates through its ChatHandlingOption
193
- const parentParams = { agent: parentAgent };
194
- const parentResult = validateChatNextStep(parentParams, childFinalStep);
195
- assert(parentResult.step === 'Success', 'Parent remaps child Chat to Success');
196
- assert(parentResult.message === 'Need design approval', 'Message from child is preserved');
197
- assertDeepEqual(parentResult.newPayload, { technicalDesign: 'Component architecture' }, 'Payload from child is preserved');
198
- });
199
- testGroup('Verbose Logging', () => {
200
- const parentAgent = {
201
- ID: 'parent-6',
202
- Name: 'Verbose Agent',
203
- ChatHandlingOption: 'Success'
204
- };
205
- const params = {
206
- agent: parentAgent,
207
- verbose: true
208
- };
209
- const chatStep = {
210
- step: 'Chat',
211
- terminate: true,
212
- message: 'Test'
213
- };
214
- console.log(' Expected debug output:');
215
- const result = validateChatNextStep(params, chatStep);
216
- assert(result.step === 'Success', 'Chat remapped with verbose logging');
217
- });
218
- // ============================================================================
219
- // Run Tests and Print Summary
220
- // ============================================================================
221
- printSummary();
222
- //# sourceMappingURL=chat-handling-option.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-handling-option.test.js","sourceRoot":"","sources":["../../src/__tests__/chat-handling-option.test.ts"],"names":[],"mappings":"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"}