@@ -8,14 +8,15 @@ import type {
88 MemoryStrategy ,
99 ModelProvider ,
1010} from '../../../../schema' ;
11- import type { AgentRenderConfig } from '../../../templates/types' ;
11+ import type { AgentRenderConfig , IdentityProviderRenderConfig } from '../../../templates/types' ;
1212import {
1313 DEFAULT_MEMORY_EXPIRY_DAYS ,
1414 DEFAULT_NETWORK_MODE ,
1515 DEFAULT_PYTHON_ENTRYPOINT ,
1616 DEFAULT_PYTHON_VERSION ,
1717} from '../../../tui/screens/generate/defaults' ;
1818import type { GenerateConfig , MemoryOption } from '../../../tui/screens/generate/types' ;
19+ import { computeDefaultCredentialEnvVarName } from '../../identity/create-identity' ;
1920
2021/**
2122 * Result of mapping GenerateConfig to v2 schema.
@@ -28,10 +29,11 @@ export interface GenerateConfigMappingResult {
2829}
2930
3031/**
31- * Compute the qualified credential name for AWS resources.
32+ * Compute the credential name for a model provider.
33+ * Scoped to project (not agent) to avoid conflicts across projects.
3234 * Format: {projectName}{providerName}
3335 */
34- function computeQualifiedCredentialName ( projectName : string , providerName : string ) : string {
36+ function computeCredentialName ( projectName : string , providerName : string ) : string {
3537 return `${ projectName } ${ providerName } ` ;
3638}
3739
@@ -79,7 +81,7 @@ export function mapModelProviderToCredentials(modelProvider: ModelProvider, proj
7981 return [
8082 {
8183 type : 'ApiKeyCredentialProvider' ,
82- name : computeQualifiedCredentialName ( projectName , modelProvider ) ,
84+ name : computeCredentialName ( projectName , modelProvider ) ,
8385 } ,
8486 ] ;
8587}
@@ -112,16 +114,41 @@ export function mapGenerateConfigToResources(config: GenerateConfig): GenerateCo
112114 } ;
113115}
114116
117+ /**
118+ * Maps model provider to identity providers for template rendering.
119+ */
120+ function mapModelProviderToIdentityProviders (
121+ modelProvider : ModelProvider ,
122+ projectName : string
123+ ) : IdentityProviderRenderConfig [ ] {
124+ if ( modelProvider === 'Bedrock' ) {
125+ return [ ] ;
126+ }
127+
128+ const credentialName = computeCredentialName ( projectName , modelProvider ) ;
129+ return [
130+ {
131+ name : credentialName ,
132+ envVarName : computeDefaultCredentialEnvVarName ( credentialName ) ,
133+ } ,
134+ ] ;
135+ }
136+
115137/**
116138 * Maps GenerateConfig to AgentRenderConfig for template rendering.
139+ * @param config - Generate config (note: config.projectName is actually the agent name)
140+ * @param actualProjectName - Optional actual project name for credential naming (defaults to config.projectName)
117141 */
118- export function mapGenerateConfigToRenderConfig ( config : GenerateConfig ) : AgentRenderConfig {
142+ export function mapGenerateConfigToRenderConfig ( config : GenerateConfig , actualProjectName ?: string ) : AgentRenderConfig {
143+ // Use actualProjectName for credential naming, fallback to config.projectName (agent name) for standalone generate
144+ const projectNameForCredentials = actualProjectName ?? config . projectName ;
119145 return {
120146 name : config . projectName ,
121147 sdkFramework : config . sdk ,
122148 targetLanguage : config . language ,
123149 modelProvider : config . modelProvider ,
124150 hasMemory : config . memory !== 'none' ,
125151 hasIdentity : config . modelProvider !== 'Bedrock' ,
152+ identityProviders : mapModelProviderToIdentityProviders ( config . modelProvider , projectNameForCredentials ) ,
126153 } ;
127154}
0 commit comments