@quiltdata/benchling-webhook 0.6.3-20251104T182406Z → 0.7.2-20251106T003353Z

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 (141) hide show
  1. package/README.md +166 -5
  2. package/dist/bin/benchling-webhook.d.ts +2 -16
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +98 -158
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cli.js +96 -8
  7. package/dist/bin/cli.js.map +1 -1
  8. package/dist/bin/{config-profiles.d.ts → commands/config-profiles.d.ts} +10 -9
  9. package/dist/bin/commands/config-profiles.d.ts.map +1 -0
  10. package/dist/bin/{config-profiles.js → commands/config-profiles.js} +110 -102
  11. package/dist/bin/commands/config-profiles.js.map +1 -0
  12. package/dist/bin/commands/create-secret.d.ts.map +1 -0
  13. package/dist/bin/commands/create-secret.js.map +1 -0
  14. package/dist/bin/commands/deploy.d.ts +11 -0
  15. package/dist/bin/commands/deploy.d.ts.map +1 -1
  16. package/dist/bin/commands/deploy.js +64 -109
  17. package/dist/bin/commands/deploy.js.map +1 -1
  18. package/dist/bin/{get-env.d.ts → commands/get-env.d.ts} +1 -1
  19. package/dist/bin/commands/get-env.d.ts.map +1 -0
  20. package/dist/bin/{get-env.js → commands/get-env.js} +2 -2
  21. package/dist/bin/commands/get-env.js.map +1 -0
  22. package/dist/bin/commands/health-check.d.ts +47 -0
  23. package/dist/bin/commands/health-check.d.ts.map +1 -0
  24. package/dist/bin/commands/health-check.js +357 -0
  25. package/dist/bin/commands/health-check.js.map +1 -0
  26. package/dist/bin/commands/infer-quilt-config.d.ts +50 -0
  27. package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -0
  28. package/dist/bin/commands/infer-quilt-config.js +356 -0
  29. package/dist/bin/commands/infer-quilt-config.js.map +1 -0
  30. package/dist/bin/commands/init.d.ts.map +1 -1
  31. package/dist/bin/commands/init.js +2 -32
  32. package/dist/bin/commands/init.js.map +1 -1
  33. package/dist/bin/commands/manifest.d.ts +11 -0
  34. package/dist/bin/commands/manifest.d.ts.map +1 -1
  35. package/dist/bin/commands/manifest.js +22 -8
  36. package/dist/bin/commands/manifest.js.map +1 -1
  37. package/dist/bin/commands/publish.d.ts.map +1 -0
  38. package/dist/bin/{publish.js → commands/publish.js} +2 -2
  39. package/dist/bin/commands/publish.js.map +1 -0
  40. package/dist/bin/commands/setup-profile.d.ts +29 -0
  41. package/dist/bin/commands/setup-profile.d.ts.map +1 -0
  42. package/dist/bin/commands/setup-profile.js +220 -0
  43. package/dist/bin/commands/setup-profile.js.map +1 -0
  44. package/dist/bin/commands/setup-wizard.d.ts +26 -11
  45. package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
  46. package/dist/bin/commands/setup-wizard.js +844 -46
  47. package/dist/bin/commands/setup-wizard.js.map +1 -1
  48. package/dist/{scripts → bin/commands}/sync-secrets.d.ts +6 -1
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/{scripts → bin/commands}/sync-secrets.js +159 -55
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/commands/validate.d.ts.map +1 -1
  53. package/dist/bin/commands/validate.js +2 -12
  54. package/dist/bin/commands/validate.js.map +1 -1
  55. package/dist/lib/alb-api-gateway.d.ts +7 -1
  56. package/dist/lib/alb-api-gateway.d.ts.map +1 -1
  57. package/dist/lib/alb-api-gateway.js +9 -6
  58. package/dist/lib/alb-api-gateway.js.map +1 -1
  59. package/dist/lib/benchling-webhook-stack.d.ts +13 -12
  60. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  61. package/dist/lib/benchling-webhook-stack.js +43 -30
  62. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  63. package/dist/lib/configuration-saver.d.ts +4 -16
  64. package/dist/lib/configuration-saver.d.ts.map +1 -1
  65. package/dist/lib/configuration-saver.js +14 -54
  66. package/dist/lib/configuration-saver.js.map +1 -1
  67. package/dist/lib/fargate-service.d.ts +11 -21
  68. package/dist/lib/fargate-service.d.ts.map +1 -1
  69. package/dist/lib/fargate-service.js +79 -176
  70. package/dist/lib/fargate-service.js.map +1 -1
  71. package/dist/lib/types/config.d.ts +591 -224
  72. package/dist/lib/types/config.d.ts.map +1 -1
  73. package/dist/lib/types/config.js +134 -3
  74. package/dist/lib/types/config.js.map +1 -1
  75. package/dist/lib/utils/config.d.ts.map +1 -1
  76. package/dist/lib/utils/config.js.map +1 -1
  77. package/dist/lib/xdg-config.d.ts +222 -106
  78. package/dist/lib/xdg-config.d.ts.map +1 -1
  79. package/dist/lib/xdg-config.js +448 -387
  80. package/dist/lib/xdg-config.js.map +1 -1
  81. package/dist/package.json +16 -13
  82. package/dist/scripts/check-logs.d.ts +12 -0
  83. package/dist/scripts/check-logs.d.ts.map +1 -0
  84. package/dist/{bin → scripts}/check-logs.js +65 -15
  85. package/dist/scripts/check-logs.js.map +1 -0
  86. package/dist/scripts/check-webhook-verification.d.ts +3 -0
  87. package/dist/scripts/check-webhook-verification.d.ts.map +1 -0
  88. package/dist/{bin/test-invalid-signature.js → scripts/check-webhook-verification.js} +1 -1
  89. package/dist/scripts/check-webhook-verification.js.map +1 -0
  90. package/dist/scripts/infer-quilt-config.d.ts +23 -26
  91. package/dist/scripts/infer-quilt-config.d.ts.map +1 -1
  92. package/dist/scripts/infer-quilt-config.js +58 -96
  93. package/dist/scripts/infer-quilt-config.js.map +1 -1
  94. package/dist/scripts/send-event.d.ts.map +1 -0
  95. package/dist/scripts/send-event.js.map +1 -0
  96. package/dist/{bin → scripts}/version.d.ts +3 -1
  97. package/dist/scripts/version.d.ts.map +1 -0
  98. package/dist/{bin → scripts}/version.js +95 -9
  99. package/dist/scripts/version.js.map +1 -0
  100. package/package.json +16 -13
  101. package/dist/bin/check-logs.d.ts +0 -7
  102. package/dist/bin/check-logs.d.ts.map +0 -1
  103. package/dist/bin/check-logs.js.map +0 -1
  104. package/dist/bin/config-profiles.d.ts.map +0 -1
  105. package/dist/bin/config-profiles.js.map +0 -1
  106. package/dist/bin/create-secret.d.ts.map +0 -1
  107. package/dist/bin/create-secret.js.map +0 -1
  108. package/dist/bin/dev-deploy.d.ts +0 -20
  109. package/dist/bin/dev-deploy.d.ts.map +0 -1
  110. package/dist/bin/dev-deploy.js +0 -289
  111. package/dist/bin/dev-deploy.js.map +0 -1
  112. package/dist/bin/get-env.d.ts.map +0 -1
  113. package/dist/bin/get-env.js.map +0 -1
  114. package/dist/bin/publish.d.ts.map +0 -1
  115. package/dist/bin/publish.js.map +0 -1
  116. package/dist/bin/release.d.ts +0 -11
  117. package/dist/bin/release.d.ts.map +0 -1
  118. package/dist/bin/release.js +0 -141
  119. package/dist/bin/release.js.map +0 -1
  120. package/dist/bin/send-event.d.ts.map +0 -1
  121. package/dist/bin/send-event.js.map +0 -1
  122. package/dist/bin/test-invalid-signature.d.ts +0 -3
  123. package/dist/bin/test-invalid-signature.d.ts.map +0 -1
  124. package/dist/bin/test-invalid-signature.js.map +0 -1
  125. package/dist/bin/version.d.ts.map +0 -1
  126. package/dist/bin/version.js.map +0 -1
  127. package/dist/scripts/config-health-check.d.ts +0 -84
  128. package/dist/scripts/config-health-check.d.ts.map +0 -1
  129. package/dist/scripts/config-health-check.js +0 -659
  130. package/dist/scripts/config-health-check.js.map +0 -1
  131. package/dist/scripts/install-wizard.d.ts +0 -34
  132. package/dist/scripts/install-wizard.d.ts.map +0 -1
  133. package/dist/scripts/install-wizard.js +0 -719
  134. package/dist/scripts/install-wizard.js.map +0 -1
  135. package/dist/scripts/sync-secrets.d.ts.map +0 -1
  136. package/dist/scripts/sync-secrets.js.map +0 -1
  137. /package/dist/bin/{create-secret.d.ts → commands/create-secret.d.ts} +0 -0
  138. /package/dist/bin/{create-secret.js → commands/create-secret.js} +0 -0
  139. /package/dist/bin/{publish.d.ts → commands/publish.d.ts} +0 -0
  140. /package/dist/{bin → scripts}/send-event.d.ts +0 -0
  141. /package/dist/{bin → scripts}/send-event.js +0 -0
