@quiltdata/benchling-webhook 0.9.9 → 0.10.0-20251225T080117Z

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 (74) hide show
  1. package/README.md +0 -132
  2. package/dist/bin/benchling-webhook.d.ts +29 -5
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +28 -132
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/commands/deploy.d.ts +7 -1
  7. package/dist/bin/commands/deploy.d.ts.map +1 -1
  8. package/dist/bin/commands/deploy.js +49 -152
  9. package/dist/bin/commands/deploy.js.map +1 -1
  10. package/dist/bin/commands/infer-quilt-config.d.ts +2 -5
  11. package/dist/bin/commands/infer-quilt-config.d.ts.map +1 -1
  12. package/dist/bin/commands/infer-quilt-config.js +12 -31
  13. package/dist/bin/commands/infer-quilt-config.js.map +1 -1
  14. package/dist/bin/commands/setup-wizard.d.ts +0 -1
  15. package/dist/bin/commands/setup-wizard.d.ts.map +1 -1
  16. package/dist/bin/commands/setup-wizard.js +0 -1
  17. package/dist/bin/commands/setup-wizard.js.map +1 -1
  18. package/dist/bin/commands/status.d.ts.map +1 -1
  19. package/dist/bin/commands/status.js +0 -4
  20. package/dist/bin/commands/status.js.map +1 -1
  21. package/dist/bin/commands/sync-secrets.d.ts.map +1 -1
  22. package/dist/bin/commands/sync-secrets.js +0 -4
  23. package/dist/bin/commands/sync-secrets.js.map +1 -1
  24. package/dist/bin/xdg-launch.d.ts.map +1 -1
  25. package/dist/bin/xdg-launch.js +5 -4
  26. package/dist/bin/xdg-launch.js.map +1 -1
  27. package/dist/lib/benchling-webhook-stack.d.ts +8 -7
  28. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  29. package/dist/lib/benchling-webhook-stack.js +9 -33
  30. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  31. package/dist/lib/fargate-service.d.ts +6 -7
  32. package/dist/lib/fargate-service.d.ts.map +1 -1
  33. package/dist/lib/fargate-service.js +27 -32
  34. package/dist/lib/fargate-service.js.map +1 -1
  35. package/dist/lib/rest-api-gateway.d.ts +2 -2
  36. package/dist/lib/rest-api-gateway.d.ts.map +1 -1
  37. package/dist/lib/rest-api-gateway.js +2 -9
  38. package/dist/lib/rest-api-gateway.js.map +1 -1
  39. package/dist/lib/types/config.d.ts +23 -35
  40. package/dist/lib/types/config.d.ts.map +1 -1
  41. package/dist/lib/types/config.js +2 -3
  42. package/dist/lib/types/config.js.map +1 -1
  43. package/dist/lib/types/stack-config.d.ts +181 -0
  44. package/dist/lib/types/stack-config.d.ts.map +1 -0
  45. package/dist/lib/types/stack-config.js +17 -0
  46. package/dist/lib/types/stack-config.js.map +1 -0
  47. package/dist/lib/utils/config-transform.d.ts +93 -0
  48. package/dist/lib/utils/config-transform.d.ts.map +1 -0
  49. package/dist/lib/utils/config-transform.js +270 -0
  50. package/dist/lib/utils/config-transform.js.map +1 -0
  51. package/dist/lib/utils/service-resolver.d.ts +1 -15
  52. package/dist/lib/utils/service-resolver.d.ts.map +1 -1
  53. package/dist/lib/utils/service-resolver.js +2 -11
  54. package/dist/lib/utils/service-resolver.js.map +1 -1
  55. package/dist/lib/utils/stack-inference.d.ts +7 -16
  56. package/dist/lib/utils/stack-inference.d.ts.map +1 -1
  57. package/dist/lib/utils/stack-inference.js +9 -25
  58. package/dist/lib/utils/stack-inference.js.map +1 -1
  59. package/dist/lib/wizard/phase2-stack-query.d.ts.map +1 -1
  60. package/dist/lib/wizard/phase2-stack-query.js +11 -24
  61. package/dist/lib/wizard/phase2-stack-query.js.map +1 -1
  62. package/dist/lib/wizard/phase3-parameter-collection.d.ts.map +1 -1
  63. package/dist/lib/wizard/phase3-parameter-collection.js +12 -113
  64. package/dist/lib/wizard/phase3-parameter-collection.js.map +1 -1
  65. package/dist/lib/wizard/phase6-integrated-mode.d.ts.map +1 -1
  66. package/dist/lib/wizard/phase6-integrated-mode.js +6 -15
  67. package/dist/lib/wizard/phase6-integrated-mode.js.map +1 -1
  68. package/dist/lib/wizard/phase7-standalone-mode.d.ts.map +1 -1
  69. package/dist/lib/wizard/phase7-standalone-mode.js +6 -15
  70. package/dist/lib/wizard/phase7-standalone-mode.js.map +1 -1
  71. package/dist/lib/wizard/types.d.ts +4 -12
  72. package/dist/lib/wizard/types.d.ts.map +1 -1
  73. package/dist/package.json +2 -2
  74. package/package.json +2 -2
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Minimal Stack Configuration Interface
3
+ *
4
+ * This interface defines ONLY the fields required by the CDK stack infrastructure.
5
+ * It is deliberately minimal to:
6
+ * - Reduce coupling between setup wizard and CDK stack
7
+ * - Simplify testing (fewer fields to mock)
8
+ * - Make explicit what the stack actually needs
9
+ *
10
+ * Transformation: ProfileConfig → StackConfig happens in config-transform.ts
11
+ *
12
+ * @module types/stack-config
13
+ * @version 0.10.0
14
+ */
15
+ import type { VpcConfig } from "./config";
16
+ export type { VpcConfig } from "./config";
17
+ /**
18
+ * Minimal Stack Configuration
19
+ *
20
+ * Contains only the fields that the CDK stack actually uses for infrastructure provisioning.
21
+ * Derived from ProfileConfig via profileToStackConfig() transformation.
22
+ *
23
+ * **Design principles:**
24
+ * - Only infrastructure-related fields (no wizard metadata)
25
+ * - Only fields actually referenced in CDK constructs
26
+ * - Optional fields remain optional (preserve deployment flexibility)
27
+ *
28
+ * **What's NOT included:**
29
+ * - Benchling OAuth credentials (stored in secret, referenced by ARN)
30
+ * - Package configuration (passed as env vars to container)
31
+ * - Logging level (passed as env var to container)
32
+ * - Metadata fields (_metadata, _inherits)
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const stackConfig: StackConfig = {
37
+ * benchling: {
38
+ * secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:benchling-..."
39
+ * },
40
+ * quilt: {
41
+ * catalog: "quilt.example.com",
42
+ * database: "quilt_catalog",
43
+ * queueUrl: "https://sqs.us-east-1.amazonaws.com/123456789012/quilt-queue",
44
+ * region: "us-east-1"
45
+ * },
46
+ * deployment: {
47
+ * region: "us-east-1",
48
+ * imageTag: "0.10.0"
49
+ * }
50
+ * };
51
+ * ```
52
+ */
53
+ export interface StackConfig {
54
+ /**
55
+ * Benchling configuration (secret reference only)
56
+ */
57
+ benchling: {
58
+ /**
59
+ * AWS Secrets Manager ARN for Benchling OAuth credentials
60
+ *
61
+ * Stack uses this to grant ECS task read access to the secret.
62
+ * FastAPI reads credentials from secret at runtime.
63
+ *
64
+ * @example "arn:aws:secretsmanager:us-east-1:123456789012:secret:benchling-oauth-abc123"
65
+ */
66
+ secretArn: string;
67
+ };
68
+ /**
69
+ * Quilt catalog configuration (service endpoints only)
70
+ */
71
+ quilt: {
72
+ /**
73
+ * Quilt catalog domain (without protocol)
74
+ *
75
+ * Passed to container as QUILT_WEB_HOST environment variable.
76
+ *
77
+ * @example "quilt.example.com"
78
+ */
79
+ catalog: string;
80
+ /**
81
+ * Athena/Glue database name for catalog metadata
82
+ *
83
+ * Passed to container as ATHENA_USER_DATABASE environment variable.
84
+ *
85
+ * @example "quilt_catalog"
86
+ */
87
+ database: string;
88
+ /**
89
+ * SQS queue URL for package creation jobs
90
+ *
91
+ * Passed to container as PACKAGER_SQS_URL environment variable.
92
+ * Stack also grants ECS task send message permissions.
93
+ *
94
+ * @example "https://sqs.us-east-1.amazonaws.com/123456789012/quilt-package-queue"
95
+ */
96
+ queueUrl: string;
97
+ /**
98
+ * AWS region for Quilt resources
99
+ *
100
+ * Used for SQS/S3 client configuration.
101
+ *
102
+ * @example "us-east-1"
103
+ */
104
+ region: string;
105
+ /**
106
+ * IAM managed policy ARN for S3 bucket write access (optional)
107
+ *
108
+ * This policy grants read-write permissions to all Quilt S3 buckets.
109
+ * Attached directly to the ECS task role, eliminating the need for role assumption.
110
+ *
111
+ * Resolved from BucketWritePolicy stack resource during setup.
112
+ *
113
+ * @example "arn:aws:iam::123456789012:policy/quilt-staging-BucketWritePolicy-XXXXX"
114
+ */
115
+ bucketWritePolicyArn?: string;
116
+ /**
117
+ * IAM managed policy ARN for Athena query access (optional)
118
+ *
119
+ * This policy grants permissions to execute Athena queries, access Glue catalog,
120
+ * and write query results to the Athena results bucket.
121
+ * Attached directly to the ECS task role.
122
+ *
123
+ * Resolved from UserAthenaNonManagedRolePolicy stack resource during setup.
124
+ *
125
+ * @example "arn:aws:iam::123456789012:policy/quilt-staging-UserAthenaNonManagedRolePolicy-XXXXX"
126
+ */
127
+ athenaUserPolicyArn?: string;
128
+ };
129
+ /**
130
+ * AWS deployment configuration
131
+ */
132
+ deployment: {
133
+ /**
134
+ * AWS region for deployment
135
+ *
136
+ * @example "us-east-1"
137
+ */
138
+ region: string;
139
+ /**
140
+ * Docker image tag to deploy
141
+ *
142
+ * @example "latest"
143
+ * @example "0.10.0"
144
+ * @default "latest"
145
+ */
146
+ imageTag?: string;
147
+ /**
148
+ * VPC configuration for ECS deployment (optional)
149
+ *
150
+ * If not specified, a new VPC will be created with private subnets and NAT Gateway.
151
+ */
152
+ vpc?: VpcConfig;
153
+ /**
154
+ * CloudFormation stack name (optional)
155
+ *
156
+ * If not specified, stack name is auto-generated based on profile:
157
+ * - "default" profile → "BenchlingWebhookStack" (backwards compatible)
158
+ * - Other profiles → "BenchlingWebhookStack-{profile}"
159
+ *
160
+ * @example "BenchlingWebhookStack-sales"
161
+ * @default Auto-generated based on profile name
162
+ */
163
+ stackName?: string;
164
+ };
165
+ /**
166
+ * Security configuration (optional)
167
+ */
168
+ security?: {
169
+ /**
170
+ * Comma-separated list of allowed IP addresses/CIDR blocks for webhook endpoints
171
+ *
172
+ * Enforced via REST API Gateway resource policy (free).
173
+ * Empty string means no IP filtering (all IPs allowed).
174
+ *
175
+ * @example "192.168.1.0/24,10.0.0.0/8"
176
+ * @default ""
177
+ */
178
+ webhookAllowList?: string;
179
+ };
180
+ }
181
+ //# sourceMappingURL=stack-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-config.d.ts","sourceRoot":"","sources":["../../../lib/types/stack-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,WAAW;IACxB;;OAEG;IACH,SAAS,EAAE;QACP;;;;;;;WAOG;QACH,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF;;OAEG;IACH,KAAK,EAAE;QACH;;;;;;WAMG;QACH,OAAO,EAAE,MAAM,CAAC;QAEhB;;;;;;WAMG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;;;;;WAOG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;;;;WAMG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;;;;;;;;WASG;QACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAE9B;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IAEF;;OAEG;IACH,UAAU,EAAE;QACR;;;;WAIG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAElB;;;;WAIG;QACH,GAAG,CAAC,EAAE,SAAS,CAAC;QAEhB;;;;;;;;;WASG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE;QACP;;;;;;;;WAQG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACL"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Minimal Stack Configuration Interface
4
+ *
5
+ * This interface defines ONLY the fields required by the CDK stack infrastructure.
6
+ * It is deliberately minimal to:
7
+ * - Reduce coupling between setup wizard and CDK stack
8
+ * - Simplify testing (fewer fields to mock)
9
+ * - Make explicit what the stack actually needs
10
+ *
11
+ * Transformation: ProfileConfig → StackConfig happens in config-transform.ts
12
+ *
13
+ * @module types/stack-config
14
+ * @version 0.10.0
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //# sourceMappingURL=stack-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-config.js","sourceRoot":"","sources":["../../../lib/types/stack-config.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Configuration Transformation Utilities
3
+ *
4
+ * Transforms ProfileConfig (XDG user configuration) into StackConfig (minimal CDK interface).
5
+ * This module implements the separation between user-facing configuration and infrastructure needs.
6
+ *
7
+ * **Key principles:**
8
+ * - ProfileConfig contains ALL configuration (wizard, deployment, runtime)
9
+ * - StackConfig contains ONLY infrastructure-related fields
10
+ * - Transformation is one-way: ProfileConfig → StackConfig
11
+ * - Validation ensures required fields are present
12
+ *
13
+ * @module utils/config-transform
14
+ * @version 0.10.0
15
+ */
16
+ import type { ProfileConfig, ValidationResult } from "../types/config";
17
+ import type { StackConfig } from "../types/stack-config";
18
+ /**
19
+ * Transform ProfileConfig to StackConfig
20
+ *
21
+ * Extracts only the fields required by the CDK stack infrastructure from the full ProfileConfig.
22
+ * This creates a clean separation between user configuration and infrastructure needs.
23
+ *
24
+ * **Transformation logic:**
25
+ * - Benchling: Only secretArn (credentials stored in secret)
26
+ * - Quilt: Service endpoints (catalog, database, queueUrl, region, bucketWritePolicyArn, athenaUserPolicyArn)
27
+ * - Deployment: Infrastructure settings (region, imageTag, vpc, stackName)
28
+ * - Security: Optional IP allowlist
29
+ *
30
+ * **Excluded fields:**
31
+ * - benchling.tenant, clientId, appDefinitionId (read from secret at runtime)
32
+ * - packages.* (passed as environment variables)
33
+ * - logging.* (passed as environment variables)
34
+ * - _metadata, _inherits (wizard metadata)
35
+ *
36
+ * @param profile - Full profile configuration from XDG
37
+ * @returns Minimal stack configuration for CDK
38
+ * @throws Error if required fields are missing
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const profile = XDGConfig.readProfile("default");
43
+ * const stackConfig = profileToStackConfig(profile);
44
+ * createStack(stackConfig); // Pass to CDK stack
45
+ * ```
46
+ */
47
+ export declare function profileToStackConfig(profile: ProfileConfig, options?: {
48
+ skipValidation?: boolean;
49
+ }): StackConfig;
50
+ /**
51
+ * Validate ProfileConfig for stack deployment
52
+ *
53
+ * Checks that all required fields for CDK stack creation are present and valid.
54
+ * This validation is run before transformation to provide clear error messages.
55
+ *
56
+ * **Required fields:**
57
+ * - benchling.secretArn (secret must exist in AWS Secrets Manager)
58
+ * - quilt.catalog (catalog domain)
59
+ * - quilt.database (Athena database name)
60
+ * - quilt.queueUrl (SQS queue URL)
61
+ * - quilt.region (AWS region)
62
+ * - deployment.region (deployment region)
63
+ *
64
+ * **Optional fields:**
65
+ * - quilt.bucketWritePolicyArn (IAM managed policy for S3 access)
66
+ * - quilt.athenaUserPolicyArn (IAM managed policy for Athena access)
67
+ * - deployment.imageTag (defaults to "latest")
68
+ * - deployment.vpc (defaults to creating new VPC)
69
+ * - deployment.stackName (auto-generated from profile name)
70
+ * - security.webhookAllowList (defaults to no IP filtering)
71
+ *
72
+ * @param config - Profile configuration to validate
73
+ * @returns Validation result with errors and warnings
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const profile = XDGConfig.readProfile("default");
78
+ * const result = validateStackConfig(profile);
79
+ *
80
+ * if (!result.isValid) {
81
+ * console.error("Configuration errors:");
82
+ * result.errors.forEach(err => console.error(` - ${err}`));
83
+ * process.exit(1);
84
+ * }
85
+ *
86
+ * if (result.warnings && result.warnings.length > 0) {
87
+ * console.warn("Configuration warnings:");
88
+ * result.warnings.forEach(warn => console.warn(` - ${warn}`));
89
+ * }
90
+ * ```
91
+ */
92
+ export declare function validateStackConfig(config: ProfileConfig): ValidationResult;
93
+ //# sourceMappingURL=config-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-transform.d.ts","sourceRoot":"","sources":["../../../lib/utils/config-transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACvC,WAAW,CA2Db;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CA4F3E"}
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration Transformation Utilities
4
+ *
5
+ * Transforms ProfileConfig (XDG user configuration) into StackConfig (minimal CDK interface).
6
+ * This module implements the separation between user-facing configuration and infrastructure needs.
7
+ *
8
+ * **Key principles:**
9
+ * - ProfileConfig contains ALL configuration (wizard, deployment, runtime)
10
+ * - StackConfig contains ONLY infrastructure-related fields
11
+ * - Transformation is one-way: ProfileConfig → StackConfig
12
+ * - Validation ensures required fields are present
13
+ *
14
+ * @module utils/config-transform
15
+ * @version 0.10.0
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.profileToStackConfig = profileToStackConfig;
19
+ exports.validateStackConfig = validateStackConfig;
20
+ /**
21
+ * Transform ProfileConfig to StackConfig
22
+ *
23
+ * Extracts only the fields required by the CDK stack infrastructure from the full ProfileConfig.
24
+ * This creates a clean separation between user configuration and infrastructure needs.
25
+ *
26
+ * **Transformation logic:**
27
+ * - Benchling: Only secretArn (credentials stored in secret)
28
+ * - Quilt: Service endpoints (catalog, database, queueUrl, region, bucketWritePolicyArn, athenaUserPolicyArn)
29
+ * - Deployment: Infrastructure settings (region, imageTag, vpc, stackName)
30
+ * - Security: Optional IP allowlist
31
+ *
32
+ * **Excluded fields:**
33
+ * - benchling.tenant, clientId, appDefinitionId (read from secret at runtime)
34
+ * - packages.* (passed as environment variables)
35
+ * - logging.* (passed as environment variables)
36
+ * - _metadata, _inherits (wizard metadata)
37
+ *
38
+ * @param profile - Full profile configuration from XDG
39
+ * @returns Minimal stack configuration for CDK
40
+ * @throws Error if required fields are missing
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const profile = XDGConfig.readProfile("default");
45
+ * const stackConfig = profileToStackConfig(profile);
46
+ * createStack(stackConfig); // Pass to CDK stack
47
+ * ```
48
+ */
49
+ function profileToStackConfig(profile, options) {
50
+ // Validate required fields first (unless skipped for testing)
51
+ if (!options?.skipValidation) {
52
+ const validation = validateStackConfig(profile);
53
+ if (!validation.isValid) {
54
+ const errors = validation.errors.join("\n - ");
55
+ throw new Error(`Invalid profile configuration for stack deployment:\n - ${errors}`);
56
+ }
57
+ }
58
+ // Build minimal StackConfig with only required fields
59
+ const stackConfig = {
60
+ benchling: {
61
+ secretArn: profile.benchling.secretArn,
62
+ },
63
+ quilt: {
64
+ catalog: profile.quilt.catalog,
65
+ database: profile.quilt.database,
66
+ queueUrl: profile.quilt.queueUrl,
67
+ region: profile.quilt.region,
68
+ },
69
+ deployment: {
70
+ region: profile.deployment.region,
71
+ },
72
+ };
73
+ // Add optional fields if present
74
+ // Quilt managed policy ARNs (for S3 and Athena access)
75
+ if (profile.quilt.bucketWritePolicyArn) {
76
+ stackConfig.quilt.bucketWritePolicyArn = profile.quilt.bucketWritePolicyArn;
77
+ }
78
+ if (profile.quilt.athenaUserPolicyArn) {
79
+ stackConfig.quilt.athenaUserPolicyArn = profile.quilt.athenaUserPolicyArn;
80
+ }
81
+ // Deployment image tag
82
+ if (profile.deployment.imageTag) {
83
+ stackConfig.deployment.imageTag = profile.deployment.imageTag;
84
+ }
85
+ // VPC configuration
86
+ if (profile.deployment.vpc) {
87
+ stackConfig.deployment.vpc = profile.deployment.vpc;
88
+ }
89
+ // Stack name
90
+ if (profile.deployment.stackName) {
91
+ stackConfig.deployment.stackName = profile.deployment.stackName;
92
+ }
93
+ // Security configuration
94
+ if (profile.security?.webhookAllowList) {
95
+ stackConfig.security = {
96
+ webhookAllowList: profile.security.webhookAllowList,
97
+ };
98
+ }
99
+ return stackConfig;
100
+ }
101
+ /**
102
+ * Validate ProfileConfig for stack deployment
103
+ *
104
+ * Checks that all required fields for CDK stack creation are present and valid.
105
+ * This validation is run before transformation to provide clear error messages.
106
+ *
107
+ * **Required fields:**
108
+ * - benchling.secretArn (secret must exist in AWS Secrets Manager)
109
+ * - quilt.catalog (catalog domain)
110
+ * - quilt.database (Athena database name)
111
+ * - quilt.queueUrl (SQS queue URL)
112
+ * - quilt.region (AWS region)
113
+ * - deployment.region (deployment region)
114
+ *
115
+ * **Optional fields:**
116
+ * - quilt.bucketWritePolicyArn (IAM managed policy for S3 access)
117
+ * - quilt.athenaUserPolicyArn (IAM managed policy for Athena access)
118
+ * - deployment.imageTag (defaults to "latest")
119
+ * - deployment.vpc (defaults to creating new VPC)
120
+ * - deployment.stackName (auto-generated from profile name)
121
+ * - security.webhookAllowList (defaults to no IP filtering)
122
+ *
123
+ * @param config - Profile configuration to validate
124
+ * @returns Validation result with errors and warnings
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const profile = XDGConfig.readProfile("default");
129
+ * const result = validateStackConfig(profile);
130
+ *
131
+ * if (!result.isValid) {
132
+ * console.error("Configuration errors:");
133
+ * result.errors.forEach(err => console.error(` - ${err}`));
134
+ * process.exit(1);
135
+ * }
136
+ *
137
+ * if (result.warnings && result.warnings.length > 0) {
138
+ * console.warn("Configuration warnings:");
139
+ * result.warnings.forEach(warn => console.warn(` - ${warn}`));
140
+ * }
141
+ * ```
142
+ */
143
+ function validateStackConfig(config) {
144
+ const errors = [];
145
+ const warnings = [];
146
+ // Validate required Benchling fields
147
+ if (!config.benchling) {
148
+ errors.push("Missing 'benchling' configuration section");
149
+ }
150
+ else {
151
+ if (!config.benchling.secretArn) {
152
+ errors.push("Missing 'benchling.secretArn' - run 'npm run setup:sync-secrets' to create secret");
153
+ }
154
+ else if (!config.benchling.secretArn.startsWith("arn:aws:secretsmanager:")) {
155
+ errors.push(`Invalid 'benchling.secretArn' format: ${config.benchling.secretArn}`);
156
+ }
157
+ }
158
+ // Validate required Quilt fields
159
+ if (!config.quilt) {
160
+ errors.push("Missing 'quilt' configuration section");
161
+ }
162
+ else {
163
+ if (!config.quilt.catalog) {
164
+ errors.push("Missing 'quilt.catalog' - run 'npm run setup' to configure");
165
+ }
166
+ if (!config.quilt.database) {
167
+ errors.push("Missing 'quilt.database' - run 'npm run setup' to configure");
168
+ }
169
+ if (!config.quilt.queueUrl) {
170
+ errors.push("Missing 'quilt.queueUrl' - run 'npm run setup' to configure");
171
+ }
172
+ else if (!config.quilt.queueUrl.startsWith("https://sqs.")) {
173
+ errors.push(`Invalid 'quilt.queueUrl' format: ${config.quilt.queueUrl}`);
174
+ }
175
+ if (!config.quilt.region) {
176
+ errors.push("Missing 'quilt.region' - run 'npm run setup' to configure");
177
+ }
178
+ // Optional but recommended fields
179
+ if (!config.quilt.bucketWritePolicyArn) {
180
+ warnings.push("Missing 'quilt.bucketWritePolicyArn' - S3 write operations may fail");
181
+ }
182
+ else if (!config.quilt.bucketWritePolicyArn.startsWith("arn:aws:iam::")) {
183
+ errors.push(`Invalid 'quilt.bucketWritePolicyArn' format: ${config.quilt.bucketWritePolicyArn}`);
184
+ }
185
+ if (config.quilt.athenaUserPolicyArn && !config.quilt.athenaUserPolicyArn.startsWith("arn:aws:iam::")) {
186
+ errors.push(`Invalid 'quilt.athenaUserPolicyArn' format: ${config.quilt.athenaUserPolicyArn}`);
187
+ }
188
+ }
189
+ // Validate required deployment fields
190
+ if (!config.deployment) {
191
+ errors.push("Missing 'deployment' configuration section");
192
+ }
193
+ else {
194
+ if (!config.deployment.region) {
195
+ errors.push("Missing 'deployment.region' - run 'npm run setup' to configure");
196
+ }
197
+ // Validate VPC configuration if present
198
+ if (config.deployment.vpc) {
199
+ const vpc = config.deployment.vpc;
200
+ if (vpc.vpcId) {
201
+ // If VPC ID is specified, validate required subnet fields
202
+ if (!vpc.privateSubnetIds || vpc.privateSubnetIds.length < 2) {
203
+ errors.push("VPC configuration requires at least 2 private subnets in different AZs");
204
+ }
205
+ if (!vpc.availabilityZones || vpc.availabilityZones.length < 2) {
206
+ errors.push("VPC configuration requires at least 2 availability zones");
207
+ }
208
+ if (!vpc.vpcCidrBlock) {
209
+ warnings.push("Missing 'deployment.vpc.vpcCidrBlock' - CDK synthesis may fail");
210
+ }
211
+ }
212
+ }
213
+ }
214
+ // Validate security configuration if present
215
+ if (config.security?.webhookAllowList) {
216
+ const allowList = config.security.webhookAllowList.trim();
217
+ if (allowList.length > 0) {
218
+ // Basic validation: check for valid CIDR blocks
219
+ const cidrs = allowList.split(",").map(s => s.trim());
220
+ for (const cidr of cidrs) {
221
+ if (!isValidCidr(cidr)) {
222
+ errors.push(`Invalid CIDR block in webhookAllowList: ${cidr}`);
223
+ }
224
+ }
225
+ }
226
+ }
227
+ return {
228
+ isValid: errors.length === 0,
229
+ errors,
230
+ warnings: warnings.length > 0 ? warnings : undefined,
231
+ };
232
+ }
233
+ /**
234
+ * Validate CIDR block format
235
+ *
236
+ * Checks if a string is a valid IPv4 CIDR block (e.g., "192.168.1.0/24")
237
+ * or a single IP address (e.g., "192.168.1.1")
238
+ *
239
+ * @param cidr - CIDR block string to validate
240
+ * @returns True if valid, false otherwise
241
+ *
242
+ * @internal
243
+ */
244
+ function isValidCidr(cidr) {
245
+ // Simple regex for IPv4 CIDR validation
246
+ // Format: xxx.xxx.xxx.xxx/yy or xxx.xxx.xxx.xxx
247
+ const cidrPattern = /^(\d{1,3}\.){3}\d{1,3}(\/\d{1,2})?$/;
248
+ if (!cidrPattern.test(cidr)) {
249
+ return false;
250
+ }
251
+ // Validate IP octets (0-255)
252
+ const parts = cidr.split("/");
253
+ const ip = parts[0];
254
+ const octets = ip.split(".");
255
+ for (const octet of octets) {
256
+ const num = parseInt(octet, 10);
257
+ if (num < 0 || num > 255) {
258
+ return false;
259
+ }
260
+ }
261
+ // Validate CIDR prefix (0-32)
262
+ if (parts.length === 2) {
263
+ const prefix = parseInt(parts[1], 10);
264
+ if (prefix < 0 || prefix > 32) {
265
+ return false;
266
+ }
267
+ }
268
+ return true;
269
+ }
270
+ //# sourceMappingURL=config-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-transform.js","sourceRoot":"","sources":["../../../lib/utils/config-transform.ts"],"names":[],"mappings":"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"}
@@ -30,11 +30,6 @@ export interface QuiltServices {
30
30
  * @example "quilt.example.com"
31
31
  */
32
32
  quiltWebHost: string;
33
- /**
34
- * Iceberg database name (optional)
35
- * @example "quilt_iceberg"
36
- */
37
- icebergDatabase?: string;
38
33
  /**
39
34
  * Athena workgroup for user queries (optional, from Quilt stack discovery)
40
35
  * @example "quilt-user-workgroup"
@@ -45,11 +40,6 @@ export interface QuiltServices {
45
40
  * @example "aws-athena-query-results-123456789012-us-east-1"
46
41
  */
47
42
  athenaResultsBucket?: string;
48
- /**
49
- * Iceberg workgroup name (optional, from Quilt stack discovery)
50
- * @example "quilt-iceberg-workgroup"
51
- */
52
- icebergWorkgroup?: string;
53
43
  }
