@@ -8,13 +8,11 @@ import type {
88 MemoryStrategy ,
99 ModelProvider ,
1010} from '../../../../schema' ;
11-
1211import type {
1312 AgentRenderConfig ,
1413 IdentityProviderRenderConfig ,
1514 MemoryProviderRenderConfig ,
1615} from '../../../templates/types' ;
17-
1816import {
1917 DEFAULT_MEMORY_EXPIRY_DAYS ,
2018 DEFAULT_NETWORK_MODE ,
@@ -47,8 +45,8 @@ function computeCredentialName(projectName: string, providerName: string): strin
4745 * Maps GenerateConfig memory option to v2 Memory resources.
4846 *
4947 * Memory mapping:
50- * - "none" -> empty array
51- * - "shortTerm" -> [Memory with Summarization strategy]
48+ * - "none" -> empty array (no memory)
49+ * - "shortTerm" -> [Memory with no strategies] (just base memory with expiration)
5250 * - "longAndShortTerm" -> [Memory with Semantic + Summarization + UserPreference strategies]
5351 */
5452export function mapGenerateInputToMemories ( memory : MemoryOption , projectName : string ) : Memory [ ] {
@@ -58,13 +56,14 @@ export function mapGenerateInputToMemories(memory: MemoryOption, projectName: st
5856
5957 const strategies : MemoryStrategy [ ] = [ ] ;
6058
59+ // Short term memory has no strategies - just base memory with expiration time
60+ // Long term memory includes strategies for semantic search, summarization, and user preferences
6161 if ( memory === 'longAndShortTerm' ) {
6262 strategies . push ( { type : 'SEMANTIC' } ) ;
6363 strategies . push ( { type : 'USER_PREFERENCE' } ) ;
64+ strategies . push ( { type : 'SUMMARIZATION' } ) ;
6465 }
6566
66- strategies . push ( { type : 'SUMMARIZATION' } ) ;
67-
6867 return [
6968 {
7069 type : 'AgentCoreMemory' ,
@@ -147,6 +146,34 @@ function mapMemoryOptionToMemoryProviders(
147146 ] ;
148147}
149148
149+ /**
150+ * Compute the memory env var name for a memory resource.
151+ * Pattern: MEMORY_{NAME}_ID (matches CDK construct pattern)
152+ */
153+ function computeMemoryEnvVarName ( memoryName : string ) : string {
154+ return `MEMORY_${ memoryName . toUpperCase ( ) } _ID` ;
155+ }
156+
157+ /**
158+ * Maps memory option to memory providers for template rendering.
159+ */
160+ function mapMemoryOptionToMemoryProviders ( memory : MemoryOption , projectName : string ) : MemoryProviderRenderConfig [ ] {
161+ if ( memory === 'none' ) {
162+ return [ ] ;
163+ }
164+
165+ const memoryName = `${ projectName } Memory` ;
166+ const strategies = mapGenerateInputToMemories ( memory , projectName ) [ 0 ] ?. strategies ?? [ ] ;
167+
168+ return [
169+ {
170+ name : memoryName ,
171+ envVarName : computeMemoryEnvVarName ( memoryName ) ,
172+ strategies : strategies . map ( s => s . type ) ,
173+ } ,
174+ ] ;
175+ }
176+
150177/**
151178 * Maps GenerateConfig to AgentRenderConfig for template rendering.
152179 * @param config - Generate config (note: config.projectName is actually the agent name)
@@ -164,5 +191,6 @@ export function mapGenerateConfigToRenderConfig(config: GenerateConfig, actualPr
164191 hasIdentity : config . modelProvider !== 'Bedrock' ,
165192 memoryProviders : mapMemoryOptionToMemoryProviders ( config . memory , config . projectName ) ,
166193 identityProviders : mapModelProviderToIdentityProviders ( config . modelProvider , projectNameForCredentials ) ,
194+ memoryProviders : mapMemoryOptionToMemoryProviders ( config . memory , config . projectName ) ,
167195 } ;
168196}
0 commit comments