@quiltdata/benchling-webhook 0.9.0-20251127T032721Z → 0.9.0-20251129T063536Z

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 (60) hide show
  1. package/README.md +114 -5
  2. package/dist/bin/benchling-webhook.js +6 -0
  3. package/dist/bin/benchling-webhook.js.map +1 -1
  4. package/dist/bin/cli.js +1 -0
  5. package/dist/bin/cli.js.map +1 -1
  6. package/dist/bin/commands/deploy.d.ts +2 -0
  7. package/dist/bin/commands/deploy.d.ts.map +1 -1
  8. package/dist/bin/commands/deploy.js +159 -65
  9. package/dist/bin/commands/deploy.js.map +1 -1
  10. package/dist/bin/commands/logs.d.ts.map +1 -1
  11. package/dist/bin/commands/logs.js +29 -6
  12. package/dist/bin/commands/logs.js.map +1 -1
  13. package/dist/bin/commands/status.d.ts +1 -0
  14. package/dist/bin/commands/status.d.ts.map +1 -1
  15. package/dist/bin/commands/status.js +55 -5
  16. package/dist/bin/commands/status.js.map +1 -1
  17. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  18. package/dist/lib/benchling-webhook-stack.js +10 -7
  19. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  20. package/dist/lib/configuration-saver.d.ts +1 -1
  21. package/dist/lib/configuration-saver.d.ts.map +1 -1
  22. package/dist/lib/configuration-saver.js +4 -5
  23. package/dist/lib/configuration-saver.js.map +1 -1
  24. package/dist/lib/constants.d.ts +5 -0
  25. package/dist/lib/constants.d.ts.map +1 -1
  26. package/dist/lib/constants.js +6 -1
  27. package/dist/lib/constants.js.map +1 -1
  28. package/dist/lib/http-api-gateway.d.ts +3 -0
  29. package/dist/lib/http-api-gateway.d.ts.map +1 -1
  30. package/dist/lib/http-api-gateway.js +149 -4
  31. package/dist/lib/http-api-gateway.js.map +1 -1
  32. package/dist/lib/index.d.ts +0 -1
  33. package/dist/lib/index.d.ts.map +1 -1
  34. package/dist/lib/index.js +2 -4
  35. package/dist/lib/index.js.map +1 -1
  36. package/dist/lib/types/config.d.ts +1 -1
  37. package/dist/lib/wizard/phase2-stack-query.d.ts.map +1 -1
  38. package/dist/lib/wizard/phase2-stack-query.js +44 -0
  39. package/dist/lib/wizard/phase2-stack-query.js.map +1 -1
  40. package/dist/lib/wizard/phase3-parameter-collection.d.ts.map +1 -1
  41. package/dist/lib/wizard/phase3-parameter-collection.js +62 -0
  42. package/dist/lib/wizard/phase3-parameter-collection.js.map +1 -1
  43. package/dist/lib/wizard/phase6-integrated-mode.d.ts.map +1 -1
  44. package/dist/lib/wizard/phase6-integrated-mode.js +3 -1
  45. package/dist/lib/wizard/phase6-integrated-mode.js.map +1 -1
  46. package/dist/lib/wizard/phase7-standalone-mode.d.ts.map +1 -1
  47. package/dist/lib/wizard/phase7-standalone-mode.js +3 -1
  48. package/dist/lib/wizard/phase7-standalone-mode.js.map +1 -1
  49. package/dist/lib/wizard/types.d.ts +24 -0
  50. package/dist/lib/wizard/types.d.ts.map +1 -1
  51. package/dist/package.json +8 -3
  52. package/dist/scripts/discover-vpc.d.ts +69 -0
  53. package/dist/scripts/discover-vpc.d.ts.map +1 -0
  54. package/dist/scripts/discover-vpc.js +196 -0
  55. package/dist/scripts/discover-vpc.js.map +1 -0
  56. package/package.json +8 -3
  57. package/dist/lib/rest-api-gateway.d.ts +0 -32
  58. package/dist/lib/rest-api-gateway.d.ts.map +0 -1
  59. package/dist/lib/rest-api-gateway.js +0 -257
  60. package/dist/lib/rest-api-gateway.js.map +0 -1