54
44
  /**
55
45
  * Options for service resolution
@@ -127,10 +117,8 @@ export declare function validateQueueUrl(url: string): boolean;
127
117
  * - `QuiltWebHost`: Quilt catalog web host (e.g., catalog.example.com)
128
118
  *
129
119
  * **Optional Stack Outputs**:
130
- * - `IcebergDatabase`: Iceberg database name (if available)
131
120
  * - `UserAthenaWorkgroupName`: Athena workgroup for user queries
132
121
  * - `AthenaResultsBucketName`: S3 bucket for Athena query results
133
- * - `IcebergWorkgroupName`: Iceberg workgroup name
134
122
  *
135
123
  * @param options - Service resolver options
136
124
  * @returns Resolved service endpoints
@@ -145,10 +133,8 @@ export declare function validateQueueUrl(url: string): boolean;
145
133
  * // packagerQueueUrl: 'https://sqs.us-east-1.amazonaws.com/123/quilt-queue',
146
134
  * // athenaUserDatabase: 'quilt_catalog',
147
135
  * // quiltWebHost: 'quilt.example.com',
148
- * // icebergDatabase: 'quilt_iceberg' (optional),
149
136
  * // athenaUserWorkgroup: 'quilt-user-workgroup' (optional),
150
- * // athenaResultsBucket: 'aws-athena-query-results-...' (optional),
151
- * // icebergWorkgroup: 'quilt-iceberg-workgroup' (optional)
137
+ * // athenaResultsBucket: 'aws-athena-query-results-...' (optional)
152
138
  * // }
153
139
  */
