From edb9e5a83a0ca6154791eeeb621b1ceac13c50d2 Mon Sep 17 00:00:00 2001 From: notgitika Date: Fri, 24 Apr 2026 15:08:26 -0400 Subject: [PATCH] fix: lower eventExpiryDuration minimum from 7 to 3 days (closes #744) The AWS CreateMemory API allows a minimum of 3 days, but the CLI schema was rejecting values below 7. Update the Zod schema, LLM compacted types, import clamping logic, and all related tests. --- .../commands/import/__tests__/import-memory.test.ts | 10 +++++----- src/cli/commands/import/__tests__/merge-logic.test.ts | 4 ++-- src/cli/commands/import/actions.ts | 2 +- src/cli/commands/import/import-memory.ts | 2 +- src/schema/llm-compacted/agentcore.ts | 2 +- src/schema/schemas/__tests__/agentcore-project.test.ts | 8 ++++---- src/schema/schemas/agentcore-project.ts | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/cli/commands/import/__tests__/import-memory.test.ts b/src/cli/commands/import/__tests__/import-memory.test.ts index b4b084a0..fbd717e5 100644 --- a/src/cli/commands/import/__tests__/import-memory.test.ts +++ b/src/cli/commands/import/__tests__/import-memory.test.ts @@ -38,7 +38,7 @@ function toMemorySpec(mem: ParsedStarterToolkitMemory): Memory { return { name: mem.name, - eventExpiryDuration: Math.max(7, Math.min(365, mem.eventExpiryDays)), + eventExpiryDuration: Math.max(3, Math.min(365, mem.eventExpiryDays)), strategies, }; } @@ -408,7 +408,7 @@ describe('toMemorySpec', () => { }; const result = toMemorySpec(mem); - expect(result.eventExpiryDuration).toBe(7); + expect(result.eventExpiryDuration).toBe(3); }); it('clamps zero to minimum of 7', () => { @@ -419,7 +419,7 @@ describe('toMemorySpec', () => { }; const result = toMemorySpec(mem); - expect(result.eventExpiryDuration).toBe(7); + expect(result.eventExpiryDuration).toBe(3); }); it('clamps negative values to minimum of 7', () => { @@ -430,7 +430,7 @@ describe('toMemorySpec', () => { }; const result = toMemorySpec(mem); - expect(result.eventExpiryDuration).toBe(7); + expect(result.eventExpiryDuration).toBe(3); }); it('clamps high values to maximum of 365', () => { @@ -473,7 +473,7 @@ describe('YAML Parsing: eventExpiryDays values', () => { // But toMemorySpec should clamp it const spec = toMemorySpec(parsed.memories[0]!); - expect(spec.eventExpiryDuration).toBe(7); + expect(spec.eventExpiryDuration).toBe(3); } finally { fs.unlinkSync(tmpFile); } diff --git a/src/cli/commands/import/__tests__/merge-logic.test.ts b/src/cli/commands/import/__tests__/merge-logic.test.ts index 580e39c4..9b64ee20 100644 --- a/src/cli/commands/import/__tests__/merge-logic.test.ts +++ b/src/cli/commands/import/__tests__/merge-logic.test.ts @@ -39,7 +39,7 @@ function toMemorySpec(mem: ParsedStarterToolkitConfig['memories'][0]): Memory { } return { name: mem.name, - eventExpiryDuration: Math.max(7, Math.min(365, mem.eventExpiryDays)), + eventExpiryDuration: Math.max(3, Math.min(365, mem.eventExpiryDays)), strategies, }; } @@ -194,7 +194,7 @@ describe('source copy skip logic', () => { describe('toMemorySpec', () => { it('clamps below 7', () => { const mem: ParsedStarterToolkitConfig['memories'][0] = { name: 't', mode: 'STM_ONLY', eventExpiryDays: 1 }; - expect(toMemorySpec(mem).eventExpiryDuration).toBe(7); + expect(toMemorySpec(mem).eventExpiryDuration).toBe(3); }); it('clamps above 365', () => { const mem: ParsedStarterToolkitConfig['memories'][0] = { name: 't', mode: 'STM_ONLY', eventExpiryDays: 999 }; diff --git a/src/cli/commands/import/actions.ts b/src/cli/commands/import/actions.ts index 24821657..a57685b7 100644 --- a/src/cli/commands/import/actions.ts +++ b/src/cli/commands/import/actions.ts @@ -78,7 +78,7 @@ function toMemorySpec(mem: ParsedStarterToolkitConfig['memories'][0]): Memory { return { name: mem.name, - eventExpiryDuration: Math.max(7, Math.min(365, mem.eventExpiryDays)), + eventExpiryDuration: Math.max(3, Math.min(365, mem.eventExpiryDays)), strategies, }; } diff --git a/src/cli/commands/import/import-memory.ts b/src/cli/commands/import/import-memory.ts index 81740b72..2362d135 100644 --- a/src/cli/commands/import/import-memory.ts +++ b/src/cli/commands/import/import-memory.ts @@ -55,7 +55,7 @@ function toMemorySpec(memory: MemoryDetail, localName: string): Memory { return { name: localName, - eventExpiryDuration: Math.max(7, Math.min(365, memory.eventExpiryDuration)), + eventExpiryDuration: Math.max(3, Math.min(365, memory.eventExpiryDuration)), strategies, ...(memory.tags && Object.keys(memory.tags).length > 0 && { tags: memory.tags }), ...(memory.encryptionKeyArn && { encryptionKeyArn: memory.encryptionKeyArn }), diff --git a/src/schema/llm-compacted/agentcore.ts b/src/schema/llm-compacted/agentcore.ts index caf77c65..5819cbd4 100644 --- a/src/schema/llm-compacted/agentcore.ts +++ b/src/schema/llm-compacted/agentcore.ts @@ -73,7 +73,7 @@ interface EnvVar { interface Memory { name: string; // @regex ^[a-zA-Z][a-zA-Z0-9_]{0,47}$ @max 48 - eventExpiryDuration: number; // @min 7 @max 365 (days) + eventExpiryDuration: number; // @min 3 @max 365 (days) strategies: MemoryStrategy[]; // @min 1, unique by type tags?: Record; } diff --git a/src/schema/schemas/__tests__/agentcore-project.test.ts b/src/schema/schemas/__tests__/agentcore-project.test.ts index 854959b6..08aaf3b1 100644 --- a/src/schema/schemas/__tests__/agentcore-project.test.ts +++ b/src/schema/schemas/__tests__/agentcore-project.test.ts @@ -137,10 +137,10 @@ describe('MemorySchema', () => { } }); - it('rejects eventExpiryDuration below 7', () => { + it('rejects eventExpiryDuration below 3', () => { const result = MemorySchema.safeParse({ name: 'Test', - eventExpiryDuration: 6, + eventExpiryDuration: 2, strategies: [], }); expect(result.success).toBe(false); @@ -155,11 +155,11 @@ describe('MemorySchema', () => { expect(result.success).toBe(false); }); - it('accepts eventExpiryDuration boundary values (7 and 365)', () => { + it('accepts eventExpiryDuration boundary values (3 and 365)', () => { expect( MemorySchema.safeParse({ name: 'Min', - eventExpiryDuration: 7, + eventExpiryDuration: 3, strategies: [], }).success ).toBe(true); diff --git a/src/schema/schemas/agentcore-project.ts b/src/schema/schemas/agentcore-project.ts index 8d0f35f1..172fc8fd 100644 --- a/src/schema/schemas/agentcore-project.ts +++ b/src/schema/schemas/agentcore-project.ts @@ -126,7 +126,7 @@ export type StreamDeliveryResources = z.infer