@quiltdata/benchling-webhook 0.6.3-20251104T182406Z → 0.7.1-20251106T100426Z
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 +96 -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} +109 -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 +12 -1
- package/dist/bin/commands/deploy.d.ts.map +1 -1
- package/dist/bin/commands/deploy.js +116 -106
- 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/{scripts → bin/commands}/infer-quilt-config.d.ts +6 -15
- package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -0
- package/dist/{scripts → bin/commands}/infer-quilt-config.js +37 -63
- 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/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 +218 -0
- package/dist/bin/commands/setup-profile.js.map +1 -0
- package/dist/bin/commands/setup-wizard.d.ts +24 -11
- package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
- package/dist/bin/commands/setup-wizard.js +607 -51
- 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 +44 -31
- package/dist/lib/benchling-webhook-stack.js.map +1 -1
- package/dist/lib/configuration-saver.d.ts +4 -24
- package/dist/lib/configuration-saver.d.ts.map +1 -1
- package/dist/lib/configuration-saver.js +14 -71
- 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 +538 -232
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +133 -3
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/utils/config-loader.d.ts.map +1 -1
- package/dist/lib/utils/config-loader.js +3 -2
- package/dist/lib/utils/config-loader.js.map +1 -1
- package/dist/lib/utils/config-resolver.d.ts +2 -2
- package/dist/lib/utils/config-resolver.d.ts.map +1 -1
- package/dist/lib/utils/config-resolver.js +14 -7
- package/dist/lib/utils/config-resolver.js.map +1 -1
- package/dist/lib/utils/config.d.ts +1 -1
- package/dist/lib/utils/config.d.ts.map +1 -1
- package/dist/lib/utils/config.js +7 -3
- package/dist/lib/utils/config.js.map +1 -1
- package/dist/lib/utils/sqs.d.ts +13 -0
- package/dist/lib/utils/sqs.d.ts.map +1 -0
- package/dist/lib/utils/sqs.js +22 -0
- package/dist/lib/utils/sqs.js.map +1 -0
- package/dist/lib/utils/stack-inference.d.ts.map +1 -1
- package/dist/lib/utils/stack-inference.js +8 -6
- package/dist/lib/utils/stack-inference.js.map +1 -1
- package/dist/lib/xdg-config.d.ts +224 -106
- package/dist/lib/xdg-config.d.ts.map +1 -1
- package/dist/lib/xdg-config.js +454 -387
- package/dist/lib/xdg-config.js.map +1 -1
- package/dist/package.json +19 -14
- 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/get-dev-version.d.ts +16 -0
- package/dist/scripts/get-dev-version.d.ts.map +1 -0
- package/dist/scripts/get-dev-version.js +57 -0
- package/dist/scripts/get-dev-version.js.map +1 -0
- 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 +19 -14
- 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/lib/xdg-cli-wrapper.d.ts +0 -113
- package/dist/lib/xdg-cli-wrapper.d.ts.map +0 -1
- package/dist/lib/xdg-cli-wrapper.js +0 -289
- package/dist/lib/xdg-cli-wrapper.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/infer-quilt-config.d.ts.map +0 -1
- package/dist/scripts/infer-quilt-config.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":"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"}
|
|
@@ -9,18 +9,16 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module scripts/infer-quilt-config
|
|
11
11
|
*/
|
|
12
|
-
import { DerivedConfig } from "../lib/types/config";
|
|
13
12
|
/**
|
|
14
13
|
* Result of Quilt configuration inference
|
|
15
14
|
*/
|
|
16
15
|
interface InferenceResult {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
registryUrl?: string;
|
|
16
|
+
catalog?: string;
|
|
17
|
+
database?: string;
|
|
18
|
+
stackArn?: string;
|
|
19
|
+
region?: string;
|
|
20
|
+
account?: string;
|
|
21
|
+
queueUrl?: string;
|
|
24
22
|
source: string;
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
@@ -39,12 +37,5 @@ export declare function inferQuiltConfig(options: {
|
|
|
39
37
|
profile?: string;
|
|
40
38
|
interactive?: boolean;
|
|
41
39
|
}): 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
40
|
export {};
|
|
50
41
|
//# 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;AA4BH;;GAEG;AACH,UAAU,eAAe;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAClB;AAmJD;;;;;;;;;;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"}
|
|
@@ -45,10 +45,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
45
45
|
})();
|
|
46
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
47
|
exports.inferQuiltConfig = inferQuiltConfig;
|
|
48
|
-
exports.inferenceResultToDerivedConfig = inferenceResultToDerivedConfig;
|
|
49
48
|
const child_process_1 = require("child_process");
|
|
50
49
|
const readline = __importStar(require("readline"));
|
|
51
50
|
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
51
|
+
const sqs_1 = require("../../lib/utils/sqs");
|
|
52
52
|
/**
|
|
53
53
|
* Executes quilt3 config command to get current catalog URL
|
|
54
54
|
*
|
|
@@ -113,6 +113,12 @@ async function findQuiltStacks(region = "us-east-1", profile) {
|
|
|
113
113
|
stackArn: stackDetail.StackId || "",
|
|
114
114
|
region: region,
|
|
115
115
|
};
|
|
116
|
+
// Extract AWS Account ID from Stack ARN
|
|
117
|
+
// ARN format: arn:aws:cloudformation:REGION:ACCOUNT_ID:stack/STACK_NAME/STACK_ID
|
|
118
|
+
const arnMatch = stackInfo.stackArn.match(/^arn:aws:cloudformation:[^:]+:(\d{12}):/);
|
|
119
|
+
if (arnMatch) {
|
|
120
|
+
stackInfo.account = arnMatch[1];
|
|
121
|
+
}
|
|
116
122
|
// Extract outputs
|
|
117
123
|
for (const output of outputs) {
|
|
118
124
|
const key = output.OutputKey || "";
|
|
@@ -120,14 +126,13 @@ async function findQuiltStacks(region = "us-east-1", profile) {
|
|
|
120
126
|
if (key === "QuiltWebHost") {
|
|
121
127
|
stackInfo.catalogUrl = value;
|
|
122
128
|
}
|
|
123
|
-
else if (key.includes("ucket")) {
|
|
124
|
-
stackInfo.bucket = value;
|
|
125
|
-
}
|
|
126
129
|
else if (key === "UserAthenaDatabaseName" || key.includes("Database")) {
|
|
127
130
|
stackInfo.database = value;
|
|
128
131
|
}
|
|
129
132
|
else if (key.includes("Queue")) {
|
|
130
|
-
|
|
133
|
+
if ((0, sqs_1.isQueueUrl)(value)) {
|
|
134
|
+
stackInfo.queueUrl = value;
|
|
135
|
+
}
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
138
|
stackInfos.push(stackInfo);
|
|
@@ -192,7 +197,7 @@ async function inferQuiltConfig(options) {
|
|
|
192
197
|
console.log("Checking quilt3 CLI configuration...");
|
|
193
198
|
const quilt3Config = getQuilt3Catalog();
|
|
194
199
|
if (quilt3Config?.catalogUrl) {
|
|
195
|
-
result.
|
|
200
|
+
result.catalog = quilt3Config.catalogUrl;
|
|
196
201
|
result.source = "quilt3-cli";
|
|
197
202
|
}
|
|
198
203
|
else {
|
|
@@ -208,10 +213,10 @@ async function inferQuiltConfig(options) {
|
|
|
208
213
|
console.log(`Found ${stacks.length} Quilt stack(s):\n`);
|
|
209
214
|
let selectedStack;
|
|
210
215
|
// If we have a catalog URL from quilt3, try to find matching stack
|
|
211
|
-
if (result.
|
|
216
|
+
if (result.catalog && stacks.length > 1) {
|
|
212
217
|
// Normalize URLs for comparison (remove protocol and trailing slashes)
|
|
213
218
|
const normalizeUrl = (url) => url.replace(/^https?:\/\//, "").replace(/\/$/, "");
|
|
214
|
-
const targetUrl = normalizeUrl(result.
|
|
219
|
+
const targetUrl = normalizeUrl(result.catalog);
|
|
215
220
|
const matchingStack = stacks.find((s) => s.catalogUrl && normalizeUrl(s.catalogUrl) === targetUrl);
|
|
216
221
|
if (matchingStack) {
|
|
217
222
|
selectedStack = matchingStack;
|
|
@@ -219,7 +224,7 @@ async function inferQuiltConfig(options) {
|
|
|
219
224
|
}
|
|
220
225
|
else {
|
|
221
226
|
// No match found, prompt user
|
|
222
|
-
console.log(`No stack found matching catalog URL: ${result.
|
|
227
|
+
console.log(`No stack found matching catalog URL: ${result.catalog}`);
|
|
223
228
|
if (interactive) {
|
|
224
229
|
const options = stacks.map((s) => `${s.stackName} (${s.region})`);
|
|
225
230
|
const selectedIndex = await promptCatalogSelection(options);
|
|
@@ -248,19 +253,22 @@ async function inferQuiltConfig(options) {
|
|
|
248
253
|
}
|
|
249
254
|
// Populate result from selected stack
|
|
250
255
|
if (selectedStack.stackArn) {
|
|
251
|
-
result.
|
|
256
|
+
result.stackArn = selectedStack.stackArn;
|
|
252
257
|
}
|
|
253
|
-
if (selectedStack.
|
|
254
|
-
result.
|
|
258
|
+
if (selectedStack.account) {
|
|
259
|
+
result.account = selectedStack.account;
|
|
255
260
|
}
|
|
256
|
-
if (selectedStack.
|
|
257
|
-
result.
|
|
261
|
+
if (selectedStack.database) {
|
|
262
|
+
result.database = selectedStack.database;
|
|
258
263
|
}
|
|
259
|
-
if (selectedStack.
|
|
260
|
-
result.
|
|
264
|
+
if (selectedStack.queueUrl) {
|
|
265
|
+
result.queueUrl = selectedStack.queueUrl;
|
|
266
|
+
}
|
|
267
|
+
if (selectedStack.catalogUrl && !result.catalog) {
|
|
268
|
+
result.catalog = selectedStack.catalogUrl;
|
|
261
269
|
}
|
|
262
270
|
if (selectedStack.region) {
|
|
263
|
-
result.
|
|
271
|
+
result.region = selectedStack.region;
|
|
264
272
|
}
|
|
265
273
|
if (result.source === "quilt3-cli") {
|
|
266
274
|
result.source = "quilt3-cli+cloudformation";
|
|
@@ -270,39 +278,6 @@ async function inferQuiltConfig(options) {
|
|
|
270
278
|
}
|
|
271
279
|
return result;
|
|
272
280
|
}
|
|
273
|
-
/**
|
|
274
|
-
* Converts inference result to DerivedConfig
|
|
275
|
-
*
|
|
276
|
-
* @param result - Inference result
|
|
277
|
-
* @returns DerivedConfig object
|
|
278
|
-
*/
|
|
279
|
-
function inferenceResultToDerivedConfig(result) {
|
|
280
|
-
const config = {
|
|
281
|
-
_metadata: {
|
|
282
|
-
inferredAt: new Date().toISOString(),
|
|
283
|
-
inferredFrom: result.source,
|
|
284
|
-
source: "infer-quilt-config",
|
|
285
|
-
version: "0.6.0",
|
|
286
|
-
},
|
|
287
|
-
};
|
|
288
|
-
if (result.catalogUrl) {
|
|
289
|
-
config.catalogUrl = result.catalogUrl;
|
|
290
|
-
config.quiltCatalog = result.catalogUrl;
|
|
291
|
-
}
|
|
292
|
-
if (result.quiltUserBucket) {
|
|
293
|
-
config.quiltUserBucket = result.quiltUserBucket;
|
|
294
|
-
}
|
|
295
|
-
if (result.quiltStackArn) {
|
|
296
|
-
config.quiltStackArn = result.quiltStackArn;
|
|
297
|
-
}
|
|
298
|
-
if (result.quiltRegion) {
|
|
299
|
-
config.quiltRegion = result.quiltRegion;
|
|
300
|
-
}
|
|
301
|
-
if (result.queueArn) {
|
|
302
|
-
config.queueArn = result.queueArn;
|
|
303
|
-
}
|
|
304
|
-
return config;
|
|
305
|
-
}
|
|
306
281
|
/**
|
|
307
282
|
* Main execution for CLI usage
|
|
308
283
|
*/
|
|
@@ -329,19 +304,18 @@ async function main() {
|
|
|
329
304
|
const result = await inferQuiltConfig(options);
|
|
330
305
|
console.log("\n=== Inference Results ===");
|
|
331
306
|
console.log(`Source: ${result.source}`);
|
|
332
|
-
if (result.
|
|
333
|
-
console.log(`Catalog URL: ${result.
|
|
334
|
-
if (result.
|
|
335
|
-
console.log(`
|
|
336
|
-
if (result.
|
|
337
|
-
console.log(`Stack ARN: ${result.
|
|
338
|
-
if (result.
|
|
339
|
-
console.log(`Region: ${result.
|
|
340
|
-
if (result.
|
|
341
|
-
console.log(`
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
console.log(JSON.stringify(derivedConfig, null, 4));
|
|
307
|
+
if (result.catalog)
|
|
308
|
+
console.log(`Catalog URL: ${result.catalog}`);
|
|
309
|
+
if (result.database)
|
|
310
|
+
console.log(`Database: ${result.database}`);
|
|
311
|
+
if (result.stackArn)
|
|
312
|
+
console.log(`Stack ARN: ${result.stackArn}`);
|
|
313
|
+
if (result.region)
|
|
314
|
+
console.log(`Region: ${result.region}`);
|
|
315
|
+
if (result.account)
|
|
316
|
+
console.log(`AWS Account ID: ${result.account}`);
|
|
317
|
+
if (result.queueUrl)
|
|
318
|
+
console.log(`Queue URL: ${result.queueUrl}`);
|
|
345
319
|
}
|
|
346
320
|
// Run main if executed directly
|
|
347
321
|
if (require.main === module) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-quilt-config.js","sourceRoot":"","sources":["../../../bin/commands/infer-quilt-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../bin/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../bin/commands/init.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJrE"}
|
|
@@ -7,10 +7,8 @@ exports.initCommand = initCommand;
|
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = require("path");
|
|
9
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
-
const ora_1 = __importDefault(require("ora"));
|
|
11
10
|
const boxen_1 = __importDefault(require("boxen"));
|
|
12
11
|
const enquirer_1 = require("enquirer");
|
|
13
|
-
const benchling_webhook_1 = require("../benchling-webhook");
|
|
14
12
|
async function initCommand(options) {
|
|
15
13
|
console.log((0, boxen_1.default)(chalk_1.default.bold("Benchling Webhook Setup"), {
|
|
16
14
|
padding: 1,
|
|
@@ -102,36 +100,8 @@ async function initCommand(options) {
|
|
|
102
100
|
envLines.push(`BENCHLING_CLIENT_SECRET=${answers.clientSecret}`);
|
|
103
101
|
envLines.push(`BENCHLING_APP_DEFINITION_ID=${answers.appId}`);
|
|
104
102
|
envLines.push("");
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
if (options.infer !== false) {
|
|
108
|
-
console.log();
|
|
109
|
-
const spinner = (0, ora_1.default)("Inferring additional configuration from catalog...").start();
|
|
110
|
-
const inferenceResult = await (0, benchling_webhook_1.inferConfiguration)(answers.catalog);
|
|
111
|
-
if (inferenceResult.success) {
|
|
112
|
-
inferredVars = inferenceResult.inferredVars;
|
|
113
|
-
spinner.succeed("Successfully inferred additional configuration");
|
|
114
|
-
if (inferredVars.CDK_DEFAULT_ACCOUNT) {
|
|
115
|
-
envLines.push("# AWS Configuration (inferred)");
|
|
116
|
-
envLines.push(`CDK_DEFAULT_ACCOUNT=${inferredVars.CDK_DEFAULT_ACCOUNT}`);
|
|
117
|
-
envLines.push(`CDK_DEFAULT_REGION=${inferredVars.CDK_DEFAULT_REGION}`);
|
|
118
|
-
envLines.push("");
|
|
119
|
-
}
|
|
120
|
-
if (inferredVars.QUEUE_ARN) {
|
|
121
|
-
envLines.push("# SQS Configuration (inferred)");
|
|
122
|
-
envLines.push(`QUEUE_ARN=${inferredVars.QUEUE_ARN}`);
|
|
123
|
-
envLines.push("");
|
|
124
|
-
}
|
|
125
|
-
if (inferredVars.QUILT_DATABASE) {
|
|
126
|
-
envLines.push("# Quilt Database (inferred)");
|
|
127
|
-
envLines.push(`QUILT_DATABASE=${inferredVars.QUILT_DATABASE}`);
|
|
128
|
-
envLines.push("");
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
spinner.warn(`Could not infer additional configuration: ${inferenceResult.error}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
103
|
+
// Note: Inference is deprecated in secrets-only mode (v0.6.0+)
|
|
104
|
+
// Configuration is now stored in AWS Secrets Manager and CloudFormation parameters
|
|
135
105
|
// Add optional configuration section
|
|
136
106
|
if (!options.minimal) {
|
|
137
107
|
envLines.push("# Optional Configuration");
|