@quiltdata/benchling-webhook 0.6.3-20251104T182406Z → 0.7.2-20251106T010445Z
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.
- package/README.md +166 -5
- package/dist/bin/benchling-webhook.d.ts +2 -16
- package/dist/bin/benchling-webhook.d.ts.map +1 -1
- package/dist/bin/benchling-webhook.js +98 -158
- package/dist/bin/benchling-webhook.js.map +1 -1
- package/dist/bin/cli.js +96 -8
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/{config-profiles.d.ts → commands/config-profiles.d.ts} +10 -9
- package/dist/bin/commands/config-profiles.d.ts.map +1 -0
- package/dist/bin/{config-profiles.js → commands/config-profiles.js} +110 -102
- package/dist/bin/commands/config-profiles.js.map +1 -0
- package/dist/bin/commands/create-secret.d.ts.map +1 -0
- package/dist/bin/commands/create-secret.js.map +1 -0
- package/dist/bin/commands/deploy.d.ts +11 -0
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +64 -109
- package/dist/bin/commands/deploy.js.map +1 -1
- package/dist/bin/{get-env.d.ts → commands/get-env.d.ts} +1 -1
- package/dist/bin/commands/get-env.d.ts.map +1 -0
- package/dist/bin/{get-env.js → commands/get-env.js} +2 -2
- package/dist/bin/commands/get-env.js.map +1 -0
- package/dist/bin/commands/health-check.d.ts +47 -0
- package/dist/bin/commands/health-check.d.ts.map +1 -0
- package/dist/bin/commands/health-check.js +357 -0
- package/dist/bin/commands/health-check.js.map +1 -0
- package/dist/bin/commands/infer-quilt-config.d.ts +50 -0
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -0
- package/dist/bin/commands/infer-quilt-config.js +356 -0
- package/dist/bin/commands/infer-quilt-config.js.map +1 -0
- package/dist/bin/commands/init.d.ts.map +1 -1
- package/dist/bin/commands/init.js +2 -32
- package/dist/bin/commands/init.js.map +1 -1
- package/dist/bin/commands/manifest.d.ts +11 -0
- package/dist/bin/commands/manifest.d.ts.map +1 -1
- package/dist/bin/commands/manifest.js +22 -8
- package/dist/bin/commands/manifest.js.map +1 -1
- package/dist/bin/commands/publish.d.ts.map +1 -0
- package/dist/bin/{publish.js → commands/publish.js} +2 -2
- package/dist/bin/commands/publish.js.map +1 -0
- package/dist/bin/commands/setup-profile.d.ts +29 -0
- package/dist/bin/commands/setup-profile.d.ts.map +1 -0
- package/dist/bin/commands/setup-profile.js +220 -0
- package/dist/bin/commands/setup-profile.js.map +1 -0
- package/dist/bin/commands/setup-wizard.d.ts +26 -11
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +844 -46
- package/dist/bin/commands/setup-wizard.js.map +1 -1
- package/dist/{scripts → bin/commands}/sync-secrets.d.ts +6 -1
- package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
- package/dist/{scripts → bin/commands}/sync-secrets.js +159 -55
- package/dist/bin/commands/sync-secrets.js.map +1 -0
- package/dist/bin/commands/validate.d.ts.map +1 -1
- package/dist/bin/commands/validate.js +2 -12
- package/dist/bin/commands/validate.js.map +1 -1
- package/dist/lib/alb-api-gateway.d.ts +7 -1
- package/dist/lib/alb-api-gateway.d.ts.map +1 -1
- package/dist/lib/alb-api-gateway.js +9 -6
- package/dist/lib/alb-api-gateway.js.map +1 -1
- package/dist/lib/benchling-webhook-stack.d.ts +13 -12
- package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
- package/dist/lib/benchling-webhook-stack.js +43 -30
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +4 -16
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +14 -54
- package/dist/lib/configuration-saver.js.map +1 -1
- package/dist/lib/fargate-service.d.ts +11 -21
- package/dist/lib/fargate-service.d.ts.map +1 -1
- package/dist/lib/fargate-service.js +79 -176
- package/dist/lib/fargate-service.js.map +1 -1
- package/dist/lib/types/config.d.ts +591 -224
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +134 -3
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +222 -106
- package/dist/lib/xdg-config.d.ts.map +1 -1
- package/dist/lib/xdg-config.js +448 -387
- package/dist/lib/xdg-config.js.map +1 -1
- package/dist/package.json +16 -13
- package/dist/scripts/check-logs.d.ts +12 -0
- package/dist/scripts/check-logs.d.ts.map +1 -0
- package/dist/{bin → scripts}/check-logs.js +65 -15
- package/dist/scripts/check-logs.js.map +1 -0
- package/dist/scripts/check-webhook-verification.d.ts +3 -0
- package/dist/scripts/check-webhook-verification.d.ts.map +1 -0
- package/dist/{bin/test-invalid-signature.js → scripts/check-webhook-verification.js} +1 -1
- package/dist/scripts/check-webhook-verification.js.map +1 -0
- package/dist/scripts/infer-quilt-config.d.ts +23 -26
- package/dist/scripts/infer-quilt-config.d.ts.map +1 -1
- package/dist/scripts/infer-quilt-config.js +58 -96
- package/dist/scripts/infer-quilt-config.js.map +1 -1
- package/dist/scripts/send-event.d.ts.map +1 -0
- package/dist/scripts/send-event.js.map +1 -0
- package/dist/{bin → scripts}/version.d.ts +3 -1
- package/dist/scripts/version.d.ts.map +1 -0
- package/dist/{bin → scripts}/version.js +95 -9
- package/dist/scripts/version.js.map +1 -0
- package/package.json +16 -13
- package/dist/bin/check-logs.d.ts +0 -7
- package/dist/bin/check-logs.d.ts.map +0 -1
- package/dist/bin/check-logs.js.map +0 -1
- package/dist/bin/config-profiles.d.ts.map +0 -1
- package/dist/bin/config-profiles.js.map +0 -1
- package/dist/bin/create-secret.d.ts.map +0 -1
- package/dist/bin/create-secret.js.map +0 -1
- package/dist/bin/dev-deploy.d.ts +0 -20
- package/dist/bin/dev-deploy.d.ts.map +0 -1
- package/dist/bin/dev-deploy.js +0 -289
- package/dist/bin/dev-deploy.js.map +0 -1
- package/dist/bin/get-env.d.ts.map +0 -1
- package/dist/bin/get-env.js.map +0 -1
- package/dist/bin/publish.d.ts.map +0 -1
- package/dist/bin/publish.js.map +0 -1
- package/dist/bin/release.d.ts +0 -11
- package/dist/bin/release.d.ts.map +0 -1
- package/dist/bin/release.js +0 -141
- package/dist/bin/release.js.map +0 -1
- package/dist/bin/send-event.d.ts.map +0 -1
- package/dist/bin/send-event.js.map +0 -1
- package/dist/bin/test-invalid-signature.d.ts +0 -3
- package/dist/bin/test-invalid-signature.d.ts.map +0 -1
- package/dist/bin/test-invalid-signature.js.map +0 -1
- package/dist/bin/version.d.ts.map +0 -1
- package/dist/bin/version.js.map +0 -1
- package/dist/scripts/config-health-check.d.ts +0 -84
- package/dist/scripts/config-health-check.d.ts.map +0 -1
- package/dist/scripts/config-health-check.js +0 -659
- package/dist/scripts/config-health-check.js.map +0 -1
- package/dist/scripts/install-wizard.d.ts +0 -34
- package/dist/scripts/install-wizard.d.ts.map +0 -1
- package/dist/scripts/install-wizard.js +0 -719
- package/dist/scripts/install-wizard.js.map +0 -1
- package/dist/scripts/sync-secrets.d.ts.map +0 -1
- package/dist/scripts/sync-secrets.js.map +0 -1
- /package/dist/bin/{create-secret.d.ts → commands/create-secret.d.ts} +0 -0
- /package/dist/bin/{create-secret.js → commands/create-secret.js} +0 -0
- /package/dist/bin/{publish.d.ts → commands/publish.d.ts} +0 -0
- /package/dist/{bin → scripts}/send-event.d.ts +0 -0
- /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":";;AACA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+QH,0CAgCC;AA8CD,gDAmBC;AA9WD,qDAAiD;AAEjD,2BAA8B;AAC9B,4EAA8F;AAE9F,kDAA0B;AAC1B,+BAA4B;AA8B5B;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,SAAoB,EAAE,OAAoB;IACvE,IAAI,CAAC;QACD,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO;gBACH,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,0CAA0C,EAAE;aACnF,CAAC;QACN,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE9C,2BAA2B;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/E,OAAO;oBACH,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,4CAA4C;oBACrD,OAAO,EAAE,EAAE,OAAO,EAAE;iBACvB,CAAC;YACN,CAAC;YAED,OAAO;gBACH,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,sCAAsC;gBAC/C,OAAO,EAAE,EAAE,OAAO,EAAE;aACvB,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,oCAAqC,KAAe,CAAC,OAAO,EAAE;gBACvE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;aACxD,CAAC;QACN,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,2BAA4B,KAAe,CAAC,OAAO,EAAE;YAC9D,OAAO,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;SAC/C,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAoB,EAAE,OAAoB;IACtE,IAAI,CAAC;QACD,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO;gBACH,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE;aACjE,CAAC;QACN,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACH,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,uBAAuB;gBAChC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,sDAAsD,EAAE;aAC/F,CAAC;QACN,CAAC;QAED,qCAAqC;QACrC,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,IAAA,aAAQ,EAAC,UAAU,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC;QAE1C,sCAAsC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,MAAM,YAAY,GAAoE,EAAE,MAAM,EAAE,CAAC;QAEjG,uCAAuC;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,+BAA+B,GAAC,CAAC;YAClE,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,6CAAoB,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,8CAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YAClC,OAAO;gBACH,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,2CAA2C;gBACpD,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;aACrD,CAAC;QACN,CAAC;QAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,eAAe,CAAC;QAExD,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAEtD,IAAI,eAAe,GAAG,gBAAgB,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;YAC1D,6CAA6C;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAE1C,IAAI,cAAc,CAAC;YACnB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBACd,cAAc,GAAG,GAAG,OAAO,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/D,CAAC;iBAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACtB,cAAc,GAAG,GAAG,QAAQ,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACJ,cAAc,GAAG,GAAG,UAAU,UAAU,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxE,CAAC;YAED,OAAO;gBACH,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mBAAmB,cAAc,4BAA4B;gBACtE,OAAO,EAAE;oBACL,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE;oBAC9C,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,EAAE;oBAChD,eAAe;oBACf,cAAc,EAAE,8DAA8D;iBACjF;aACJ,CAAC;QACN,CAAC;QAED,OAAO;YACH,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE;gBACL,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE;gBAC9C,gBAAgB,EAAE,gBAAgB,CAAC,WAAW,EAAE;gBAChD,eAAe;aAClB;SACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,sBAAuB,KAAe,CAAC,OAAO,EAAE;YACzD,OAAO,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;SAC/C,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,SAAoB,EAAE,OAAoB;IAC3E,IAAI,CAAC;QACD,8BAA8B;QAC9B,MAAM,UAAU,GAAG,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;gBACH,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE;oBACL,OAAO;oBACP,cAAc,EAAE,oDAAoD;iBACvE;aACJ,CAAC;QACN,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO;gBACH,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE,EAAE,OAAO,EAAE;aACvB,CAAC;QACN,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhF,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YACjB,OAAO;gBACH,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW;gBAC1D,OAAO,EAAE;oBACL,UAAU,EAAE,UAAU,CAAC,SAAS;oBAChC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;oBAChC,cAAc,EAAE,8BAA8B;iBACjD;aACJ,CAAC;QACN,CAAC;QAED,OAAO;YACH,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE;gBACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU,EAAE,UAAU,CAAC,SAAS;gBAChC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC5B;SACJ,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO;YACH,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,4BAA6B,KAAe,CAAC,OAAO,EAAE;YAC/D,OAAO,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;SAC/C,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,UAAuB,SAAS;IAClE,MAAM,SAAS,GAAG,IAAI,sBAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,6BAA6B;IAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9B,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;QACrC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC;QACpC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAExB,2BAA2B;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAEnE,IAAI,OAA6C,CAAC;IAClD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,CAAC;IAC1B,CAAC;SAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,UAAU,CAAC;IACzB,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,OAAO;QACH,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,OAAO;KACV,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAoB;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAE7C,MAAM,YAAY,GACd,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,mBAAmB,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvH,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACnD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,UAA8B,EAAE;IACrE,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEtD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,6BAA6B;IAC7B,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -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"}
|