package/README.md CHANGED
@@ -65,12 +65,70 @@ If the App Canvas is not already part of your standard notebook template, Benchl
65
65
 
66
66
  ![App Canvas - Insert](imgs/benchling-insert.png)
67
67
 
68
- ## Architecture (v0.9.0)
68
+ ## Architecture (v1.0.0)
69
69
 
70
- - **API Gateway HTTP API** terminates TLS and forwards requests through a **VPC Link** to **Cloud Map** service discovery
71
- - **ECS Fargate** tasks register in `benchling.local` and serve FastAPI on port **8080** (no ALB hop)
72
- - **S3 + SQS** remain the storage and queue backends for package creation
73
- - **CloudWatch Logs** capture API access logs (`/aws/apigateway/benchling-webhook-http`) and container logs (stack name)
70
+ AWS CDK application with defense-in-depth security:
71
+
72
+ ```
73
+ Benchling Webhook
74
+ |
75
+ | HTTPS POST
76
+ v
77
+ API Gateway (HTTP API v2)
78
+ |
79
+ | Extract headers + body
80
+ v
81
+ Lambda Authorizer ←─────────────┐
82
+ | │
83
+ | Verify HMAC signature │ Defense-in-Depth:
84
+ | - Valid → Allow │ Both Lambda and
85
+ | - Invalid → 403 │ FastAPI verify
86
+ v │ HMAC signatures
87
+ VPC Link │
88
+ | │
89
+ v │
90
+ Cloud Map (benchling.local) │
91
+ | │
92
+ v │
93
+ ECS Fargate (FastAPI) ─────────┘
94
+ |
95
+ | Re-verify HMAC
96
+ | Process webhook
97
+ v
98
+ S3 + SQS → Quilt Package
99
+ ```
100
+
101
+ ### Components
102
+
103
+ - **API Gateway (HTTP API v2)** - HTTPS webhook routing with Lambda Authorizer integration
104
+ - **Lambda Authorizer** - HMAC signature verification (first line of defense, logs to CloudWatch)
105
+ - **VPC Link + Cloud Map** - Private service discovery to ECS tasks
106
+ - **ECS Fargate** - FastAPI application (auto-scales 2-10 tasks, second line of defense)
107
+ - **S3** - Payload and package storage
108
+ - **SQS** - Quilt package creation queue
109
+ - **Secrets Manager** - Benchling OAuth credentials
110
+ - **CloudWatch** - Logging and monitoring for all components
111
+
112
+ ### Security Features
113
+
114
+ **Defense-in-Depth HMAC Verification:**
115
+
116
+ 1. **Lambda Authorizer Layer** - Verifies webhook signatures before request reaches ECS, rejecting invalid requests with 403 Forbidden
117
+ 2. **Application Layer** - FastAPI re-verifies signatures for defense-in-depth protection
118
+
119
+ **Why HTTP API v2?**
120
+
121
+ - REST API Lambda Authorizers cannot access request body (HMAC verification impossible)
122
+ - HTTP API v2 Lambda Authorizers can access body via `event['body']` field
123
+ - Benchling HMAC signatures are computed over entire request body
124
+ - HTTP API v2 is the only architecture that supports proper webhook signature verification
125
+
126
+ **Additional Security:**
127
+
128
+ - Private network (ECS in private subnets, no public IPs)
129
+ - TLS 1.2+ encryption on all API Gateway endpoints
130
+ - CloudWatch audit trail for all authorization events
131
+ - Least-privilege IAM roles
74
132
 
75
133
  ## Installation
76
134
 
@@ -115,6 +173,8 @@ The wizard will guide you through:
115
173
 
