@factiii/stack 0.1.49 → 0.1.52

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.
@@ -45,12 +45,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.envFileFixes = void 0;
46
46
  const fs = __importStar(require("fs"));
47
47
  const path = __importStar(require("path"));
48
+ const readline = __importStar(require("readline"));
48
49
  const env_validator_js_1 = require("../../../../utils/env-validator.js");
49
50
  const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
50
51
  /**
51
52
  * Values that are commonly identical across environments and shouldn't trigger warnings
52
53
  */
53
54
  const TRIVIALLY_IDENTICAL = new Set(['', 'true', 'false', '0', '1', 'yes', 'no']);
55
+ /**
56
+ * Get exception list from stack.yml config
57
+ * Users can set env_match_exceptions: [KEY1, KEY2] to suppress "matches dev" warnings
58
+ */
59
+ function getExceptionList(config) {
60
+ const exceptions = config.env_match_exceptions;
61
+ if (Array.isArray(exceptions)) {
62
+ return new Set(exceptions.map(String));
63
+ }
64
+ return new Set();
65
+ }
66
+ /**
67
+ * Prompt user for a single env var value (used during interactive fix)
68
+ */
69
+ function promptForValue(key, exampleValue) {
70
+ return new Promise((resolve) => {
71
+ const rl = readline.createInterface({
72
+ input: process.stdin,
73
+ output: process.stdout,
74
+ });
75
+ const hint = exampleValue ? ' (example: ' + exampleValue + ')' : '';
76
+ rl.question(' ' + key + hint + ': ', (answer) => {
77
+ rl.close();
78
+ resolve(answer.trim());
79
+ });
80
+ });
81
+ }
54
82
  exports.envFileFixes = [
55
83
  // ── File existence checks ──────────────────────────────────────
56
84
  {
@@ -123,7 +151,6 @@ exports.envFileFixes = [
123
151
  return false;
124
152
  const comparison = (0, env_validator_js_1.compareEnvKeys)(dev, staging);
125
153
  if (comparison.missing.length > 0) {
126
- // Store missing keys for display in description
127
154
  this._missingKeys = comparison.missing;
128
155
  }
129
156
  return comparison.missing.length > 0;
@@ -173,9 +200,12 @@ exports.envFileFixes = [
173
200
  const staging = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.staging'));
174
201
  if (!dev || !staging)
175
202
  return false;
203
+ const exceptions = getExceptionList(config);
176
204
  const matching = (0, env_validator_js_1.findMatchingValues)(dev, staging);
177
- // Filter out trivially-identical values
205
+ // Filter out trivially-identical values and user-configured exceptions
178
206
  const meaningful = matching.filter((key) => {
207
+ if (exceptions.has(key))
208
+ return false;
179
209
  const val = dev[key];
180
210
  return val !== undefined && !TRIVIALLY_IDENTICAL.has(val);
181
211
  });
@@ -185,7 +215,7 @@ exports.envFileFixes = [
185
215
  return meaningful.length > 0;
186
216
  },
187
217
  fix: null,
188
- manualFix: 'Change these values in .env.staging to differ from .env.example (they should have staging-specific values)',
218
+ manualFix: 'Change these values in .env.staging to differ from .env.example (they should have staging-specific values). If a key is intentionally identical, add it to env_match_exceptions in stack.yml',
189
219
  },
190
220
  {
191
221
  id: 'env-prod-matches-dev',
@@ -209,8 +239,11 @@ exports.envFileFixes = [
209
239
  const prod = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.prod'));
210
240
  if (!dev || !prod)
211
241
  return false;
242
+ const exceptions = getExceptionList(config);
212
243
  const matching = (0, env_validator_js_1.findMatchingValues)(dev, prod);
213
244
  const meaningful = matching.filter((key) => {
245
+ if (exceptions.has(key))
246
+ return false;
214
247
  const val = dev[key];
215
248
  return val !== undefined && !TRIVIALLY_IDENTICAL.has(val);
216
249
  });
@@ -220,12 +253,12 @@ exports.envFileFixes = [
220
253
  return meaningful.length > 0;
221
254
  },
222
255
  fix: null,
223
- manualFix: 'Change these values in .env.prod to differ from .env.example (they should have production-specific values)',
256
+ manualFix: 'Change these values in .env.prod to differ from .env.example (they should have production-specific values). If a key is intentionally identical, add it to env_match_exceptions in stack.yml',
224
257
  },
225
- // ── Vault storage ──────────────────────────────────────────────
258
+ // ── Vault storage (dev stage — checks vault from dev machine) ──
226
259
  {
227
260
  id: 'env-staging-not-in-vault',
228
- stage: 'secrets',
261
+ stage: 'dev',
229
262
  severity: 'warning',
230
263
  description: '🔐 .env.staging not stored in Ansible Vault',
231
264
  scan: async (config, rootDir) => {
@@ -253,9 +286,14 @@ exports.envFileFixes = [
253
286
  fix: async (config, rootDir) => {
254
287
  if (!config.ansible?.vault_path)
255
288
  return false;
256
- const envVars = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.staging'));
257
- if (!envVars)
289
+ const envPath = path.join(rootDir, '.env.staging');
290
+ const envVars = (0, env_validator_js_1.parseEnvFile)(envPath);
291
+ if (!envVars || Object.keys(envVars).length === 0) {
292
+ console.log(' No variables found in .env.staging');
258
293
  return false;
294
+ }
295
+ console.log(' Found ' + Object.keys(envVars).length + ' vars in .env.staging');
296
+ console.log(' Importing into Ansible Vault as staging_envs...');
259
297
  try {
260
298
  const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
261
299
  const vault = new AnsibleVaultSecrets({
@@ -264,7 +302,7 @@ exports.envFileFixes = [
264
302
  rootDir,
265
303
  });
266
304
  await vault.setEnvironmentSecrets('staging', envVars);
267
- console.log(' Stored .env.staging in vault as staging_envs');
305
+ console.log(' Stored ' + Object.keys(envVars).length + ' staging env vars in vault');
268
306
  return true;
269
307
  }
270
308
  catch (e) {
@@ -273,11 +311,11 @@ exports.envFileFixes = [
273
311
  return false;
274
312
  }
275
313
  },
276
- manualFix: 'Run: npx stack fix (will store .env.staging in Ansible Vault)',
314
+ manualFix: 'Run: npx stack fix --dev (will import .env.staging into Ansible Vault)',
277
315
  },
278
316
  {
279
317
  id: 'env-prod-not-in-vault',
280
- stage: 'secrets',
318
+ stage: 'dev',
281
319
  severity: 'warning',
282
320
  description: '🔐 .env.prod not stored in Ansible Vault',
283
321
  scan: async (config, rootDir) => {
@@ -306,9 +344,14 @@ exports.envFileFixes = [
306
344
  fix: async (config, rootDir) => {
307
345
  if (!config.ansible?.vault_path)
308
346
  return false;
309
- const envVars = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.prod'));
310
- if (!envVars)
347
+ const envPath = path.join(rootDir, '.env.prod');
348
+ const envVars = (0, env_validator_js_1.parseEnvFile)(envPath);
349
+ if (!envVars || Object.keys(envVars).length === 0) {
350
+ console.log(' No variables found in .env.prod');
311
351
  return false;
352
+ }
353
+ console.log(' Found ' + Object.keys(envVars).length + ' vars in .env.prod');
354
+ console.log(' Importing into Ansible Vault as prod_envs...');
312
355
  try {
313
356
  const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
314
357
  const vault = new AnsibleVaultSecrets({
@@ -317,7 +360,7 @@ exports.envFileFixes = [
317
360
  rootDir,
318
361
  });
319
362
  await vault.setEnvironmentSecrets('prod', envVars);
320
- console.log(' Stored .env.prod in vault as prod_envs');
363
+ console.log(' Stored ' + Object.keys(envVars).length + ' prod env vars in vault');
321
364
  return true;
322
365
  }
323
366
  catch (e) {
@@ -326,7 +369,167 @@ exports.envFileFixes = [
326
369
  return false;
327
370
  }
328
371
  },
329
- manualFix: 'Run: npx stack fix (will store .env.prod in Ansible Vault)',
372
+ manualFix: 'Run: npx stack fix --dev (will import .env.prod into Ansible Vault)',
373
+ },
374
+ // ── Vault completeness (vault secrets missing keys from .env.example) ──
375
+ {
376
+ id: 'env-staging-vault-missing-keys',
377
+ stage: 'dev',
378
+ severity: 'critical',
379
+ get description() {
380
+ const keys = this._missingKeys;
381
+ if (keys && keys.length > 0) {
382
+ const shown = keys.slice(0, 5).join(', ');
383
+ const more = keys.length > 5 ? ' (+' + (keys.length - 5) + ' more)' : '';
384
+ return '🔐 Vault staging_envs missing ' + keys.length + ' keys from .env.example: ' + shown + more;
385
+ }
386
+ return '🔐 Vault staging_envs missing keys from .env.example';
387
+ },
388
+ scan: async function (config, rootDir) {
389
+ if (!config.ansible?.vault_path)
390
+ return false;
391
+ const envs = (0, config_helpers_js_1.extractEnvironments)(config);
392
+ if (!envs.staging)
393
+ return false;
394
+ const dev = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.example'));
395
+ if (!dev)
396
+ return false;
397
+ try {
398
+ const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
399
+ const vault = new AnsibleVaultSecrets({
400
+ vault_path: config.ansible.vault_path,
401
+ vault_password_file: config.ansible.vault_password_file ?? '~/.vault_pass',
402
+ rootDir,
403
+ });
404
+ const vaultSecrets = await vault.getEnvironmentSecrets('staging');
405
+ if (Object.keys(vaultSecrets).length === 0)
406
+ return false; // No vault secrets yet, handled by env-staging-not-in-vault
407
+ const comparison = (0, env_validator_js_1.compareEnvKeys)(dev, vaultSecrets);
408
+ if (comparison.missing.length > 0) {
409
+ this._missingKeys = comparison.missing;
410
+ }
411
+ return comparison.missing.length > 0;
412
+ }
413
+ catch {
414
+ return false;
415
+ }
416
+ },
417
+ fix: async function (config, rootDir) {
418
+ if (!config.ansible?.vault_path)
419
+ return false;
420
+ const dev = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.example'));
421
+ if (!dev)
422
+ return false;
423
+ try {
424
+ const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
425
+ const vault = new AnsibleVaultSecrets({
426
+ vault_path: config.ansible.vault_path,
427
+ vault_password_file: config.ansible.vault_password_file ?? '~/.vault_pass',
428
+ rootDir,
429
+ });
430
+ const vaultSecrets = await vault.getEnvironmentSecrets('staging');
431
+ const comparison = (0, env_validator_js_1.compareEnvKeys)(dev, vaultSecrets);
432
+ if (comparison.missing.length === 0)
433
+ return true;
434
+ console.log(' Missing ' + comparison.missing.length + ' keys in vault staging_envs');
435
+ console.log(' Enter values for each missing key (from .env.example):');
436
+ const newSecrets = {};
437
+ for (const key of comparison.missing) {
438
+ const exampleVal = dev[key] ?? '';
439
+ const value = await promptForValue(key, exampleVal);
440
+ newSecrets[key] = value || exampleVal; // Use example value if left blank
441
+ }
442
+ await vault.setEnvironmentSecrets('staging', newSecrets);
443
+ console.log(' Added ' + comparison.missing.length + ' keys to vault staging_envs');
444
+ return true;
445
+ }
446
+ catch (e) {
447
+ const msg = e instanceof Error ? e.message : String(e);
448
+ console.log(' Failed: ' + msg);
449
+ return false;
450
+ }
451
+ },
452
+ manualFix: 'Run: npx stack fix --dev (will prompt for missing staging secret values)',
453
+ },
454
+ {
455
+ id: 'env-prod-vault-missing-keys',
456
+ stage: 'dev',
457
+ severity: 'critical',
458
+ get description() {
459
+ const keys = this._missingKeys;
460
+ if (keys && keys.length > 0) {
461
+ const shown = keys.slice(0, 5).join(', ');
462
+ const more = keys.length > 5 ? ' (+' + (keys.length - 5) + ' more)' : '';
463
+ return '🔐 Vault prod_envs missing ' + keys.length + ' keys from .env.example: ' + shown + more;
464
+ }
465
+ return '🔐 Vault prod_envs missing keys from .env.example';
466
+ },
467
+ scan: async function (config, rootDir) {
468
+ if (!config.ansible?.vault_path)
469
+ return false;
470
+ const envs = (0, config_helpers_js_1.extractEnvironments)(config);
471
+ const hasProd = !!envs.prod || !!envs.production;
472
+ if (!hasProd)
473
+ return false;
474
+ const dev = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.example'));
475
+ if (!dev)
476
+ return false;
477
+ try {
478
+ const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
479
+ const vault = new AnsibleVaultSecrets({
480
+ vault_path: config.ansible.vault_path,
481
+ vault_password_file: config.ansible.vault_password_file ?? '~/.vault_pass',
482
+ rootDir,
483
+ });
484
+ const vaultSecrets = await vault.getEnvironmentSecrets('prod');
485
+ if (Object.keys(vaultSecrets).length === 0)
486
+ return false; // No vault secrets yet
487
+ const comparison = (0, env_validator_js_1.compareEnvKeys)(dev, vaultSecrets);
488
+ if (comparison.missing.length > 0) {
489
+ this._missingKeys = comparison.missing;
490
+ }
491
+ return comparison.missing.length > 0;
492
+ }
493
+ catch {
494
+ return false;
495
+ }
496
+ },
497
+ fix: async function (config, rootDir) {
498
+ if (!config.ansible?.vault_path)
499
+ return false;
500
+ const dev = (0, env_validator_js_1.parseEnvFile)(path.join(rootDir, '.env.example'));
501
+ if (!dev)
502
+ return false;
503
+ try {
504
+ const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
505
+ const vault = new AnsibleVaultSecrets({
506
+ vault_path: config.ansible.vault_path,
507
+ vault_password_file: config.ansible.vault_password_file ?? '~/.vault_pass',
508
+ rootDir,
509
+ });
510
+ const vaultSecrets = await vault.getEnvironmentSecrets('prod');
511
+ const comparison = (0, env_validator_js_1.compareEnvKeys)(dev, vaultSecrets);
512
+ if (comparison.missing.length === 0)
513
+ return true;
514
+ console.log(' Missing ' + comparison.missing.length + ' keys in vault prod_envs');
515
+ console.log(' Enter values for each missing key (from .env.example):');
516
+ const newSecrets = {};
517
+ for (const key of comparison.missing) {
518
+ const exampleVal = dev[key] ?? '';
519
+ const value = await promptForValue(key, exampleVal);
520
+ newSecrets[key] = value || exampleVal;
521
+ }
522
+ await vault.setEnvironmentSecrets('prod', newSecrets);
523
+ console.log(' Added ' + comparison.missing.length + ' keys to vault prod_envs');
524
+ return true;
525
+ }
526
+ catch (e) {
527
+ const msg = e instanceof Error ? e.message : String(e);
528
+ console.log(' Failed: ' + msg);
529
+ return false;
530
+ }
531
+ },
532
+ manualFix: 'Run: npx stack fix --dev (will prompt for missing prod secret values)',
330
533
  },
331
534
  ];
332
535
  //# sourceMappingURL=env-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-files.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/env-files.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAE7B,yEAAsG;AACtG,2EAA0E;AAE1E;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAErE,QAAA,YAAY,GAAU;IACjC,kEAAkE;IAElE;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gEAAgE;QAC7E,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,mEAAmE;KAC/E;IAED;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,CAAC,+BAA+B;YAChE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9C,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,8DAA8D;KAC1E;IAED;QACE,EAAE,EAAE,kBAAkB;QACtB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC,CAAC,4BAA4B;YACxD,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9C,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,8DAA8D;KAC1E;IAED,kEAAkE;IAElE;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEhC,MAAM,GAAG,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEnC,MAAM,UAAU,GAAG,IAAA,iCAAc,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,gDAAgD;gBAC/C,IAAY,CAAC,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC;YAClD,CAAC;YACD,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,8DAA8D;KAC1E;IAED;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,gDAAgD;QAC7D,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,GAAG,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YAEhC,MAAM,UAAU,GAAG,IAAA,iCAAc,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,2DAA2D;KACvE;IAED,kEAAkE;IAElE;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,IAAI,WAAW;YACb,MAAM,IAAI,GAAI,IAAY,CAAC,aAAqC,CAAC;YACjE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,OAAO,mBAAmB,GAAG,IAAI,CAAC,MAAM,GAAG,qCAAqC,GAAG,KAAK,GAAG,IAAI,CAAC;YAClG,CAAC;YACD,OAAO,6EAA6E,CAAC;QACvF,CAAC;QACD,IAAI,EAAE,KAAK,WAAW,MAAqB,EAAE,OAAe;YAC1D,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEhC,MAAM,GAAG,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEnC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAClD,wCAAwC;YACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAY,CAAC,aAAa,GAAG,UAAU,CAAC;YAC3C,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,4GAA4G;KACxH;IAED;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,IAAI,WAAW;YACb,MAAM,IAAI,GAAI,IAAY,CAAC,aAAqC,CAAC;YACjE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,OAAO,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,qCAAqC,GAAG,KAAK,GAAG,IAAI,CAAC;YAC/F,CAAC;YACD,OAAO,0EAA0E,CAAC;QACpF,CAAC;QACD,IAAI,EAAE,KAAK,WAAW,MAAqB,EAAE,OAAe;YAC1D,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,GAAG,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YAEhC,MAAM,QAAQ,GAAG,IAAA,qCAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,GAAG,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,IAAY,CAAC,aAAa,GAAG,UAAU,CAAC;YAC3C,CAAC;YACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,4GAA4G;KACxH;IAED,kEAAkE;IAElE;QACE,EAAE,EAAE,0BAA0B;QAC9B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,4CAA4C,GAAC,CAAC;gBAC3F,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC;oBACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;oBACrC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,eAAe;oBAC1E,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC,CAAC,0BAA0B;YAC1C,CAAC;QACH,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,4CAA4C,GAAC,CAAC;gBAC3F,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC;oBACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;oBACrC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,eAAe;oBAC1E,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAC;gBACnD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,SAAS,EAAE,+DAA+D;KAC3E;IAED;QACE,EAAE,EAAE,uBAAuB;QAC3B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,0CAA0C;QACvD,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,MAAM,IAAI,GAAG,IAAA,uCAAmB,EAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElE,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,4CAA4C,GAAC,CAAC;gBAC3F,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC;oBACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;oBACrC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,eAAe;oBAC1E,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,MAAqB,EAAE,OAAe,EAAoB,EAAE;YACtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,IAAI,CAAC;gBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,4CAA4C,GAAC,CAAC;gBAC3F,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC;oBACpC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;oBACrC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,eAAe;oBAC1E,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvD,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,GAAG,CAAC,CAAC;gBACnD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,SAAS,EAAE,4DAA4D;KACxE;CACF,CAAC"}
1
+ {"version":3,"file":"env-files.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/env-files.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/secrets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAsBrE,eAAO,MAAM,YAAY,EAAE,GAAG,EAoP7B,CAAC"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/secrets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAcrE,eAAO,MAAM,YAAY,EAAE,GAAG,EA+W7B,CAAC"}
@@ -43,6 +43,7 @@ const os = __importStar(require("os"));
43
43
  const path = __importStar(require("path"));
44
44
  const ansible_vault_secrets_js_1 = require("../../../../utils/ansible-vault-secrets.js");
45
45
  const secret_prompts_js_1 = require("../../../../utils/secret-prompts.js");
46
+ const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
46
47
  function getAnsibleStore(config, rootDir) {
47
48
  if (!config.ansible?.vault_path)
48
49
  return null;
@@ -52,14 +53,6 @@ function getAnsibleStore(config, rootDir) {
52
53
  rootDir,
53
54
  });
54
55
  }
55
- function getSecretNameFromFixId(fixId) {
56
- const map = {
57
- 'missing-staging-ssh': 'STAGING_SSH',
58
- 'missing-prod-ssh': 'PROD_SSH',
59
- 'missing-aws-secret': 'AWS_SECRET_ACCESS_KEY',
60
- };
61
- return map[fixId] ?? '';
62
- }
63
56
  exports.secretsFixes = [
64
57
  {
65
58
  id: 'missing-ansible-config',
@@ -81,8 +74,7 @@ exports.secretsFixes = [
81
74
  severity: 'critical',
82
75
  description: '🔑 STAGING_SSH secret not found in Ansible Vault',
83
76
  scan: async (config, rootDir) => {
84
- const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
85
- const environments = extractEnvironments(config);
77
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
86
78
  // Only check if staging environment is defined in config
87
79
  const hasStagingEnv = environments.staging;
88
80
  if (!hasStagingEnv)
@@ -126,8 +118,7 @@ exports.secretsFixes = [
126
118
  severity: 'critical',
127
119
  description: '🔑 PROD_SSH secret not found in Ansible Vault',
128
120
  scan: async (config, rootDir) => {
129
- const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
130
- const environments = extractEnvironments(config);
121
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
131
122
  // Only check if prod environment is defined in config
132
123
  const hasProdEnv = environments.prod;
133
124
  if (!hasProdEnv)
@@ -165,14 +156,117 @@ exports.secretsFixes = [
165
156
  ' 2. Add to server: ssh-copy-id -i ~/.ssh/prod_deploy_key.pub user@prod-host\n' +
166
157
  ' 3. Store in vault: npx stack secrets set PROD_SSH',
167
158
  },
159
+ {
160
+ id: 'missing-staging-ssh-password',
161
+ stage: 'secrets',
162
+ severity: 'warning',
163
+ description: '🔑 STAGING_SSH_PASSWORD not in vault (needed if staging uses password auth)',
164
+ scan: async (config, rootDir) => {
165
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
166
+ if (!environments.staging)
167
+ return false;
168
+ // Only flag if there's NO SSH key — password is the fallback
169
+ const keyPath = path.join(os.homedir(), '.ssh', 'staging_deploy_key');
170
+ if (fs.existsSync(keyPath))
171
+ return false;
172
+ const store = getAnsibleStore(config, rootDir);
173
+ if (!store)
174
+ return false;
175
+ // Check if STAGING_SSH key is in vault (if so, no need for password)
176
+ const keyCheck = await store.checkSecrets(['STAGING_SSH']);
177
+ if (!keyCheck.missing?.includes('STAGING_SSH'))
178
+ return false;
179
+ // No SSH key at all — check if password is stored
180
+ const result = await store.checkSecrets(['STAGING_SSH_PASSWORD']);
181
+ return result.missing?.includes('STAGING_SSH_PASSWORD') ?? false;
182
+ },
183
+ fix: async (config, rootDir) => {
184
+ const store = getAnsibleStore(config, rootDir);
185
+ if (!store)
186
+ return false;
187
+ try {
188
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
189
+ const envConfig = environments.staging;
190
+ const host = envConfig?.domain ?? 'staging server';
191
+ const user = envConfig?.ssh_user ?? 'root';
192
+ console.log(' Enter the SSH password for ' + user + '@' + host);
193
+ const password = await (0, secret_prompts_js_1.promptSingleLine)(' Password: ', { hidden: true });
194
+ if (!password) {
195
+ console.log(' No password provided');
196
+ return false;
197
+ }
198
+ const result = await store.setSecret('STAGING_SSH_PASSWORD', password);
199
+ if (result.success) {
200
+ console.log(' Stored STAGING_SSH_PASSWORD in Ansible Vault');
201
+ return true;
202
+ }
203
+ return false;
204
+ }
205
+ catch {
206
+ return false;
207
+ }
208
+ },
209
+ manualFix: 'Store SSH password: npx stack secrets set STAGING_SSH_PASSWORD',
210
+ },
211
+ {
212
+ id: 'missing-prod-ssh-password',
213
+ stage: 'secrets',
214
+ severity: 'warning',
215
+ description: '🔑 PROD_SSH_PASSWORD not in vault (needed if prod uses password auth)',
216
+ scan: async (config, rootDir) => {
217
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
218
+ if (!environments.prod)
219
+ return false;
220
+ // Only flag if there's NO SSH key — password is the fallback
221
+ const keyPath = path.join(os.homedir(), '.ssh', 'prod_deploy_key');
222
+ if (fs.existsSync(keyPath))
223
+ return false;
224
+ const store = getAnsibleStore(config, rootDir);
225
+ if (!store)
226
+ return false;
227
+ // Check if PROD_SSH key is in vault (if so, no need for password)
228
+ const keyCheck = await store.checkSecrets(['PROD_SSH']);
229
+ if (!keyCheck.missing?.includes('PROD_SSH'))
230
+ return false;
231
+ // No SSH key at all — check if password is stored
232
+ const result = await store.checkSecrets(['PROD_SSH_PASSWORD']);
233
+ return result.missing?.includes('PROD_SSH_PASSWORD') ?? false;
234
+ },
235
+ fix: async (config, rootDir) => {
236
+ const store = getAnsibleStore(config, rootDir);
237
+ if (!store)
238
+ return false;
239
+ try {
240
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
241
+ const envConfig = environments.prod;
242
+ const host = envConfig?.domain ?? 'prod server';
243
+ const user = envConfig?.ssh_user ?? 'root';
244
+ console.log(' Enter the SSH password for ' + user + '@' + host);
245
+ const password = await (0, secret_prompts_js_1.promptSingleLine)(' Password: ', { hidden: true });
246
+ if (!password) {
247
+ console.log(' No password provided');
248
+ return false;
249
+ }
250
+ const result = await store.setSecret('PROD_SSH_PASSWORD', password);
251
+ if (result.success) {
252
+ console.log(' Stored PROD_SSH_PASSWORD in Ansible Vault');
253
+ return true;
254
+ }
255
+ return false;
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ },
261
+ manualFix: 'Store SSH password: npx stack secrets set PROD_SSH_PASSWORD',
262
+ },
168
263
  {
169
264
  id: 'missing-aws-secret',
170
265
  stage: 'secrets',
171
266
  severity: 'warning',
172
267
  description: '🔑 AWS_SECRET_ACCESS_KEY not found in Ansible Vault (needed for ECR)',
173
268
  scan: async (config, rootDir) => {
174
- const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
175
- const environments = extractEnvironments(config);
269
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
176
270
  // Check if any environment uses AWS pipeline
177
271
  const hasAwsEnv = Object.values(environments).some(env => env.pipeline === 'aws' && env.access_key_id);
178
272
  if (!hasAwsEnv)
@@ -188,6 +282,25 @@ exports.secretsFixes = [
188
282
  if (!store)
189
283
  return false;
190
284
  try {
285
+ // Try reading from ~/.aws/credentials first
286
+ const awsCredsPath = path.join(os.homedir(), '.aws', 'credentials');
287
+ if (fs.existsSync(awsCredsPath)) {
288
+ const content = fs.readFileSync(awsCredsPath, 'utf8');
289
+ const match = content.match(/aws_secret_access_key\s*=\s*(.+)/);
290
+ if (match && match[1]) {
291
+ const secretKey = match[1].trim();
292
+ if (secretKey && secretKey.length === 40) {
293
+ console.log(' Found AWS_SECRET_ACCESS_KEY in ~/.aws/credentials');
294
+ const result = await store.setSecret('AWS_SECRET_ACCESS_KEY', secretKey);
295
+ if (result.success) {
296
+ console.log(' Stored in Ansible Vault');
297
+ return true;
298
+ }
299
+ }
300
+ }
301
+ }
302
+ // Fall back to interactive prompt
303
+ console.log(' AWS_SECRET_ACCESS_KEY not found in ~/.aws/credentials');
191
304
  const value = await (0, secret_prompts_js_1.promptForSecret)('AWS_SECRET_ACCESS_KEY', config);
192
305
  const result = await store.setSecret('AWS_SECRET_ACCESS_KEY', value);
193
306
  return result.success;
@@ -222,8 +335,7 @@ exports.secretsFixes = [
222
335
  severity: 'critical',
223
336
  description: '🔑 SSH_STAGING key file not on disk (required for staging access)',
224
337
  scan: async (config) => {
225
- const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
226
- const environments = extractEnvironments(config);
338
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
227
339
  if (!environments.staging)
228
340
  return false;
229
341
  const keyPath = path.join(os.homedir(), '.ssh', 'staging_deploy_key');
@@ -260,8 +372,7 @@ exports.secretsFixes = [
260
372
  severity: 'critical',
261
373
  description: '🔑 SSH_PROD key file not on disk (required for prod access)',
262
374
  scan: async (config) => {
263
- const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
264
- const environments = extractEnvironments(config);
375
+ const environments = (0, config_helpers_js_1.extractEnvironments)(config);
265
376
  if (!environments.prod)
266
377
  return false;
267
378
  const keyPath = path.join(os.homedir(), '.ssh', 'prod_deploy_key');