@quiltdata/benchling-webhook 0.5.4 → 0.6.0

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.
Files changed (103) hide show
  1. package/README.md +273 -10
  2. package/dist/bin/benchling-webhook.d.ts +1 -1
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +8 -22
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cdk-dev.js +59 -3
  7. package/dist/bin/cli.js +16 -6
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/commands/deploy.d.ts +6 -2
  10. package/dist/bin/commands/deploy.d.ts.map +1 -1
  11. package/dist/bin/commands/deploy.js +149 -90
  12. package/dist/bin/commands/deploy.js.map +1 -1
  13. package/dist/bin/config-profiles.d.ts +59 -0
  14. package/dist/bin/config-profiles.d.ts.map +1 -0
  15. package/dist/bin/config-profiles.js +272 -0
  16. package/dist/bin/config-profiles.js.map +1 -0
  17. package/dist/bin/create-secret.d.ts +25 -0
  18. package/dist/bin/create-secret.d.ts.map +1 -0
  19. package/dist/bin/create-secret.js +239 -0
  20. package/dist/bin/create-secret.js.map +1 -0
  21. package/dist/lib/benchling-auth-validator.d.ts +65 -0
  22. package/dist/lib/benchling-auth-validator.d.ts.map +1 -0
  23. package/dist/lib/benchling-auth-validator.js +213 -0
  24. package/dist/lib/benchling-auth-validator.js.map +1 -0
  25. package/dist/lib/benchling-webhook-stack.d.ts +13 -10
  26. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  27. package/dist/lib/benchling-webhook-stack.js +25 -69
  28. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  29. package/dist/lib/config-logger.d.ts +191 -0
  30. package/dist/lib/config-logger.d.ts.map +1 -0
  31. package/dist/lib/config-logger.js +372 -0
  32. package/dist/lib/config-logger.js.map +1 -0
  33. package/dist/lib/configuration-saver.d.ts +75 -0
  34. package/dist/lib/configuration-saver.d.ts.map +1 -0
  35. package/dist/lib/configuration-saver.js +145 -0
  36. package/dist/lib/configuration-saver.js.map +1 -0
  37. package/dist/lib/configuration-validator.d.ts +63 -0
  38. package/dist/lib/configuration-validator.d.ts.map +1 -0
  39. package/dist/lib/configuration-validator.js +136 -0
  40. package/dist/lib/configuration-validator.js.map +1 -0
  41. package/dist/lib/configuration-wizard.d.ts +52 -0
  42. package/dist/lib/configuration-wizard.d.ts.map +1 -0
  43. package/dist/lib/configuration-wizard.js +193 -0
  44. package/dist/lib/configuration-wizard.js.map +1 -0
  45. package/dist/lib/fargate-service.d.ts +18 -9
  46. package/dist/lib/fargate-service.d.ts.map +1 -1
  47. package/dist/lib/fargate-service.js +177 -61
  48. package/dist/lib/fargate-service.js.map +1 -1
  49. package/dist/lib/quilt-config-resolver.d.ts +53 -0
  50. package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
  51. package/dist/lib/quilt-config-resolver.js +100 -0
  52. package/dist/lib/quilt-config-resolver.js.map +1 -0
  53. package/dist/lib/s3-bucket-validator.d.ts +76 -0
  54. package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
  55. package/dist/lib/s3-bucket-validator.js +237 -0
  56. package/dist/lib/s3-bucket-validator.js.map +1 -0
  57. package/dist/lib/types/config.d.ts +398 -0
  58. package/dist/lib/types/config.d.ts.map +1 -0
  59. package/dist/lib/types/config.js +11 -0
  60. package/dist/lib/types/config.js.map +1 -0
  61. package/dist/lib/utils/config-loader.d.ts +48 -0
  62. package/dist/lib/utils/config-loader.d.ts.map +1 -0
  63. package/dist/lib/utils/config-loader.js +109 -0
  64. package/dist/lib/utils/config-loader.js.map +1 -0
  65. package/dist/lib/utils/config-resolver.d.ts +138 -0
  66. package/dist/lib/utils/config-resolver.d.ts.map +1 -0
  67. package/dist/lib/utils/config-resolver.js +272 -0
  68. package/dist/lib/utils/config-resolver.js.map +1 -0
  69. package/dist/lib/utils/config.d.ts +50 -0
  70. package/dist/lib/utils/config.d.ts.map +1 -1
  71. package/dist/lib/utils/config.js +86 -0
  72. package/dist/lib/utils/config.js.map +1 -1
  73. package/dist/lib/utils/secrets.d.ts +174 -0
  74. package/dist/lib/utils/secrets.d.ts.map +1 -0
  75. package/dist/lib/utils/secrets.js +351 -0
  76. package/dist/lib/utils/secrets.js.map +1 -0
  77. package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
  78. package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
  79. package/dist/lib/xdg-cli-wrapper.js +288 -0
  80. package/dist/lib/xdg-cli-wrapper.js.map +1 -0
  81. package/dist/lib/xdg-config.d.ts +187 -0
  82. package/dist/lib/xdg-config.d.ts.map +1 -0
  83. package/dist/lib/xdg-config.js +562 -0
  84. package/dist/lib/xdg-config.js.map +1 -0
  85. package/dist/package.json +33 -25
  86. package/dist/scripts/config-health-check.d.ts +78 -0
  87. package/dist/scripts/config-health-check.d.ts.map +1 -0
  88. package/dist/scripts/config-health-check.js +559 -0
  89. package/dist/scripts/config-health-check.js.map +1 -0
  90. package/dist/scripts/infer-quilt-config.d.ts +50 -0
  91. package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
  92. package/dist/scripts/infer-quilt-config.js +353 -0
  93. package/dist/scripts/infer-quilt-config.js.map +1 -0
  94. package/dist/scripts/install-wizard.d.ts +34 -0
  95. package/dist/scripts/install-wizard.d.ts.map +1 -0
  96. package/dist/scripts/install-wizard.js +719 -0
  97. package/dist/scripts/install-wizard.js.map +1 -0
  98. package/dist/scripts/sync-secrets.d.ts +63 -0
  99. package/dist/scripts/sync-secrets.d.ts.map +1 -0
  100. package/dist/scripts/sync-secrets.js +424 -0
  101. package/dist/scripts/sync-secrets.js.map +1 -0
  102. package/env.template +60 -47
  103. package/package.json +33 -25