116
174
  Add the webhook URL (displayed after setup) to your [Benchling app settings](https://docs.benchling.com/docs/getting-started-benchling-apps#installing-your-app).
117
175
 
176
+ **Important**: The endpoint URL format is `https://{api-id}.execute-api.{region}.amazonaws.com/webhook` (no stage prefix in path).
177
+
118
178
  ### 4. Test Integration
119
179
 
120
180
  In Benchling:
@@ -126,6 +186,25 @@ In Benchling:
126
186
  A Quilt package will be automatically created and linked to your notebook entry.
127
187
  If you run into problems, contact [Quilt Support](support@quilt.bio)
128
188
 
189
+ ## Monitoring
190
+
191
+ ### CloudWatch Logs
192
+
193
+ - `/aws/apigateway/benchling-webhook-http` - API Gateway access logs
194
+ - `/aws/lambda/BenchlingWebhookAuthorizer` - Lambda Authorizer logs (HMAC verification)
195
+ - `/ecs/benchling-webhook` - ECS container logs (application logs)
196
+
197
+ ### View Logs
198
+
199
+ ```bash
200
+ # Via AWS CLI
201
+ aws logs tail /aws/lambda/BenchlingWebhookAuthorizer --follow
202
+ aws logs tail /ecs/benchling-webhook --follow
203
+
204
+ # Via NPX (all logs combined)
205
+ npx @quiltdata/benchling-webhook@latest logs --profile default
206
+ ```
207
+
129
208
  ## Additional Commands
130
209
 
131
210
  ```bash
@@ -135,8 +214,38 @@ npx @quiltdata/benchling-webhook@latest deploy [--profile <name>]
135
214
  # Check CloudFormation stack status
136
215
  npx @quiltdata/benchling-webhook@latest status [--profile <name>]
137
216
 
217
+ # View CloudWatch logs
218
+ npx @quiltdata/benchling-webhook@latest logs [--profile <name>]
219
+
138
220
  # Show all available commands
139
221
  npx @quiltdata/benchling-webhook@latest --help
222
+
223
+ # Validate Lambda authorizer bundle locally (offline-friendly)
224
+ npm run test:lambda-bundle
225
+ ```
226
+
227
+ ## Upgrading from v0.8.x or v0.9.0
228
+
229
+ Version 1.0.0 introduces HTTP API v2 with Lambda Authorizer for proper HMAC signature verification. **This is a breaking change that requires stack recreation.**
230
+
231
+ See [MIGRATION.md](./MIGRATION.md) for detailed upgrade instructions.
232
+
233
+ **Quick migration:**
234
+
235
+ ```bash
236
+ # 1. Backup configuration
237
+ cp ~/.config/benchling-webhook/{profile}/config.json ~/backup-config.json
238
+
239
+ # 2. Destroy old stack
240
+ npx cdk destroy --profile {profile} --context stage={stage}
241
+
242
+ # 3. Deploy new stack
243
+ npm run deploy:{stage} -- --profile {profile} --yes
244
+
245
+ # 4. Update webhook URL in Benchling app settings
246
+
247
+ # 5. Test
248
+ npm run test:{stage} -- --profile {profile}
140
249
  ```
141
250
 
142
251
  ## License
@@ -175,6 +175,12 @@ if (require.main === module) {
175
175
  account: process.env.CDK_DEFAULT_ACCOUNT,
176
176
  ecrRepository: process.env.ECR_REPOSITORY_NAME || "quiltdata/benchling",
177
177
  imageTag: process.env.IMAGE_TAG || "latest",
178
+ // Include VPC configuration if specified
179
+ ...(process.env.VPC_ID && {
180
+ vpc: {
181
+ vpcId: process.env.VPC_ID,
182
+ },
183
+ }),
178
184
  },
179
185
  logging: {
180
186
  level: process.env.LOG_LEVEL || "INFO",
@@ -1 +1 @@
1
- {"version":3,"file":"benchling-webhook.js","sourceRoot":"","sources":["../../bin/benchling-webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchling-webhook.js","sourceRoot":"","sources":["../../bin/benchling-webhook.ts"],"names":[],"mappings":"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"}
package/dist/bin/cli.js CHANGED
@@ -95,6 +95,7 @@ program
95
95
  .option("--region <region>", "AWS region to deploy to")
96
96
  .option("--image-tag <tag>", "Docker image tag to deploy (default: latest)")
97
97
  .option("--yes", "Skip confirmation prompts")
98
+ .option("--force", "Force deployment despite legacy architecture warning (DANGEROUS - use with caution)")
98
99
  .addHelpText("after", `
99
100
 
100
101
  Examples:
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare function deployCommand(options: {
19
19
  imageTag?: string;
20
20
  region?: string;
21
21
  envFile?: string;
22
+ force?: boolean;
22
23
  }): Promise<void>;
23
24
  /**
24
25
  * Deploy the Benchling webhook stack
@@ -32,5 +33,6 @@ export declare function deploy(stackArn: string, benchlingSecret: string, config
32
33
  imageTag: string;
33
34
  region?: string;
34
35
  envFile?: string;
36
+ force?: boolean;
35
37
  }): Promise<void>;
36
38
  //# sourceMappingURL=deploy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../bin/commands/deploy.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA0HvD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhB;AAED;;GAEG;AACH,wBAAsB,MAAM,CACxB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IACL,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GACF,OAAO,CAAC,IAAI,CAAC,CAkYf"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../bin/commands/deploy.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA6LvD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhB;AAED;;GAEG;AACH,wBAAsB,MAAM,CACxB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IACL,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,GACF,OAAO,CAAC,IAAI,CAAC,CA8af"}
@@ -61,12 +61,12 @@ function suggestSetup(profileName, message) {
61
61
  console.log();
62
62
  }
63
63
  /**
64
- * Detect if the existing stack is v0.8.x (REST API + ALB architecture)
65
- * Returns true if v0.8.x stack detected, false otherwise
64
+ * Check if the existing stack is in a problematic state (rollback, failed, etc.)
66
65
  *
67
- * Also handles stacks in failed/rollback states by examining existing resources
66
+ * Note: v0.8.8+ all use the same architecture (REST API + ALB + VPC Link), so there's
67
+ * no "legacy architecture" to detect. CloudFormation handles in-place updates seamlessly.
68
68
  */
69
- async function detectLegacyStack(region) {
69
+ async function checkStackStatus(region) {
70
70
  try {
71
71
  const cloudformation = new client_cloudformation_1.CloudFormationClient({ region });
72
72
  const stackName = "BenchlingWebhookStack";
@@ -74,51 +74,106 @@ async function detectLegacyStack(region) {
74
74
  const describeCommand = new client_cloudformation_1.DescribeStacksCommand({ StackName: stackName });
75
75
  const describeResponse = await cloudformation.send(describeCommand);
76
76
  if (!describeResponse.Stacks || describeResponse.Stacks.length === 0) {
77
- return false; // No stack exists
77
+ return {
78
+ stackExists: false,
79
+ statusCategory: "none",
80
+ };
78
81
  }
79
82
  const stack = describeResponse.Stacks[0];
80
83
  const stackStatus = stack.StackStatus || "";
81
- // Check if stack is in a rollback/failed state that blocks updates
82
- // These states indicate a previous deployment attempt failed
83
- const blockingStates = [
84
- "UPDATE_ROLLBACK_COMPLETE",
84
+ const inProgressStates = [
85
85
  "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS",
86
86
  "UPDATE_ROLLBACK_IN_PROGRESS",
87
- "UPDATE_ROLLBACK_FAILED",
88
- "ROLLBACK_COMPLETE",
89
87
  "ROLLBACK_IN_PROGRESS",
90
- "ROLLBACK_FAILED",
91
88
  ];
92
- if (blockingStates.includes(stackStatus)) {
93
- // Stack is in a failed state - can't determine architecture reliably
94
- // User needs to destroy and redeploy regardless
95
- // Return true to trigger migration warning which tells them to destroy
96
- return true;
97
- }
98
- // Get stack resources to check architecture
99
- const resourcesCommand = new client_cloudformation_1.DescribeStackResourcesCommand({ StackName: stackName });
100
- const resourcesResponse = await cloudformation.send(resourcesCommand);
101
- if (!resourcesResponse.StackResources) {
102
- return false;
103
- }
104
- // v0.8.x indicators:
105
- // - Has AWS::ElasticLoadBalancingV2::LoadBalancer (ALB)
106
- // - Has AWS::ApiGateway::RestApi (REST API)
107
- // v0.9.0 indicators:
108
- // - Has AWS::ApiGatewayV2::VpcLink (VPC Link)
109
- // - Has AWS::ApiGatewayV2::Api (HTTP API)
110
- const hasALB = resourcesResponse.StackResources.some(r => r.ResourceType === "AWS::ElasticLoadBalancingV2::LoadBalancer");
111
- const hasRestAPI = resourcesResponse.StackResources.some(r => r.ResourceType === "AWS::ApiGateway::RestApi");
112
- const hasVpcLink = resourcesResponse.StackResources.some(r => r.ResourceType === "AWS::ApiGatewayV2::VpcLink");
113
- const hasHttpAPI = resourcesResponse.StackResources.some(r => r.ResourceType === "AWS::ApiGatewayV2::Api");
114
- // If has ALB or REST API but not VPC Link or HTTP API, it's v0.8.x
115
- return (hasALB || hasRestAPI) && !hasVpcLink && !hasHttpAPI;
89
+ const failedStates = ["ROLLBACK_FAILED", "UPDATE_ROLLBACK_FAILED"];
90
+ const rolledBackStates = ["UPDATE_ROLLBACK_COMPLETE", "ROLLBACK_COMPLETE"];
91
+ const statusCategory = inProgressStates.includes(stackStatus)
92
+ ? "in_progress"
93
+ : failedStates.includes(stackStatus)
94
+ ? "failed"
95
+ : rolledBackStates.includes(stackStatus)
96
+ ? "rolled_back"
97
+ : "none";
98
+ return {
99
+ stackExists: true,
100
+ stackStatus,
101
+ statusCategory,
102
+ };
103
+ }
104
+ catch (_error) {
105
+ // Stack doesn't exist or error checking
106
+ return {
107
+ stackExists: false,
108
+ statusCategory: "none",
109
+ };
110
+ }
111
+ }
112
+ /**
113
+ * Detect if existing stack uses legacy REST API Gateway (v0.8.x)
114
+ * Returns true if REST API detected, indicating need for stack recreation
115
+ */
116
+ async function detectLegacyRestApi(stackName, region) {
117
+ const client = new client_cloudformation_1.CloudFormationClient({ region });
118
+ try {
119
+ const response = await client.send(new client_cloudformation_1.DescribeStackResourcesCommand({ StackName: stackName }));
120
+ const hasRestApi = response.StackResources?.some((resource) => resource.ResourceType === "AWS::ApiGateway::RestApi");
121
+ return hasRestApi || false;
116
122
  }
117
123
  catch (_error) {
118
- // Stack doesn't exist or error checking - not a v0.8.x stack
124
+ // Stack doesn't exist - first deployment
119
125
  return false;
120
126
  }
121
127
  }
128
+ /**
129
+ * Prompt user about legacy stack migration
130
+ * Returns true if user wants to abort deployment
131
+ * Returns false if user wants to proceed anyway
132
+ */
133
+ async function promptLegacyMigration(profileName, stage, yes) {
134
+ const migrationMessage = `${chalk_1.default.red.bold("⚠️ BREAKING CHANGE DETECTED")}\n\n` +
135
+ `Your existing stack uses ${chalk_1.default.yellow("v0.8.x architecture (REST API Gateway)")}.\n` +
136
+ `v1.0.0 uses ${chalk_1.default.green("HTTP API v2")} (required for Lambda Authorizer body access).\n\n` +
137
+ `${chalk_1.default.bold("Technical reason:")} REST API Lambda Authorizers cannot access request body,\n` +
138
+ "breaking HMAC signature verification. HTTP API v2 provides body access.\n\n" +
139
+ `${chalk_1.default.bold("Stack resources that will be REPLACED:")}\n` +
140
+ " - API Gateway REST API → HTTP API v2\n" +
141
+ " - Network Load Balancer → (removed, direct VPC Link)\n" +
142
+ " - Endpoint URL format → (stage removed from path)\n\n" +
143
+ `${chalk_1.default.bold("You must destroy the existing stack before deploying v1.0.0:")}\n\n` +
144
+ ` ${chalk_1.default.cyan(`npx cdk destroy --profile ${profileName} --context stage=${stage}`)}\n\n` +
145
+ `${chalk_1.default.bold("After destruction, redeploy with:")}\n\n` +
146
+ ` ${chalk_1.default.cyan(`npm run deploy:${stage} -- --profile ${profileName} --yes`)}\n\n` +
147
+ `${chalk_1.default.bold("Update your Benchling webhook URL after deployment.")}`;
148
+ console.log();
149
+ console.log((0, boxen_1.default)(migrationMessage, {
150
+ padding: 1,
151
+ borderColor: "red",
152
+ borderStyle: "round",
153
+ }));
154
+ console.log();
155
+ if (yes) {
156
+ console.log(chalk_1.default.yellow("⚠️ --yes flag detected, but migration requires manual intervention."));
157
+ console.log(chalk_1.default.yellow(" Deployment aborted. Run destroy command to proceed with v1.0.0 upgrade."));
158
+ return true; // Abort deployment
159
+ }
160
+ const { shouldProceed } = await (0, enquirer_1.prompt)({
161
+ type: "confirm",
162
+ name: "shouldProceed",
163
+ message: "Continue with deployment anyway? (Stack will likely fail to update)",
164
+ initial: false,
165
+ });
166
+ if (shouldProceed) {
167
+ console.log();
168
+ console.log(chalk_1.default.yellow("⚠️ Proceeding despite legacy architecture warning."));
169
+ console.log(chalk_1.default.yellow(" Deployment may fail due to incompatible resource types."));
170
+ console.log();
171
+ return false; // Don't abort, let user try
172
+ }
173
+ console.log();
174
+ console.log(chalk_1.default.yellow("Deployment aborted. Run destroy command to proceed with v1.0.0 upgrade."));
175
+ return true; // Abort deployment
176
+ }
122
177
  /**
123
178
  * Get the most recent dev version tag (without 'v' prefix)
124
179
  * Returns null if no dev tags found
@@ -352,37 +407,74 @@ async function deploy(stackArn, benchlingSecret, config, options) {
352
407
  spinner.succeed(`CDK is bootstrapped (${bootstrapStatus.status})`);
353
408
  }
354
409
  }
355
- // Check for v0.8.x stack and warn about migration
356
- spinner.start("Checking for legacy stack or failed deployment...");
357
- const isLegacyStack = await detectLegacyStack(deployRegion);
358
- if (isLegacyStack) {
359
- spinner.fail("Stack must be destroyed before deploying v0.9.0");
360
- console.log();
361
- console.log((0, boxen_1.default)(`${chalk_1.default.red.bold(" Stack Destruction Required")}\n\n` +
362
- `${chalk_1.default.yellow("The existing BenchlingWebhookStack must be destroyed before deploying v0.9.0.")}\n\n` +
363
- `${chalk_1.default.bold("This could be due to:")}\n` +
364
- " • v0.8.x → v0.9.0 migration (REST API + ALB → HTTP API + VPC Link)\n" +
365
- " • Failed deployment in rollback state (UPDATE_ROLLBACK_COMPLETE)\n" +
366
- " • Incomplete stack that needs cleanup\n\n" +
367
- `${chalk_1.default.red.bold("⚠ CloudFormation cannot update stacks in these states.")}\n\n` +
368
- `${chalk_1.default.yellow("To proceed, you must first destroy the existing stack.")}`, { padding: 1, borderColor: "red", borderStyle: "double" }));
369
- console.log();
370
- console.log(chalk_1.default.bold("Required steps:"));
371
- console.log();
372
- console.log(` ${chalk_1.default.cyan("1. Destroy the existing v0.8.x stack:")}`);
373
- console.log(chalk_1.default.dim(` npx @quiltdata/benchling-webhook destroy --profile ${options.profileName} --stage ${options.stage}`));
374
- console.log();
375
- console.log(` ${chalk_1.default.cyan("2. Deploy v0.9.0:")}`);
376
- console.log(chalk_1.default.dim(` npx @quiltdata/benchling-webhook deploy --profile ${options.profileName} --stage ${options.stage}`));
410
+ // Check for rollback or failed state
411
+ spinner.start("Checking stack status...");
412
+ const stackCheck = await checkStackStatus(deployRegion);
413
+ const needsAttention = ["in_progress", "failed", "rolled_back"].includes(stackCheck.statusCategory);
414
+ if (needsAttention) {
415
+ const isActiveRollback = stackCheck.statusCategory === "in_progress";
416
+ const borderColor = isActiveRollback ? "red" : "yellow";
417
+ const title = isActiveRollback ? "Stack is rolling back" : "Stack in problematic state";
418
+ spinner[isActiveRollback ? "fail" : "warn"]("Stack state may block update");
377
419
  console.log();
378
- console.log(` ${chalk_1.default.cyan("3. Update Benchling webhook URL")} to the new HTTP API endpoint`);
420
+ console.log((0, boxen_1.default)(`${chalk_1.default.red.bold(title)}\n\n` +
421
+ `${chalk_1.default.bold("Stack status:")} ${stackCheck.stackStatus}\n\n` +
422
+ `${chalk_1.default.bold("Options:")}\n` +
423
+ (isActiveRollback
424
+ ? " 1) Wait/abort (recommended while rollback is in progress)\n 2) Destroy and redeploy if stuck\n 3) Proceed anyway (likely to fail)\n"
425
+ : " 1) Proceed with deploy\n 2) Destroy and redeploy clean\n 3) Abort\n"), { padding: 1, borderColor, borderStyle: "round" }));
379
426
  console.log();
380
- console.log(chalk_1.default.dim("See MIGRATION.md for full details:"));
381
- console.log(chalk_1.default.dim("https://github.com/quiltdata/benchling-webhook/blob/main/MIGRATION.md"));
382
- console.log();
383
- process.exit(1);
427
+ const { proceedChoice } = await (0, enquirer_1.prompt)([
428
+ {
429
+ type: "select",
430
+ name: "proceedChoice",
431
+ message: "How would you like to proceed?",
432
+ choices: isActiveRollback
433
+ ? [
434
+ { name: "abort", message: "Abort / wait for rollback to finish (recommended)" },
435
+ { name: "destroy", message: "Destroy existing stack then redeploy clean" },
436
+ { name: "proceed", message: "Proceed anyway (likely to fail while rollback active)" },
437
+ ]
438
+ : [
439
+ { name: "proceed", message: "Proceed with deployment" },
440
+ { name: "destroy", message: "Destroy existing stack then redeploy clean" },
441
+ { name: "abort", message: "Abort now" },
442
+ ],
443
+ initial: isActiveRollback ? 0 : 0,
444
+ },
445
+ ]);
446
+ if (proceedChoice === "destroy") {
447
+ console.log();
448
+ console.log(chalk_1.default.bold("Run destroy then redeploy:"));
449
+ console.log(chalk_1.default.cyan(` npx @quiltdata/benchling-webhook destroy --profile ${options.profileName} --stage ${options.stage}`));
450
+ console.log(chalk_1.default.cyan(` npx @quiltdata/benchling-webhook deploy --profile ${options.profileName} --stage ${options.stage}`));
451
+ console.log();
452
+ process.exit(1);
453
+ }
454
+ if (proceedChoice === "abort") {
455
+ console.log(chalk_1.default.yellow("Aborting by user choice."));
456
+ process.exit(1);
457
+ }
458
+ spinner.warn("Proceeding despite stack state; deployment may fail.");
459
+ }
460
+ else {
461
+ spinner.succeed("Stack status OK - ready for deployment");
462
+ }
463
+ // Check for legacy REST API architecture (v0.8.x)
464
+ if (stackCheck.stackExists && !options.force) {
465
+ spinner.start("Checking for legacy architecture...");
466
+ const hasLegacyRestApi = await detectLegacyRestApi("BenchlingWebhookStack", deployRegion);
467
+ if (hasLegacyRestApi) {
468
+ spinner.fail("Legacy REST API Gateway detected (v0.8.x)");
469
+ const shouldAbort = await promptLegacyMigration(options.profileName, options.stage, options.yes || false);
470
+ if (shouldAbort) {
471
+ process.exit(1);
472
+ }
473
+ }
474
+ else {
475
+ spinner.succeed("No legacy architecture detected");
476
+ }
384
477
  }
385
- spinner.succeed("Stack status OK - ready for deployment");
386
478
  // Load Quilt configuration from config.quilt.*
387
479
  spinner.start("Loading Quilt configuration...");
388
480
  // Validate required fields
@@ -533,6 +625,8 @@ async function deploy(stackArn, benchlingSecret, config, options) {
533
625
  CDK_DEFAULT_REGION: deployRegion,
534
626
  QUILT_STACK_ARN: stackArn,
535
627
  BENCHLING_SECRET: benchlingSecret,
628
+ // Pass VPC configuration if specified in profile
629
+ ...(config.deployment.vpc?.vpcId && { VPC_ID: config.deployment.vpc.vpcId }),
536
630
  },
537
631
  });
538
632
  console.log();