@@ -1146,6 +1146,79 @@ describe("buildGatewayInstallPlan — dotenv merge", () => {
11461146 ) ;
11471147 } ) ;
11481148
1149+ it ( "retains .env values for macOS LaunchAgent env SecretRefs" , async ( ) => {
1150+ await writeStateDirDotEnv ( "MINIMAX_API_KEY=minimax-dotenv-key\n" , {
1151+ stateDir : path . join ( tmpDir , ".openclaw" ) ,
1152+ } ) ;
1153+ mockNodeGatewayPlanFixture ( {
1154+ serviceEnvironment : {
1155+ HOME : "/from-service" ,
1156+ OPENCLAW_LAUNCHD_LABEL : "ai.openclaw.gateway" ,
1157+ OPENCLAW_PORT : "3000" ,
1158+ } ,
1159+ } ) ;
1160+
1161+ const plan = await buildGatewayInstallPlan ( {
1162+ env : { HOME : tmpDir } ,
1163+ port : 3000 ,
1164+ runtime : "node" ,
1165+ platform : "darwin" ,
1166+ config : {
1167+ models : {
1168+ providers : {
1169+ "minimax-openai" : {
1170+ baseUrl : "https://api.minimax.io/v1" ,
1171+ apiKey : { source : "env" , provider : "default" , id : "MINIMAX_API_KEY" } ,
1172+ models : [ ] ,
1173+ } ,
1174+ } ,
1175+ } ,
1176+ } ,
1177+ } ) ;
1178+
1179+ expect ( plan . environment . MINIMAX_API_KEY ) . toBe ( "minimax-dotenv-key" ) ;
1180+ expect ( plan . environment . OPENCLAW_SERVICE_MANAGED_ENV_KEYS ) . toBe ( "MINIMAX_API_KEY" ) ;
1181+ } ) ;
1182+
1183+ it ( "retains .env values when config env has an unresolved self reference" , async ( ) => {
1184+ await writeStateDirDotEnv ( "MINIMAX_API_KEY=minimax-dotenv-key\n" , {
1185+ stateDir : path . join ( tmpDir , ".openclaw" ) ,
1186+ } ) ;
1187+ mockNodeGatewayPlanFixture ( {
1188+ serviceEnvironment : {
1189+ HOME : "/from-service" ,
1190+ OPENCLAW_LAUNCHD_LABEL : "ai.openclaw.gateway" ,
1191+ OPENCLAW_PORT : "3000" ,
1192+ } ,
1193+ } ) ;
1194+
1195+ const plan = await buildGatewayInstallPlan ( {
1196+ env : { HOME : tmpDir } ,
1197+ port : 3000 ,
1198+ runtime : "node" ,
1199+ platform : "darwin" ,
1200+ config : {
1201+ env : {
1202+ vars : {
1203+ MINIMAX_API_KEY : "${MINIMAX_API_KEY}" ,
1204+ } ,
1205+ } ,
1206+ models : {
1207+ providers : {
1208+ "minimax-openai" : {
1209+ baseUrl : "https://api.minimax.io/v1" ,
1210+ apiKey : { source : "env" , provider : "default" , id : "MINIMAX_API_KEY" } ,
1211+ models : [ ] ,
1212+ } ,
1213+ } ,
1214+ } ,
1215+ } ,
1216+ } ) ;
1217+
1218+ expect ( plan . environment . MINIMAX_API_KEY ) . toBe ( "minimax-dotenv-key" ) ;
1219+ expect ( plan . environment . OPENCLAW_SERVICE_MANAGED_ENV_KEYS ) . toBe ( "MINIMAX_API_KEY" ) ;
1220+ } ) ;
1221+
11491222 it ( "does not retain config env values for macOS LaunchAgent env files" , async ( ) => {
11501223 await writeStateDirDotEnv ( "OPENROUTER_API_KEY=or-dotenv\nTAVILY_API_KEY=dotenv-tavily\n" , {
11511224 stateDir : path . join ( tmpDir , ".openclaw" ) ,
0 commit comments