@@ -0,0 +1,559 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Configuration Health Checks
5
+ *
6
+ * Validates:
7
+ * - XDG configuration integrity
8
+ * - Secrets accessibility
9
+ * - Benchling credential freshness
10
+ * - AWS resource connectivity
11
+ *
12
+ * @module scripts/config-health-check
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.ConfigHealthChecker = void 0;
49
+ const xdg_config_1 = require("../lib/xdg-config");
50
+ const fs_1 = require("fs");
51
+ const sync_secrets_1 = require("./sync-secrets");
52
+ const config_logger_1 = require("../lib/config-logger");
53
+ const https = __importStar(require("https"));
54
+ /**
55
+ * Configuration health checker
56
+ */
57
+ class ConfigHealthChecker {
58
+ constructor(profile = "default") {
59
+ this.logger = new config_logger_1.ConfigLogger({ minLogLevel: config_logger_1.LogLevel.INFO });
60
+ this.xdgConfig = new xdg_config_1.XDGConfig();
61
+ this.profile = profile;
62
+ }
63
+ /**
64
+ * Checks XDG configuration file integrity
65
+ *
66
+ * @returns Health check result
67
+ */
68
+ async checkXDGIntegrity() {
69
+ try {
70
+ const paths = this.xdgConfig.getProfilePaths(this.profile);
71
+ // Check if profile directory exists
72
+ const profileDir = this.xdgConfig.getProfileDir(this.profile);
73
+ if (!(0, fs_1.existsSync)(profileDir)) {
74
+ return {
75
+ check: "xdg-integrity",
76
+ status: "fail",
77
+ message: "Profile directory does not exist",
78
+ details: {
79
+ profileDir,
80
+ profile: this.profile,
81
+ },
82
+ };
83
+ }
84
+ // Check for configuration files
85
+ const files = {
86
+ userConfig: (0, fs_1.existsSync)(paths.userConfig),
87
+ derivedConfig: (0, fs_1.existsSync)(paths.derivedConfig),
88
+ deployConfig: (0, fs_1.existsSync)(paths.deployConfig),
89
+ };
90
+ // At least user or derived config should exist
91
+ if (!files.userConfig && !files.derivedConfig) {
92
+ return {
93
+ check: "xdg-integrity",
94
+ status: "warn",
95
+ message: "No configuration files found",
96
+ details: {
97
+ ...files,
98
+ profile: this.profile,
99
+ },
100
+ };
101
+ }
102
+ // Try to read and validate existing configs
103
+ if (files.userConfig) {
104
+ try {
105
+ this.xdgConfig.readProfileConfig("user", this.profile);
106
+ }
107
+ catch (error) {
108
+ return {
109
+ check: "xdg-integrity",
110
+ status: "fail",
111
+ message: `User config validation failed: ${error.message}`,
112
+ details: {
113
+ profile: this.profile,
114
+ error: error.message,
115
+ },
116
+ };
117
+ }
118
+ }
119
+ if (files.derivedConfig) {
120
+ try {
121
+ this.xdgConfig.readProfileConfig("derived", this.profile);
122
+ }
123
+ catch (error) {
124
+ return {
125
+ check: "xdg-integrity",
126
+ status: "fail",
127
+ message: `Derived config validation failed: ${error.message}`,
128
+ details: {
129
+ profile: this.profile,
130
+ error: error.message,
131
+ },
132
+ };
133
+ }
134
+ }
135
+ return {
136
+ check: "xdg-integrity",
137
+ status: "pass",
138
+ message: "XDG configuration integrity verified",
139
+ details: {
140
+ ...files,
141
+ profile: this.profile,
142
+ },
143
+ };
144
+ }
145
+ catch (error) {
146
+ return {
147
+ check: "xdg-integrity",
148
+ status: "fail",
149
+ message: `Integrity check failed: ${error.message}`,
150
+ details: {
151
+ error: error.message,
152
+ },
153
+ };
154
+ }
155
+ }
156
+ /**
157
+ * Checks AWS Secrets Manager accessibility
158
+ *
159
+ * @returns Health check result
160
+ */
161
+ async checkSecretsAccess() {
162
+ try {
163
+ // Load derived config to get secret ARN
164
+ const derivedConfig = this.xdgConfig.readProfileConfig("derived", this.profile);
165
+ if (!derivedConfig.benchlingSecretArn) {
166
+ return {
167
+ check: "secrets-access",
168
+ status: "warn",
169
+ message: "No secrets configured",
170
+ details: {
171
+ profile: this.profile,
172
+ recommendation: "Run sync-secrets to configure AWS Secrets Manager",
173
+ },
174
+ };
175
+ }
176
+ // Validate secrets accessibility
177
+ const isAccessible = await (0, sync_secrets_1.validateSecretsAccess)({
178
+ profile: this.profile,
179
+ region: derivedConfig.cdkRegion || "us-east-1",
180
+ awsProfile: derivedConfig.awsProfile,
181
+ });
182
+ if (isAccessible) {
183
+ return {
184
+ check: "secrets-access",
185
+ status: "pass",
186
+ message: "Secrets accessible",
187
+ details: {
188
+ secretArn: derivedConfig.benchlingSecretArn,
189
+ profile: this.profile,
190
+ },
191
+ };
192
+ }
193
+ else {
194
+ return {
195
+ check: "secrets-access",
196
+ status: "fail",
197
+ message: "Secrets not accessible",
198
+ details: {
199
+ secretArn: derivedConfig.benchlingSecretArn,
200
+ profile: this.profile,
201
+ recommendation: "Check AWS credentials and IAM permissions",
202
+ },
203
+ };
204
+ }
205
+ }
206
+ catch (error) {
207
+ return {
208
+ check: "secrets-access",
209
+ status: "fail",
210
+ message: `Secrets access check failed: ${error.message}`,
211
+ details: {
212
+ error: error.message,
213
+ },
214
+ };
215
+ }
216
+ }
217
+ /**
218
+ * Checks Benchling credential freshness
219
+ *
220
+ * @returns Health check result
221
+ */
222
+ async checkBenchlingCredentials() {
223
+ try {
224
+ const userConfig = this.xdgConfig.readProfileConfig("user", this.profile);
225
+ if (!userConfig.benchlingTenant) {
226
+ return {
227
+ check: "benchling-credentials",
228
+ status: "warn",
229
+ message: "No Benchling tenant configured",
230
+ details: {
231
+ profile: this.profile,
232
+ },
233
+ };
234
+ }
235
+ // Check tenant accessibility
236
+ const tenantUrl = `https://${userConfig.benchlingTenant}.benchling.com`;
237
+ return new Promise((resolve) => {
238
+ https
239
+ .get(tenantUrl, { timeout: 5000 }, (res) => {
240
+ if (res.statusCode === 200 || res.statusCode === 302 || res.statusCode === 301) {
241
+ resolve({
242
+ check: "benchling-credentials",
243
+ status: "pass",
244
+ message: "Benchling tenant accessible",
245
+ details: {
246
+ tenant: userConfig.benchlingTenant,
247
+ tenantUrl,
248
+ },
249
+ });
250
+ }
251
+ else {
252
+ resolve({
253
+ check: "benchling-credentials",
254
+ status: "warn",
255
+ message: `Tenant returned status ${res.statusCode}`,
256
+ details: {
257
+ tenant: userConfig.benchlingTenant,
258
+ statusCode: res.statusCode,
259
+ },
260
+ });
261
+ }
262
+ })
263
+ .on("error", (error) => {
264
+ resolve({
265
+ check: "benchling-credentials",
266
+ status: "fail",
267
+ message: `Tenant not accessible: ${error.message}`,
268
+ details: {
269
+ tenant: userConfig.benchlingTenant,
270
+ error: error.message,
271
+ },
272
+ });
273
+ });
274
+ });
275
+ }
276
+ catch (error) {
277
+ return {
278
+ check: "benchling-credentials",
279
+ status: "fail",
280
+ message: `Credential check failed: ${error.message}`,
281
+ details: {
282
+ error: error.message,
283
+ },
284
+ };
285
+ }
286
+ }
287
+ /**
288
+ * Checks Quilt catalog connectivity
289
+ *
290
+ * @returns Health check result
291
+ */
292
+ async checkQuiltCatalog() {
293
+ try {
294
+ const userConfig = this.xdgConfig.readProfileConfig("user", this.profile);
295
+ const catalogUrl = userConfig.quiltCatalog || userConfig.quiltCatalog;
296
+ if (!catalogUrl) {
297
+ return {
298
+ check: "quilt-catalog",
299
+ status: "warn",
300
+ message: "No Quilt catalog configured",
301
+ details: {
302
+ profile: this.profile,
303
+ recommendation: "Run infer-quilt-config or install-wizard",
304
+ },
305
+ };
306
+ }
307
+ // Test catalog API endpoint
308
+ const apiUrl = `${catalogUrl}/api/config`;
309
+ return new Promise((resolve) => {
310
+ https
311
+ .get(apiUrl, { timeout: 5000 }, (res) => {
312
+ if (res.statusCode === 200) {
313
+ resolve({
314
+ check: "quilt-catalog",
315
+ status: "pass",
316
+ message: "Quilt catalog accessible",
317
+ details: {
318
+ catalogUrl,
319
+ apiUrl,
320
+ },
321
+ });
322
+ }
323
+ else {
324
+ resolve({
325
+ check: "quilt-catalog",
326
+ status: "warn",
327
+ message: `Catalog API returned status ${res.statusCode}`,
328
+ details: {
329
+ catalogUrl,
330
+ statusCode: res.statusCode,
331
+ },
332
+ });
333
+ }
334
+ })
335
+ .on("error", (error) => {
336
+ resolve({
337
+ check: "quilt-catalog",
338
+ status: "fail",
339
+ message: `Catalog not accessible: ${error.message}`,
340
+ details: {
341
+ catalogUrl,
342
+ error: error.message,
343
+ },
344
+ });
345
+ });
346
+ });
347
+ }
348
+ catch (error) {
349
+ return {
350
+ check: "quilt-catalog",
351
+ status: "fail",
352
+ message: `Catalog check failed: ${error.message}`,
353
+ details: {
354
+ error: error.message,
355
+ },
356
+ };
357
+ }
358
+ }
359
+ /**
360
+ * Checks deployment configuration
361
+ *
362
+ * @returns Health check result
363
+ */
364
+ async checkDeploymentConfig() {
365
+ try {
366
+ const paths = this.xdgConfig.getProfilePaths(this.profile);
367
+ if (!(0, fs_1.existsSync)(paths.deployConfig)) {
368
+ return {
369
+ check: "deployment-config",
370
+ status: "warn",
371
+ message: "No deployment configuration found",
372
+ details: {
373
+ profile: this.profile,
374
+ recommendation: "Deploy the stack to generate deployment configuration",
375
+ },
376
+ };
377
+ }
378
+ const deployConfig = this.xdgConfig.readProfileConfig("deploy", this.profile);
379
+ // Check for webhook endpoint
380
+ if (!deployConfig.webhookEndpoint && !deployConfig.webhookUrl) {
381
+ return {
382
+ check: "deployment-config",
383
+ status: "warn",
384
+ message: "Webhook endpoint not configured",
385
+ details: {
386
+ profile: this.profile,
387
+ },
388
+ };
389
+ }
390
+ // Check deployment age
391
+ if (deployConfig.deployedAt) {
392
+ const deployedDate = new Date(deployConfig.deployedAt);
393
+ const ageInDays = (Date.now() - deployedDate.getTime()) / (1000 * 60 * 60 * 24);
394
+ if (ageInDays > 30) {
395
+ return {
396
+ check: "deployment-config",
397
+ status: "warn",
398
+ message: `Deployment is ${Math.floor(ageInDays)} days old`,
399
+ details: {
400
+ deployedAt: deployConfig.deployedAt,
401
+ ageInDays: Math.floor(ageInDays),
402
+ recommendation: "Consider updating deployment",
403
+ },
404
+ };
405
+ }
406
+ }
407
+ return {
408
+ check: "deployment-config",
409
+ status: "pass",
410
+ message: "Deployment configuration valid",
411
+ details: {
412
+ webhookEndpoint: deployConfig.webhookEndpoint || deployConfig.webhookUrl,
413
+ deployedAt: deployConfig.deployedAt,
414
+ stackArn: deployConfig.stackArn,
415
+ },
416
+ };
417
+ }
418
+ catch (error) {
419
+ return {
420
+ check: "deployment-config",
421
+ status: "fail",
422
+ message: `Deployment check failed: ${error.message}`,
423
+ details: {
424
+ error: error.message,
425
+ },
426
+ };
427
+ }
428
+ }
429
+ /**
430
+ * Runs all health checks
431
+ *
432
+ * @returns Complete health status
433
+ */
434
+ async runAllChecks() {
435
+ this.logger.info("health-check", `Running health checks for profile: ${this.profile}`);
436
+ const checks = [];
437
+ // Run all checks in parallel
438
+ const results = await Promise.all([
439
+ this.checkXDGIntegrity(),
440
+ this.checkSecretsAccess(),
441
+ this.checkBenchlingCredentials(),
442
+ this.checkQuiltCatalog(),
443
+ this.checkDeploymentConfig(),
444
+ ]);
445
+ checks.push(...results);
446
+ // Determine overall status
447
+ const failCount = checks.filter((c) => c.status === "fail").length;
448
+ const warnCount = checks.filter((c) => c.status === "warn").length;
449
+ let overall;
450
+ if (failCount > 0) {
451
+ overall = "unhealthy";
452
+ }
453
+ else if (warnCount > 0) {
454
+ overall = "degraded";
455
+ }
456
+ else {
457
+ overall = "healthy";
458
+ }
459
+ const status = {
460
+ overall,
461
+ checks,
462
+ timestamp: new Date().toISOString(),
463
+ profile: this.profile,
464
+ };
465
+ this.logger.info("health-check", `Health check completed: ${overall}`, {
466
+ failCount,
467
+ warnCount,
468
+ passCount: checks.filter((c) => c.status === "pass").length,
469
+ });
470
+ return status;
471
+ }
472
+ }
473
+ exports.ConfigHealthChecker = ConfigHealthChecker;
474
+ /**
475
+ * Formats health status for console output
476
+ *
477
+ * @param status - Health status
478
+ * @returns Formatted string
479
+ */
480
+ function formatHealthStatus(status) {
481
+ const lines = [];
482
+ lines.push("╔═══════════════════════════════════════════════════════════╗");
483
+ lines.push("║ Configuration Health Check ║");
484
+ lines.push("╚═══════════════════════════════════════════════════════════╝");
485
+ lines.push("");
486
+ lines.push(`Profile: ${status.profile}`);
487
+ lines.push(`Timestamp: ${status.timestamp}`);
488
+ lines.push(`Overall Status: ${status.overall.toUpperCase()}`);
489
+ lines.push("");
490
+ lines.push("Checks:");
491
+ for (const check of status.checks) {
492
+ const icon = check.status === "pass" ? "✓" : check.status === "warn" ? "⚠" : "❌";
493
+ lines.push(` ${icon} ${check.check}: ${check.message}`);
494
+ if (check.details) {
495
+ Object.entries(check.details).forEach(([key, value]) => {
496
+ if (key !== "error" && key !== "recommendation") {
497
+ lines.push(` ${key}: ${value}`);
498
+ }
499
+ });
500
+ if (check.details.recommendation) {
501
+ lines.push(` → ${check.details.recommendation}`);
502
+ }
503
+ }
504
+ lines.push("");
505
+ }
506
+ return lines.join("\n");
507
+ }
508
+ /**
509
+ * Main execution for CLI usage
510
+ */
511
+ async function main() {
512
+ const args = process.argv.slice(2);
513
+ let profile = "default";
514
+ let outputFormat = "text";
515
+ // Parse arguments
516
+ for (let i = 0; i < args.length; i++) {
517
+ if (args[i] === "--profile" && i + 1 < args.length) {
518
+ profile = args[i + 1];
519
+ i++;
520
+ }
521
+ else if (args[i] === "--json") {
522
+ outputFormat = "json";
523
+ }
524
+ else if (args[i] === "--help") {
525
+ console.log("Usage: config-health-check [options]");
526
+ console.log("\nOptions:");
527
+ console.log(" --profile <name> Configuration profile (default: default)");
528
+ console.log(" --json Output in JSON format");
529
+ console.log(" --help Show this help message");
530
+ process.exit(0);
531
+ }
532
+ }
533
+ const checker = new ConfigHealthChecker(profile);
534
+ const status = await checker.runAllChecks();
535
+ if (outputFormat === "json") {
536
+ console.log(JSON.stringify(status, null, 2));
537
+ }
538
+ else {
539
+ console.log(formatHealthStatus(status));
540
+ }
541
+ // Exit with appropriate code
542
+ if (status.overall === "unhealthy") {
543
+ process.exit(1);
544
+ }
545
+ else if (status.overall === "degraded") {
546
+ process.exit(2);
547
+ }
548
+ else {
549
+ process.exit(0);
550
+ }
551
+ }
552
+ // Run main if executed directly
553
+ if (require.main === module) {
554
+ main().catch((error) => {
555
+ console.error("Error:", error.message);
556
+ process.exit(1);
557
+ });
558
+ }
559
+ //# sourceMappingURL=config-health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-health-check.js","sourceRoot":"","sources":["../../scripts/config-health-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Quilt Catalog Auto-Inference
4
+ *
5
+ * Automatically infers Quilt catalog configuration from:
6
+ * 1. quilt3 CLI command (`quilt3 config`)
7
+ * 2. AWS CloudFormation stack inspection
8
+ * 3. Interactive catalog selection (if multiple catalogs available)
9
+ *
10
+ * @module scripts/infer-quilt-config
11
+ */
12
+ import { DerivedConfig } from "../lib/types/config";
13
+ /**
14
+ * Result of Quilt configuration inference
15
+ */
16
+ interface InferenceResult {
17
+ catalogUrl?: string;
18
+ quiltUserBucket?: string;
19
+ quiltDatabase?: string;
20
+ quiltStackArn?: string;
21
+ quiltRegion?: string;
22
+ queueArn?: string;
23
+ registryUrl?: string;
24
+ source: string;
25
+ }
26
+ /**
27
+ * Infers Quilt configuration from multiple sources
28
+ *
29
+ * Priority order:
30
+ * 1. quilt3 CLI command (`quilt3 config`)
31
+ * 2. CloudFormation stack inspection
32
+ * 3. Interactive selection if multiple options
33
+ *
34
+ * @param options - Inference options
35
+ * @returns Inferred configuration
36
+ */
37
+ export declare function inferQuiltConfig(options: {
38
+ region?: string;
39
+ profile?: string;
40
+ interactive?: boolean;
41
+ }): Promise<InferenceResult>;
42
+ /**
43
+ * Converts inference result to DerivedConfig
44
+ *
45
+ * @param result - Inference result
46
+ * @returns DerivedConfig object
47
+ */
48
+ export declare function inferenceResultToDerivedConfig(result: InferenceResult): DerivedConfig;
49
+ export {};
50
+ //# sourceMappingURL=infer-quilt-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-quilt-config.d.ts","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAsBpD;;GAEG;AACH,UAAU,eAAe;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAClB;AA4ID;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,CAAC,CA2F3B;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAgCrF"}