@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,596 +0,0 @@
1
- /**
2
- * Unit tests for Agent Memory Features (Phase 1-3 improvements).
3
- *
4
- * These tests verify:
5
- * - PayloadFeedbackManager functionality
6
- * - AgentContextInjector formatting with precedence instructions
7
- * - Multi-tenant scope determination
8
- *
9
- * To run these tests:
10
- * npx ts-node src/__tests__/agent-memory-features.test.ts
11
- *
12
- * @since 2.130.0
13
- */
14
- // ============================================================================
15
- // Test Helpers - Standalone implementations for testing
16
- // ============================================================================
17
- /**
18
- * Determine MJ scope description for a note (mirrors AgentContextInjector)
19
- */
20
- function determineNoteScope(note) {
21
- if (note.AgentID && note.UserID && note.CompanyID) {
22
- return 'Agent + User + Company specific';
23
- }
24
- if (note.AgentID && note.UserID) {
25
- return 'Agent + User specific';
26
- }
27
- if (note.AgentID && note.CompanyID) {
28
- return 'Agent + Company specific';
29
- }
30
- if (note.UserID && note.CompanyID) {
31
- return 'User + Company specific';
32
- }
33
- if (note.AgentID) {
34
- return 'Agent-specific';
35
- }
36
- if (note.UserID) {
37
- return 'User-specific';
38
- }
39
- if (note.CompanyID) {
40
- return 'Company-wide';
41
- }
42
- return 'Global';
43
- }
44
- /**
45
- * Determine SaaS scope description for a note (new multi-tenant feature)
46
- */
47
- function determineSaaSScope(note) {
48
- if (!note.PrimaryScopeRecordID) {
49
- return null; // No SaaS scope
50
- }
51
- const hasSecondary = note.SecondaryScopes && note.SecondaryScopes !== '{}';
52
- if (hasSecondary) {
53
- return 'Contact-specific (most specific)';
54
- }
55
- return 'Organization-level';
56
- }
57
- /**
58
- * Format notes for injection with optional memory policy (mirrors AgentContextInjector)
59
- */
60
- function formatNotesForInjection(notes, includeMemoryPolicy = true) {
61
- if (notes.length === 0)
62
- return '';
63
- const lines = [];
64
- if (includeMemoryPolicy) {
65
- lines.push('<memory_policy>');
66
- lines.push('Precedence (highest to lowest):');
67
- lines.push('1) Current user message overrides all stored memory');
68
- lines.push('2) Contact-specific notes override organization-level');
69
- lines.push('3) Organization notes override global defaults');
70
- lines.push('4) When same scope, prefer most recent by date');
71
- lines.push('');
72
- lines.push('Conflict resolution:');
73
- lines.push('- If two notes contradict, prefer the more specific scope');
74
- lines.push('- Ask clarifying question only if conflict materially affects response');
75
- lines.push('</memory_policy>');
76
- lines.push('');
77
- }
78
- lines.push(`šŸ“ AGENT NOTES (${notes.length})`);
79
- lines.push('');
80
- for (const note of notes) {
81
- lines.push(`[${note.Type}] ${note.Note}`);
82
- const scope = determineNoteScope(note);
83
- const saasScope = determineSaaSScope(note);
84
- if (saasScope) {
85
- lines.push(` Scope: ${saasScope}`);
86
- }
87
- else if (scope) {
88
- lines.push(` Scope: ${scope}`);
89
- }
90
- lines.push('');
91
- }
92
- lines.push('---');
93
- return lines.join('\n');
94
- }
95
- /**
96
- * Generate feedback questions from warnings (mirrors PayloadFeedbackManager)
97
- */
98
- function generateQuestions(warnings) {
99
- const questions = [];
100
- const feedbackWarnings = warnings.filter(w => w.requiresFeedback);
101
- for (let i = 0; i < feedbackWarnings.length; i++) {
102
- const warning = feedbackWarnings[i];
103
- let question = '';
104
- switch (warning.type) {
105
- case 'content_truncation':
106
- const truncDetails = warning.details;
107
- question = `Did you intend to reduce the content at "${warning.path}" from ${truncDetails.originalLength} to ${truncDetails.newLength} characters (${truncDetails.reductionPercentage.toFixed(1)}% reduction)?`;
108
- break;
109
- case 'key_removal':
110
- const removalDetails = warning.details;
111
- question = `Did you intend to remove the non-empty key(s) at "${warning.path}": ${removalDetails.removedKeys.join(', ')}?`;
112
- break;
113
- case 'type_change':
114
- const typeDetails = warning.details;
115
- question = `Did you intend to change the type at "${warning.path}" from ${typeDetails.originalType} to ${typeDetails.newType}?`;
116
- break;
117
- case 'pattern_anomaly':
118
- question = `Did you intend the following change at "${warning.path}": ${warning.message}?`;
119
- break;
120
- default:
121
- question = `Did you intend the change at "${warning.path}": ${warning.message}?`;
122
- }
123
- questions.push({
124
- id: `feedback_${i}_${Date.now()}`,
125
- question,
126
- warning,
127
- context: {
128
- path: warning.path,
129
- changeType: warning.type,
130
- details: warning.details
131
- }
132
- });
133
- }
134
- return questions;
135
- }
136
- /**
137
- * Map LLM responses to feedback format (mirrors PayloadFeedbackManager)
138
- */
139
- function mapLLMResponsesToFeedback(questions, llmResponses) {
140
- return questions.map((q, index) => {
141
- const questionNumber = index + 1;
142
- const llmResponse = llmResponses.find(r => r.questionNumber === questionNumber);
143
- if (llmResponse) {
144
- return {
145
- questionId: q.id,
146
- intended: llmResponse.intended,
147
- explanation: llmResponse.explanation
148
- };
149
- }
150
- return {
151
- questionId: q.id,
152
- intended: true,
153
- explanation: 'No explicit response from LLM - assuming intended'
154
- };
155
- });
156
- }
157
- // ============================================================================
158
- // Test Data
159
- // ============================================================================
160
- const mockNotes = [
161
- {
162
- ID: 'note-1',
163
- Type: 'Preference',
164
- Note: 'User prefers bullet points',
165
- AgentID: 'agent-1',
166
- UserID: 'user-1',
167
- CompanyID: null,
168
- PrimaryScopeRecordID: null,
169
- SecondaryScopes: null
170
- },
171
- {
172
- ID: 'note-2',
173
- Type: 'Context',
174
- Note: 'Company uses metric units',
175
- AgentID: null,
176
- UserID: null,
177
- CompanyID: 'company-1',
178
- PrimaryScopeRecordID: 'org-123',
179
- SecondaryScopes: null
180
- },
181
- {
182
- ID: 'note-3',
183
- Type: 'Constraint',
184
- Note: 'Never share PII',
185
- AgentID: null,
186
- UserID: null,
187
- CompanyID: null,
188
- PrimaryScopeRecordID: null,
189
- SecondaryScopes: null
190
- },
191
- {
192
- ID: 'note-4',
193
- Type: 'Preference',
194
- Note: 'John prefers formal tone',
195
- AgentID: 'agent-1',
196
- UserID: null,
197
- CompanyID: null,
198
- PrimaryScopeRecordID: 'org-123',
199
- SecondaryScopes: '{"ContactID": "contact-456"}'
200
- }
201
- ];
202
- const mockWarnings = [
203
- {
204
- type: 'content_truncation',
205
- path: 'response.body',
206
- message: 'Content was significantly reduced',
207
- severity: 'high',
208
- details: { originalLength: 1000, newLength: 100, reductionPercentage: 90 },
209
- requiresFeedback: true
210
- },
211
- {
212
- type: 'key_removal',
213
- path: 'data.metadata',
214
- message: 'Keys were removed',
215
- severity: 'medium',
216
- details: { removedKeys: ['timestamp', 'version'] },
217
- requiresFeedback: true
218
- },
219
- {
220
- type: 'type_change',
221
- path: 'config.enabled',
222
- message: 'Type changed',
223
- severity: 'low',
224
- details: { originalType: 'boolean', newType: 'string' },
225
- requiresFeedback: false // Should be filtered out
226
- }
227
- ];
228
- // ============================================================================
229
- // Tests
230
- // ============================================================================
231
- let testsPassed = 0;
232
- let testsFailed = 0;
233
- function runTest(name, fn) {
234
- try {
235
- fn();
236
- console.log(`āœ… ${name}`);
237
- testsPassed++;
238
- }
239
- catch (error) {
240
- console.error(`āŒ ${name}`);
241
- console.error(` Error: ${error instanceof Error ? error.message : error}`);
242
- testsFailed++;
243
- }
244
- }
245
- function assertEqual(actual, expected, message) {
246
- if (actual !== expected) {
247
- throw new Error(`${message || 'Assertion failed'}: expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`);
248
- }
249
- }
250
- function assertTrue(condition, message) {
251
- if (!condition) {
252
- throw new Error(message || 'Expected condition to be true');
253
- }
254
- }
255
- function assertContains(str, substring, message) {
256
- if (!str.includes(substring)) {
257
- throw new Error(`${message || 'String does not contain expected substring'}: "${substring}"`);
258
- }
259
- }
260
- console.log('\n=== Agent Memory Features Tests ===\n');
261
- // ============================================================================
262
- // Scope Determination Tests
263
- // ============================================================================
264
- console.log('--- Scope Determination Tests ---\n');
265
- runTest('determineNoteScope: Agent + User specific', () => {
266
- const note = mockNotes[0]; // has AgentID and UserID
267
- const scope = determineNoteScope(note);
268
- assertEqual(scope, 'Agent + User specific');
269
- });
270
- runTest('determineNoteScope: Company-wide', () => {
271
- const note = mockNotes[1]; // has only CompanyID
272
- const scope = determineNoteScope(note);
273
- assertEqual(scope, 'Company-wide');
274
- });
275
- runTest('determineNoteScope: Global (all null)', () => {
276
- const note = mockNotes[2]; // all nulls
277
- const scope = determineNoteScope(note);
278
- assertEqual(scope, 'Global');
279
- });
280
- runTest('determineSaaSScope: Organization-level (primary scope only)', () => {
281
- const note = mockNotes[1]; // has PrimaryScopeRecordID but no SecondaryScopes
282
- const scope = determineSaaSScope(note);
283
- assertEqual(scope, 'Organization-level');
284
- });
285
- runTest('determineSaaSScope: Contact-specific (has secondary scopes)', () => {
286
- const note = mockNotes[3]; // has both primary and secondary scopes
287
- const scope = determineSaaSScope(note);
288
- assertEqual(scope, 'Contact-specific (most specific)');
289
- });
290
- runTest('determineSaaSScope: null when no SaaS scope', () => {
291
- const note = mockNotes[0]; // no PrimaryScopeRecordID
292
- const scope = determineSaaSScope(note);
293
- assertEqual(scope, null);
294
- });
295
- // ============================================================================
296
- // Format Notes with Precedence Tests
297
- // ============================================================================
298
- console.log('\n--- Format Notes Tests ---\n');
299
- runTest('formatNotesForInjection: includes memory policy by default', () => {
300
- const result = formatNotesForInjection(mockNotes);
301
- assertContains(result, '<memory_policy>');
302
- assertContains(result, 'Precedence (highest to lowest)');
303
- assertContains(result, 'Contact-specific notes override organization-level');
304
- assertContains(result, '</memory_policy>');
305
- });
306
- runTest('formatNotesForInjection: excludes memory policy when disabled', () => {
307
- const result = formatNotesForInjection(mockNotes, false);
308
- assertTrue(!result.includes('<memory_policy>'), 'Should not contain memory_policy');
309
- });
310
- runTest('formatNotesForInjection: includes note count', () => {
311
- const result = formatNotesForInjection(mockNotes);
312
- assertContains(result, `šŸ“ AGENT NOTES (${mockNotes.length})`);
313
- });
314
- runTest('formatNotesForInjection: includes note types and content', () => {
315
- const result = formatNotesForInjection(mockNotes);
316
- assertContains(result, '[Preference] User prefers bullet points');
317
- assertContains(result, '[Context] Company uses metric units');
318
- assertContains(result, '[Constraint] Never share PII');
319
- });
320
- runTest('formatNotesForInjection: shows SaaS scope when available', () => {
321
- const result = formatNotesForInjection(mockNotes);
322
- assertContains(result, 'Organization-level');
323
- assertContains(result, 'Contact-specific (most specific)');
324
- });
325
- runTest('formatNotesForInjection: returns empty string for empty notes', () => {
326
- const result = formatNotesForInjection([]);
327
- assertEqual(result, '');
328
- });
329
- // ============================================================================
330
- // Feedback Question Generation Tests
331
- // ============================================================================
332
- console.log('\n--- Feedback Question Tests ---\n');
333
- runTest('generateQuestions: filters out non-feedback warnings', () => {
334
- const questions = generateQuestions(mockWarnings);
335
- assertEqual(questions.length, 2, 'Should only include warnings with requiresFeedback=true');
336
- });
337
- runTest('generateQuestions: formats content_truncation correctly', () => {
338
- const questions = generateQuestions(mockWarnings);
339
- const truncQuestion = questions[0];
340
- assertContains(truncQuestion.question, 'reduce the content');
341
- assertContains(truncQuestion.question, '1000 to 100');
342
- assertContains(truncQuestion.question, '90.0%');
343
- });
344
- runTest('generateQuestions: formats key_removal correctly', () => {
345
- const questions = generateQuestions(mockWarnings);
346
- const removalQuestion = questions[1];
347
- assertContains(removalQuestion.question, 'remove the non-empty key(s)');
348
- assertContains(removalQuestion.question, 'timestamp');
349
- assertContains(removalQuestion.question, 'version');
350
- });
351
- runTest('generateQuestions: includes context with path and type', () => {
352
- const questions = generateQuestions(mockWarnings);
353
- const question = questions[0];
354
- assertTrue(question.context !== undefined, 'Should have context');
355
- assertEqual(question.context?.path, 'response.body');
356
- assertEqual(question.context?.changeType, 'content_truncation');
357
- });
358
- // ============================================================================
359
- // LLM Response Mapping Tests
360
- // ============================================================================
361
- console.log('\n--- LLM Response Mapping Tests ---\n');
362
- runTest('mapLLMResponsesToFeedback: maps responses correctly', () => {
363
- const questions = generateQuestions(mockWarnings);
364
- const llmResponses = [
365
- { questionNumber: 1, intended: false, explanation: 'This was a mistake' },
366
- { questionNumber: 2, intended: true, explanation: 'Intended cleanup' }
367
- ];
368
- const result = mapLLMResponsesToFeedback(questions, llmResponses);
369
- assertEqual(result.length, 2);
370
- assertEqual(result[0].intended, false);
371
- assertEqual(result[0].explanation, 'This was a mistake');
372
- assertEqual(result[1].intended, true);
373
- });
374
- runTest('mapLLMResponsesToFeedback: defaults to intended when no response', () => {
375
- const questions = generateQuestions(mockWarnings);
376
- const llmResponses = [];
377
- const result = mapLLMResponsesToFeedback(questions, llmResponses);
378
- assertTrue(result.every(r => r.intended === true), 'All should default to intended');
379
- assertContains(result[0].explanation || '', 'No explicit response');
380
- });
381
- // ============================================================================
382
- // Memory Cleanup Agent Tests
383
- // ============================================================================
384
- console.log('\n--- Memory Cleanup Agent Tests ---\n');
385
- /**
386
- * Calculate cutoff date for retention (mirrors MemoryCleanupAgent)
387
- */
388
- function getCutoffDate(retentionDays) {
389
- const cutoff = new Date();
390
- cutoff.setDate(cutoff.getDate() - retentionDays);
391
- return cutoff.toISOString();
392
- }
393
- /**
394
- * Get note retention days with default (mirrors MemoryCleanupAgent)
395
- */
396
- function getNoteRetentionDays(agent) {
397
- const DEFAULT_NOTE_RETENTION_DAYS = 90;
398
- if (typeof agent.NoteRetentionDays === 'number' && agent.NoteRetentionDays > 0) {
399
- return agent.NoteRetentionDays;
400
- }
401
- return DEFAULT_NOTE_RETENTION_DAYS;
402
- }
403
- /**
404
- * Get example retention days with default (mirrors MemoryCleanupAgent)
405
- */
406
- function getExampleRetentionDays(agent) {
407
- const DEFAULT_EXAMPLE_RETENTION_DAYS = 180;
408
- if (typeof agent.ExampleRetentionDays === 'number' && agent.ExampleRetentionDays > 0) {
409
- return agent.ExampleRetentionDays;
410
- }
411
- return DEFAULT_EXAMPLE_RETENTION_DAYS;
412
- }
413
- /**
414
- * Check if auto-archive is enabled (mirrors MemoryCleanupAgent)
415
- */
416
- function getAutoArchiveEnabled(agent) {
417
- return agent.AutoArchiveEnabled !== false;
418
- }
419
- /**
420
- * Build cleanup summary message (mirrors MemoryCleanupAgent)
421
- */
422
- function buildCleanupSummary(result) {
423
- const parts = [];
424
- if (result.notesArchived > 0) {
425
- parts.push(`${result.notesArchived} stale notes archived`);
426
- }
427
- if (result.examplesArchived > 0) {
428
- parts.push(`${result.examplesArchived} stale examples archived`);
429
- }
430
- if (result.notesExpired > 0) {
431
- parts.push(`${result.notesExpired} expired notes archived`);
432
- }
433
- if (result.examplesExpired > 0) {
434
- parts.push(`${result.examplesExpired} expired examples archived`);
435
- }
436
- if (parts.length === 0) {
437
- parts.push('No items needed archiving');
438
- }
439
- if (result.errors.length > 0) {
440
- parts.push(`${result.errors.length} errors encountered`);
441
- }
442
- return parts.join(', ');
443
- }
444
- runTest('getCutoffDate: calculates correct date for 90 days', () => {
445
- const now = new Date();
446
- const cutoffStr = getCutoffDate(90);
447
- const cutoffDate = new Date(cutoffStr);
448
- // Should be approximately 90 days ago (allow 1 second tolerance)
449
- const expectedDate = new Date(now);
450
- expectedDate.setDate(expectedDate.getDate() - 90);
451
- const diff = Math.abs(cutoffDate.getTime() - expectedDate.getTime());
452
- assertTrue(diff < 1000, 'Cutoff date should be approximately 90 days ago');
453
- });
454
- runTest('getNoteRetentionDays: returns agent value when set', () => {
455
- const agent = { NoteRetentionDays: 60 };
456
- assertEqual(getNoteRetentionDays(agent), 60);
457
- });
458
- runTest('getNoteRetentionDays: returns default when null', () => {
459
- const agent = { NoteRetentionDays: null };
460
- assertEqual(getNoteRetentionDays(agent), 90);
461
- });
462
- runTest('getNoteRetentionDays: returns default when not set', () => {
463
- const agent = {};
464
- assertEqual(getNoteRetentionDays(agent), 90);
465
- });
466
- runTest('getExampleRetentionDays: returns agent value when set', () => {
467
- const agent = { ExampleRetentionDays: 120 };
468
- assertEqual(getExampleRetentionDays(agent), 120);
469
- });
470
- runTest('getExampleRetentionDays: returns default when not set', () => {
471
- const agent = {};
472
- assertEqual(getExampleRetentionDays(agent), 180);
473
- });
474
- runTest('getAutoArchiveEnabled: returns true by default', () => {
475
- const agent = {};
476
- assertEqual(getAutoArchiveEnabled(agent), true);
477
- });
478
- runTest('getAutoArchiveEnabled: returns false when explicitly disabled', () => {
479
- const agent = { AutoArchiveEnabled: false };
480
- assertEqual(getAutoArchiveEnabled(agent), false);
481
- });
482
- runTest('getAutoArchiveEnabled: returns true when explicitly enabled', () => {
483
- const agent = { AutoArchiveEnabled: true };
484
- assertEqual(getAutoArchiveEnabled(agent), true);
485
- });
486
- runTest('buildCleanupSummary: reports stale notes', () => {
487
- const result = { notesArchived: 5, examplesArchived: 0, notesExpired: 0, examplesExpired: 0, errors: [] };
488
- const summary = buildCleanupSummary(result);
489
- assertContains(summary, '5 stale notes archived');
490
- });
491
- runTest('buildCleanupSummary: reports expired items', () => {
492
- const result = { notesArchived: 0, examplesArchived: 0, notesExpired: 2, examplesExpired: 3, errors: [] };
493
- const summary = buildCleanupSummary(result);
494
- assertContains(summary, '2 expired notes archived');
495
- assertContains(summary, '3 expired examples archived');
496
- });
497
- runTest('buildCleanupSummary: reports errors', () => {
498
- const result = { notesArchived: 1, examplesArchived: 0, notesExpired: 0, examplesExpired: 0, errors: ['error1', 'error2'] };
499
- const summary = buildCleanupSummary(result);
500
- assertContains(summary, '2 errors encountered');
501
- });
502
- runTest('buildCleanupSummary: reports nothing needed when all zero', () => {
503
- const result = { notesArchived: 0, examplesArchived: 0, notesExpired: 0, examplesExpired: 0, errors: [] };
504
- const summary = buildCleanupSummary(result);
505
- assertEqual(summary, 'No items needed archiving');
506
- });
507
- // ============================================================================
508
- // Extraction Guardrails Tests
509
- // ============================================================================
510
- console.log('\n--- Extraction Guardrails Tests ---\n');
511
- /**
512
- * Check if content contains ephemeral phrases (should not be stored)
513
- */
514
- function containsEphemeralPhrase(content) {
515
- const ephemeralPatterns = [
516
- /this time/i,
517
- /just for now/i,
518
- /today only/i,
519
- /for this call/i,
520
- /temporarily/i,
521
- /one-time/i,
522
- /exception/i,
523
- /just once/i
524
- ];
525
- return ephemeralPatterns.some(pattern => pattern.test(content));
526
- }
527
- /**
528
- * Check if content contains durable phrases (should be stored at org/global scope)
529
- */
530
- function containsDurablePhrase(content) {
531
- const durablePatterns = [
532
- /always/i,
533
- /never/i,
534
- /company policy/i,
535
- /all customers/i,
536
- /standard practice/i,
537
- /we typically/i,
538
- /our preference/i,
539
- /every time/i,
540
- /by default/i,
541
- /as a rule/i
542
- ];
543
- return durablePatterns.some(pattern => pattern.test(content));
544
- }
545
- /**
546
- * Check if content contains PII that should not be extracted
547
- */
548
- function containsPII(content) {
549
- const piiPatterns = [
550
- /\b\d{3}-\d{2}-\d{4}\b/, // SSN pattern
551
- /\b\d{16}\b/, // Credit card
552
- /password[:\s]+\S+/i, // Password mention
553
- /\bssn\b/i, // SSN mention
554
- /passport\s*#?\s*\d+/i // Passport
555
- ];
556
- return piiPatterns.some(pattern => pattern.test(content));
557
- }
558
- runTest('containsEphemeralPhrase: detects "just for now"', () => {
559
- assertTrue(containsEphemeralPhrase('Just for now, use bullet points'));
560
- });
561
- runTest('containsEphemeralPhrase: detects "this time"', () => {
562
- assertTrue(containsEphemeralPhrase('This time I want a shorter response'));
563
- });
564
- runTest('containsEphemeralPhrase: returns false for durable content', () => {
565
- assertTrue(!containsEphemeralPhrase('We always use metric units'));
566
- });
567
- runTest('containsDurablePhrase: detects "always"', () => {
568
- assertTrue(containsDurablePhrase('We always use formal tone'));
569
- });
570
- runTest('containsDurablePhrase: detects "company policy"', () => {
571
- assertTrue(containsDurablePhrase('Company policy requires approval'));
572
- });
573
- runTest('containsDurablePhrase: returns false for ephemeral content', () => {
574
- assertTrue(!containsDurablePhrase('Just this once, skip the greeting'));
575
- });
576
- runTest('containsPII: detects SSN pattern', () => {
577
- assertTrue(containsPII('My SSN is 123-45-6789'));
578
- });
579
- runTest('containsPII: detects password mention', () => {
580
- assertTrue(containsPII('The password is: secret123'));
581
- });
582
- runTest('containsPII: returns false for safe content', () => {
583
- assertTrue(!containsPII('User prefers bullet points'));
584
- });
585
- // ============================================================================
586
- // Summary
587
- // ============================================================================
588
- console.log('\n=== Test Summary ===\n');
589
- console.log(`Total: ${testsPassed + testsFailed}`);
590
- console.log(`Passed: ${testsPassed}`);
591
- console.log(`Failed: ${testsFailed}`);
592
- if (testsFailed > 0) {
593
- process.exit(1);
594
- }
595
- console.log('\nāœ… All tests passed!\n');
596
- //# sourceMappingURL=agent-memory-features.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-memory-features.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-memory-features.test.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Unit tests for Agent Type Prompt Parameters functionality.
3
- *
4
- * These tests verify the core logic for building and merging agent type prompt params:
5
- * - extractSchemaDefaults(): Extracts default values from JSON Schema
6
- * - buildAgentTypePromptParams(): Merges schema defaults, agent config, and runtime overrides
7
- *
8
- * To run these tests, you can use ts-node:
9
- * npx ts-node src/__tests__/agent-type-prompt-params.test.ts
10
- *
11
- * @since 2.131.0
12
- */
13
- export {};
14
- //# sourceMappingURL=agent-type-prompt-params.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-type-prompt-params.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-type-prompt-params.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}