@@ -0,0 +1,357 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Configuration Health Check Command
5
+ *
6
+ * Post-setup validation that checks:
7
+ * - Configuration file integrity
8
+ * - Secrets synchronization status
9
+ * - Deployment configuration
10
+ *
11
+ * @module commands/health-check
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.runHealthChecks = runHealthChecks;
51
+ exports.healthCheckCommand = healthCheckCommand;
52
+ const xdg_config_1 = require("../../lib/xdg-config");
53
+ const fs_1 = require("fs");
54
+ const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
55
+ const chalk_1 = __importDefault(require("chalk"));
56
+ const path_1 = require("path");
57
+ /**
58
+ * Checks XDG configuration file integrity
59
+ */
60
+ async function checkXDGIntegrity(xdgConfig, profile) {
61
+ try {
62
+ // Check if profile exists
63
+ if (!xdgConfig.profileExists(profile)) {
64
+ return {
65
+ check: "xdg-integrity",
66
+ status: "fail",
67
+ message: "Profile does not exist",
68
+ details: { profile, recommendation: "Run setup wizard to create configuration" },
69
+ };
70
+ }
71
+ // Try to read and validate profile config
72
+ try {
73
+ const config = xdgConfig.readProfile(profile);
74
+ // Validate required fields
75
+ if (!config.quilt || !config.benchling || !config.packages || !config.deployment) {
76
+ return {
77
+ check: "xdg-integrity",
78
+ status: "fail",
79
+ message: "Configuration is missing required sections",
80
+ details: { profile },
81
+ };
82
+ }
83
+ return {
84
+ check: "xdg-integrity",
85
+ status: "pass",
86
+ message: "XDG configuration integrity verified",
87
+ details: { profile },
88
+ };
89
+ }
90
+ catch (error) {
91
+ return {
92
+ check: "xdg-integrity",
93
+ status: "fail",
94
+ message: `Configuration validation failed: ${error.message}`,
95
+ details: { profile, error: error.message },
96
+ };
97
+ }
98
+ }
99
+ catch (error) {
100
+ return {
101
+ check: "xdg-integrity",
102
+ status: "fail",
103
+ message: `Integrity check failed: ${error.message}`,
104
+ details: { error: error.message },
105
+ };
106
+ }
107
+ }
108
+ /**
109
+ * Checks if local config and remote secrets are in sync
110
+ */
111
+ async function checkSecretsSync(xdgConfig, profile) {
112
+ try {
113
+ // Check if profile exists
114
+ if (!xdgConfig.profileExists(profile)) {
115
+ return {
116
+ check: "secrets-sync",
117
+ status: "warn",
118
+ message: "No configuration found",
119
+ details: { profile, recommendation: "Run setup wizard first" },
120
+ };
121
+ }
122
+ // Load profile config
123
+ const config = xdgConfig.readProfile(profile);
124
+ if (!config.benchling.secretArn) {
125
+ return {
126
+ check: "secrets-sync",
127
+ status: "warn",
128
+ message: "No secrets configured",
129
+ details: { profile, recommendation: "Run 'benchling-webhook sync-secrets' to sync secrets" },
130
+ };
131
+ }
132
+ // Get local config modification time
133
+ const configPath = (0, path_1.join)(xdgConfig["baseDir"], profile, "config.json");
134
+ const configStats = (0, fs_1.statSync)(configPath);
135
+ const localModifiedAt = configStats.mtime;
136
+ // Get remote secret modification time
137
+ const region = config.deployment.region;
138
+ const clientConfig = { region };
139
+ // If AWS profile is configured, use it
140
+ if (process.env.AWS_PROFILE) {
141
+ const { fromIni } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
142
+ clientConfig.credentials = fromIni({ profile: process.env.AWS_PROFILE });
143
+ }
144
+ const client = new client_secrets_manager_1.SecretsManagerClient(clientConfig);
145
+ const command = new client_secrets_manager_1.DescribeSecretCommand({ SecretId: config.benchling.secretArn });
146
+ const secretMetadata = await client.send(command);
147
+ if (!secretMetadata.LastChangedDate) {
148
+ return {
149
+ check: "secrets-sync",
150
+ status: "warn",
151
+ message: "Cannot determine secret modification time",
152
+ details: { secretArn: config.benchling.secretArn },
153
+ };
154
+ }
155
+ const remoteModifiedAt = secretMetadata.LastChangedDate;
156
+ // Compare times (allow 1 second tolerance for filesystem precision)
157
+ const timeDiffMs = Math.abs(localModifiedAt.getTime() - remoteModifiedAt.getTime());
158
+ const timeDiffSeconds = Math.floor(timeDiffMs / 1000);
159
+ if (localModifiedAt > remoteModifiedAt && timeDiffMs > 1000) {
160
+ // Local is newer - secrets need to be synced
161
+ const ageMinutes = Math.floor(timeDiffMs / (1000 * 60));
162
+ const ageHours = Math.floor(ageMinutes / 60);
163
+ const ageDays = Math.floor(ageHours / 24);
164
+ let ageDescription;
165
+ if (ageDays > 0) {
166
+ ageDescription = `${ageDays} day${ageDays > 1 ? "s" : ""}`;
167
+ }
168
+ else if (ageHours > 0) {
169
+ ageDescription = `${ageHours} hour${ageHours > 1 ? "s" : ""}`;
170
+ }
171
+ else {
172
+ ageDescription = `${ageMinutes} minute${ageMinutes > 1 ? "s" : ""}`;
173
+ }
174
+ return {
175
+ check: "secrets-sync",
176
+ status: "warn",
177
+ message: `Local config is ${ageDescription} newer than remote secrets`,
178
+ details: {
179
+ localModifiedAt: localModifiedAt.toISOString(),
180
+ remoteModifiedAt: remoteModifiedAt.toISOString(),
181
+ timeDiffSeconds,
182
+ recommendation: "Run 'benchling-webhook sync-secrets --force' to sync changes",
183
+ },
184
+ };
185
+ }
186
+ return {
187
+ check: "secrets-sync",
188
+ status: "pass",
189
+ message: "Local config and remote secrets are in sync",
190
+ details: {
191
+ localModifiedAt: localModifiedAt.toISOString(),
192
+ remoteModifiedAt: remoteModifiedAt.toISOString(),
193
+ timeDiffSeconds,
194
+ },
195
+ };
196
+ }
197
+ catch (error) {
198
+ return {
199
+ check: "secrets-sync",
200
+ status: "fail",
201
+ message: `Sync check failed: ${error.message}`,
202
+ details: { error: error.message },
203
+ };
204
+ }
205
+ }
206
+ /**
207
+ * Checks deployment configuration
208
+ */
209
+ async function checkDeploymentConfig(xdgConfig, profile) {
210
+ try {
211
+ // Check for active deployment
212
+ const deployment = xdgConfig.getActiveDeployment(profile, "prod");
213
+ if (!deployment) {
214
+ return {
215
+ check: "deployment-config",
216
+ status: "warn",
217
+ message: "No deployment found",
218
+ details: {
219
+ profile,
220
+ recommendation: "Run 'benchling-webhook deploy' to deploy the stack",
221
+ },
222
+ };
223
+ }
224
+ // Check for webhook endpoint
225
+ if (!deployment.endpoint) {
226
+ return {
227
+ check: "deployment-config",
228
+ status: "warn",
229
+ message: "Webhook endpoint not configured",
230
+ details: { profile },
231
+ };
232
+ }
233
+ // Check deployment age
234
+ const deployedDate = new Date(deployment.timestamp);
235
+ const ageInDays = (Date.now() - deployedDate.getTime()) / (1000 * 60 * 60 * 24);
236
+ if (ageInDays > 30) {
237
+ return {
238
+ check: "deployment-config",
239
+ status: "warn",
240
+ message: `Deployment is ${Math.floor(ageInDays)} days old`,
241
+ details: {
242
+ deployedAt: deployment.timestamp,
243
+ ageInDays: Math.floor(ageInDays),
244
+ recommendation: "Consider updating deployment",
245
+ },
246
+ };
247
+ }
248
+ return {
249
+ check: "deployment-config",
250
+ status: "pass",
251
+ message: "Deployment configuration valid",
252
+ details: {
253
+ endpoint: deployment.endpoint,
254
+ deployedAt: deployment.timestamp,
255
+ stackName: deployment.stackName,
256
+ region: deployment.region,
257
+ },
258
+ };
259
+ }
260
+ catch (error) {
261
+ return {
262
+ check: "deployment-config",
263
+ status: "fail",
264
+ message: `Deployment check failed: ${error.message}`,
265
+ details: { error: error.message },
266
+ };
267
+ }
268
+ }
269
+ /**
270
+ * Runs all health checks
271
+ */
272
+ async function runHealthChecks(profile = "default") {
273
+ const xdgConfig = new xdg_config_1.XDGConfig();
274
+ const checks = [];
275
+ // Run all checks in parallel
276
+ const results = await Promise.all([
277
+ checkXDGIntegrity(xdgConfig, profile),
278
+ checkSecretsSync(xdgConfig, profile),
279
+ checkDeploymentConfig(xdgConfig, profile),
280
+ ]);
281
+ checks.push(...results);
282
+ // Determine overall status
283
+ const failCount = checks.filter((c) => c.status === "fail").length;
284
+ const warnCount = checks.filter((c) => c.status === "warn").length;
285
+ let overall;
286
+ if (failCount > 0) {
287
+ overall = "unhealthy";
288
+ }
289
+ else if (warnCount > 0) {
290
+ overall = "degraded";
291
+ }
292
+ else {
293
+ overall = "healthy";
294
+ }
295
+ return {
296
+ overall,
297
+ checks,
298
+ timestamp: new Date().toISOString(),
299
+ profile,
300
+ };
301
+ }
302
+ /**
303
+ * Formats health status for console output
304
+ */
305
+ function formatHealthStatus(status) {
306
+ const lines = [];
307
+ lines.push("╔═══════════════════════════════════════════════════════════╗");
308
+ lines.push("║ Configuration Health Check ║");
309
+ lines.push("╚═══════════════════════════════════════════════════════════╝");
310
+ lines.push("");
311
+ lines.push(`Profile: ${status.profile}`);
312
+ lines.push(`Timestamp: ${status.timestamp}`);
313
+ const overallColor = status.overall === "healthy" ? chalk_1.default.green : status.overall === "degraded" ? chalk_1.default.yellow : chalk_1.default.red;
314
+ lines.push(`Overall Status: ${overallColor(status.overall.toUpperCase())}`);
315
+ lines.push("");
316
+ lines.push("Checks:");
317
+ for (const check of status.checks) {
318
+ const icon = check.status === "pass" ? chalk_1.default.green("✓") : check.status === "warn" ? chalk_1.default.yellow("⚠") : chalk_1.default.red("❌");
319
+ lines.push(` ${icon} ${check.check}: ${check.message}`);
320
+ if (check.details) {
321
+ Object.entries(check.details).forEach(([key, value]) => {
322
+ if (key !== "error" && key !== "recommendation") {
323
+ lines.push(` ${chalk_1.default.dim(`${key}: ${value}`)}`);
324
+ }
325
+ });
326
+ if (check.details.recommendation) {
327
+ lines.push(` ${chalk_1.default.cyan(`→ ${check.details.recommendation}`)}`);
328
+ }
329
+ }
330
+ lines.push("");
331
+ }
332
+ return lines.join("\n");
333
+ }
334
+ /**
335
+ * Health check command handler
336
+ */
337
+ async function healthCheckCommand(options = {}) {
338
+ const { profile = "default", json = false } = options;
339
+ const status = await runHealthChecks(profile);
340
+ if (json) {
341
+ console.log(JSON.stringify(status, null, 2));
342
+ }
343
+ else {
344
+ console.log(formatHealthStatus(status));
345
+ }
346
+ // Exit with appropriate code
347
+ if (status.overall === "unhealthy") {
348
+ process.exit(1);
349
+ }
350
+ else if (status.overall === "degraded") {
351
+ process.exit(2);
352
+ }
353
+ else {
354
+ process.exit(0);
355
+ }
356
+ }
357
+ //# sourceMappingURL=health-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../bin/commands/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":["../../../bin/commands/infer-quilt-config.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAsBvD;;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,CA8F3B;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAgCrF"}