154
140
  export declare function resolveQuiltServices(options: ServiceResolverOptions): Promise<QuiltServices>;
@@ -1 +1 @@
1
- {"version":3,"file":"service-resolver.d.ts","sourceRoot":"","sources":["../../../lib/utils/service-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,oBAAoB,EAEvB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAGvB,UAAU,CAAC,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,MAAM;gBAFhC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,OAAO,CAAC,EAAE,MAAM,YAAA;IAUpC,MAAM,IAAI,MAAM;CAanB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAkBzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,oBAAoB,CACtC,OAAO,EAAE,sBAAsB,GAChC,OAAO,CAAC,aAAa,CAAC,CA4FxB"}
1
+ {"version":3,"file":"service-resolver.d.ts","sourceRoot":"","sources":["../../../lib/utils/service-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACH,oBAAoB,EAEvB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAGvB,UAAU,CAAC,EAAE,MAAM;aACnB,OAAO,CAAC,EAAE,MAAM;gBAFhC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,OAAO,CAAC,EAAE,MAAM,YAAA;IAUpC,MAAM,IAAI,MAAM;CAanB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAkBzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,oBAAoB,CACtC,OAAO,EAAE,sBAAsB,GAChC,OAAO,CAAC,aAAa,CAAC,CAsFxB"}