@friggframework/devtools 2.0.0-next.61 → 2.0.0-next.62
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/package.json +14 -7
- package/.eslintrc.json +0 -3
- package/CHANGELOG.md +0 -132
- package/infrastructure/ARCHITECTURE.md +0 -487
- package/infrastructure/CLAUDE.md +0 -481
- package/infrastructure/HEALTH.md +0 -468
- package/infrastructure/README.md +0 -522
- package/infrastructure/__tests__/fixtures/mock-aws-resources.js +0 -391
- package/infrastructure/__tests__/helpers/test-utils.js +0 -277
- package/infrastructure/__tests__/postgres-config.test.js +0 -914
- package/infrastructure/__tests__/template-generation.test.js +0 -687
- package/infrastructure/create-frigg-infrastructure.js +0 -147
- package/infrastructure/docs/POSTGRES-CONFIGURATION.md +0 -630
- package/infrastructure/docs/PRE-DEPLOYMENT-HEALTH-CHECK-SPEC.md +0 -1317
- package/infrastructure/docs/WEBSOCKET-CONFIGURATION.md +0 -105
- package/infrastructure/docs/deployment-instructions.md +0 -268
- package/infrastructure/docs/generate-iam-command.md +0 -278
- package/infrastructure/docs/iam-policy-templates.md +0 -193
- package/infrastructure/domains/database/aurora-builder.js +0 -809
- package/infrastructure/domains/database/aurora-builder.test.js +0 -950
- package/infrastructure/domains/database/aurora-discovery.js +0 -87
- package/infrastructure/domains/database/aurora-discovery.test.js +0 -188
- package/infrastructure/domains/database/aurora-resolver.js +0 -210
- package/infrastructure/domains/database/aurora-resolver.test.js +0 -347
- package/infrastructure/domains/database/migration-builder.js +0 -701
- package/infrastructure/domains/database/migration-builder.test.js +0 -321
- package/infrastructure/domains/database/migration-resolver.js +0 -163
- package/infrastructure/domains/database/migration-resolver.test.js +0 -337
- package/infrastructure/domains/health/application/ports/IPropertyReconciler.js +0 -164
- package/infrastructure/domains/health/application/ports/IResourceDetector.js +0 -129
- package/infrastructure/domains/health/application/ports/IResourceImporter.js +0 -142
- package/infrastructure/domains/health/application/ports/IStackRepository.js +0 -131
- package/infrastructure/domains/health/application/ports/index.js +0 -26
- package/infrastructure/domains/health/application/use-cases/__tests__/execute-resource-import-use-case.test.js +0 -679
- package/infrastructure/domains/health/application/use-cases/__tests__/mismatch-analyzer-method-name.test.js +0 -167
- package/infrastructure/domains/health/application/use-cases/__tests__/repair-via-import-use-case.test.js +0 -1130
- package/infrastructure/domains/health/application/use-cases/execute-resource-import-use-case.js +0 -221
- package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.js +0 -152
- package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.test.js +0 -343
- package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.js +0 -535
- package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.test.js +0 -376
- package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.js +0 -213
- package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.test.js +0 -441
- package/infrastructure/domains/health/docs/ACME-DEV-DRIFT-ANALYSIS.md +0 -267
- package/infrastructure/domains/health/docs/BUILD-VS-DEPLOYED-TEMPLATE-ANALYSIS.md +0 -324
- package/infrastructure/domains/health/docs/ORPHAN-DETECTION-ANALYSIS.md +0 -386
- package/infrastructure/domains/health/docs/SPEC-CLEANUP-COMMAND.md +0 -1419
- package/infrastructure/domains/health/docs/TDD-IMPLEMENTATION-SUMMARY.md +0 -391
- package/infrastructure/domains/health/docs/TEMPLATE-COMPARISON-IMPLEMENTATION.md +0 -551
- package/infrastructure/domains/health/domain/entities/issue.js +0 -299
- package/infrastructure/domains/health/domain/entities/issue.test.js +0 -528
- package/infrastructure/domains/health/domain/entities/property-mismatch.js +0 -108
- package/infrastructure/domains/health/domain/entities/property-mismatch.test.js +0 -275
- package/infrastructure/domains/health/domain/entities/resource.js +0 -159
- package/infrastructure/domains/health/domain/entities/resource.test.js +0 -432
- package/infrastructure/domains/health/domain/entities/stack-health-report.js +0 -306
- package/infrastructure/domains/health/domain/entities/stack-health-report.test.js +0 -601
- package/infrastructure/domains/health/domain/services/__tests__/health-score-percentage-based.test.js +0 -380
- package/infrastructure/domains/health/domain/services/__tests__/import-progress-monitor.test.js +0 -971
- package/infrastructure/domains/health/domain/services/__tests__/import-template-generator.test.js +0 -1150
- package/infrastructure/domains/health/domain/services/__tests__/logical-id-mapper.test.js +0 -672
- package/infrastructure/domains/health/domain/services/__tests__/template-parser.test.js +0 -496
- package/infrastructure/domains/health/domain/services/__tests__/update-progress-monitor.test.js +0 -419
- package/infrastructure/domains/health/domain/services/health-score-calculator.js +0 -248
- package/infrastructure/domains/health/domain/services/health-score-calculator.test.js +0 -504
- package/infrastructure/domains/health/domain/services/import-progress-monitor.js +0 -195
- package/infrastructure/domains/health/domain/services/import-template-generator.js +0 -435
- package/infrastructure/domains/health/domain/services/logical-id-mapper.js +0 -345
- package/infrastructure/domains/health/domain/services/mismatch-analyzer.js +0 -234
- package/infrastructure/domains/health/domain/services/mismatch-analyzer.test.js +0 -431
- package/infrastructure/domains/health/domain/services/property-mutability-config.js +0 -382
- package/infrastructure/domains/health/domain/services/template-parser.js +0 -245
- package/infrastructure/domains/health/domain/services/update-progress-monitor.js +0 -192
- package/infrastructure/domains/health/domain/value-objects/health-score.js +0 -138
- package/infrastructure/domains/health/domain/value-objects/health-score.test.js +0 -267
- package/infrastructure/domains/health/domain/value-objects/property-mutability.js +0 -161
- package/infrastructure/domains/health/domain/value-objects/property-mutability.test.js +0 -198
- package/infrastructure/domains/health/domain/value-objects/resource-state.js +0 -167
- package/infrastructure/domains/health/domain/value-objects/resource-state.test.js +0 -196
- package/infrastructure/domains/health/domain/value-objects/stack-identifier.js +0 -192
- package/infrastructure/domains/health/domain/value-objects/stack-identifier.test.js +0 -262
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-cfn-tagged.test.js +0 -312
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-multi-stack.test.js +0 -367
- package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-relationship-analysis.test.js +0 -432
- package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.js +0 -784
- package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.test.js +0 -1133
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.js +0 -565
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.test.js +0 -554
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.js +0 -318
- package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.test.js +0 -398
- package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.js +0 -777
- package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.test.js +0 -580
- package/infrastructure/domains/integration/integration-builder.js +0 -404
- package/infrastructure/domains/integration/integration-builder.test.js +0 -690
- package/infrastructure/domains/integration/integration-resolver.js +0 -170
- package/infrastructure/domains/integration/integration-resolver.test.js +0 -369
- package/infrastructure/domains/integration/websocket-builder.js +0 -69
- package/infrastructure/domains/integration/websocket-builder.test.js +0 -195
- package/infrastructure/domains/networking/vpc-builder.js +0 -2051
- package/infrastructure/domains/networking/vpc-builder.test.js +0 -1960
- package/infrastructure/domains/networking/vpc-discovery.js +0 -177
- package/infrastructure/domains/networking/vpc-discovery.test.js +0 -350
- package/infrastructure/domains/networking/vpc-resolver.js +0 -505
- package/infrastructure/domains/networking/vpc-resolver.test.js +0 -801
- package/infrastructure/domains/parameters/ssm-builder.js +0 -79
- package/infrastructure/domains/parameters/ssm-builder.test.js +0 -189
- package/infrastructure/domains/parameters/ssm-discovery.js +0 -84
- package/infrastructure/domains/parameters/ssm-discovery.test.js +0 -210
- package/infrastructure/domains/security/iam-generator.js +0 -816
- package/infrastructure/domains/security/iam-generator.test.js +0 -204
- package/infrastructure/domains/security/kms-builder.js +0 -415
- package/infrastructure/domains/security/kms-builder.test.js +0 -392
- package/infrastructure/domains/security/kms-discovery.js +0 -80
- package/infrastructure/domains/security/kms-discovery.test.js +0 -177
- package/infrastructure/domains/security/kms-resolver.js +0 -96
- package/infrastructure/domains/security/kms-resolver.test.js +0 -216
- package/infrastructure/domains/security/templates/frigg-deployment-iam-stack.yaml +0 -401
- package/infrastructure/domains/security/templates/iam-policy-basic.json +0 -218
- package/infrastructure/domains/security/templates/iam-policy-full.json +0 -288
- package/infrastructure/domains/shared/base-builder.js +0 -112
- package/infrastructure/domains/shared/base-resolver.js +0 -186
- package/infrastructure/domains/shared/base-resolver.test.js +0 -305
- package/infrastructure/domains/shared/builder-orchestrator.js +0 -212
- package/infrastructure/domains/shared/builder-orchestrator.test.js +0 -213
- package/infrastructure/domains/shared/cloudformation-discovery-v2.js +0 -334
- package/infrastructure/domains/shared/cloudformation-discovery.js +0 -672
- package/infrastructure/domains/shared/cloudformation-discovery.test.js +0 -985
- package/infrastructure/domains/shared/environment-builder.js +0 -119
- package/infrastructure/domains/shared/environment-builder.test.js +0 -247
- package/infrastructure/domains/shared/providers/aws-provider-adapter.js +0 -579
- package/infrastructure/domains/shared/providers/aws-provider-adapter.test.js +0 -416
- package/infrastructure/domains/shared/providers/azure-provider-adapter.stub.js +0 -93
- package/infrastructure/domains/shared/providers/cloud-provider-adapter.js +0 -136
- package/infrastructure/domains/shared/providers/gcp-provider-adapter.stub.js +0 -82
- package/infrastructure/domains/shared/providers/provider-factory.js +0 -108
- package/infrastructure/domains/shared/providers/provider-factory.test.js +0 -170
- package/infrastructure/domains/shared/resource-discovery.enhanced.test.js +0 -306
- package/infrastructure/domains/shared/resource-discovery.js +0 -233
- package/infrastructure/domains/shared/resource-discovery.test.js +0 -588
- package/infrastructure/domains/shared/types/app-definition.js +0 -205
- package/infrastructure/domains/shared/types/discovery-result.js +0 -106
- package/infrastructure/domains/shared/types/discovery-result.test.js +0 -258
- package/infrastructure/domains/shared/types/index.js +0 -46
- package/infrastructure/domains/shared/types/resource-ownership.js +0 -108
- package/infrastructure/domains/shared/types/resource-ownership.test.js +0 -101
- package/infrastructure/domains/shared/utilities/base-definition-factory.js +0 -394
- package/infrastructure/domains/shared/utilities/base-definition-factory.js.bak +0 -338
- package/infrastructure/domains/shared/utilities/base-definition-factory.test.js +0 -291
- package/infrastructure/domains/shared/utilities/handler-path-resolver.js +0 -134
- package/infrastructure/domains/shared/utilities/handler-path-resolver.test.js +0 -268
- package/infrastructure/domains/shared/utilities/prisma-layer-manager.js +0 -159
- package/infrastructure/domains/shared/utilities/prisma-layer-manager.test.js +0 -444
- package/infrastructure/domains/shared/validation/env-validator.js +0 -78
- package/infrastructure/domains/shared/validation/env-validator.test.js +0 -173
- package/infrastructure/domains/shared/validation/plugin-validator.js +0 -187
- package/infrastructure/domains/shared/validation/plugin-validator.test.js +0 -323
- package/infrastructure/esbuild.config.js +0 -53
- package/infrastructure/index.js +0 -4
- package/infrastructure/infrastructure-composer.js +0 -117
- package/infrastructure/infrastructure-composer.test.js +0 -1895
- package/infrastructure/integration.test.js +0 -383
- package/infrastructure/scripts/build-prisma-layer.js +0 -701
- package/infrastructure/scripts/build-prisma-layer.test.js +0 -170
- package/infrastructure/scripts/build-time-discovery.js +0 -238
- package/infrastructure/scripts/build-time-discovery.test.js +0 -379
- package/infrastructure/scripts/run-discovery.js +0 -110
- package/infrastructure/scripts/verify-prisma-layer.js +0 -72
- package/layers/prisma/.build-complete +0 -3
- package/layers/prisma/nodejs/package.json +0 -8
- package/management-ui/.eslintrc.js +0 -22
- package/management-ui/components.json +0 -21
- package/management-ui/docs/phase2-integration-guide.md +0 -320
- package/management-ui/index.html +0 -13
- package/management-ui/package.json +0 -76
- package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +0 -302
- package/management-ui/postcss.config.js +0 -6
- package/management-ui/server/api/backend.js +0 -256
- package/management-ui/server/api/cli.js +0 -315
- package/management-ui/server/api/codegen.js +0 -663
- package/management-ui/server/api/connections.js +0 -857
- package/management-ui/server/api/discovery.js +0 -185
- package/management-ui/server/api/environment/index.js +0 -1
- package/management-ui/server/api/environment/router.js +0 -378
- package/management-ui/server/api/environment.js +0 -328
- package/management-ui/server/api/integrations.js +0 -876
- package/management-ui/server/api/logs.js +0 -248
- package/management-ui/server/api/monitoring.js +0 -282
- package/management-ui/server/api/open-ide.js +0 -31
- package/management-ui/server/api/project.js +0 -1029
- package/management-ui/server/api/users/sessions.js +0 -371
- package/management-ui/server/api/users/simulation.js +0 -254
- package/management-ui/server/api/users.js +0 -362
- package/management-ui/server/api-contract.md +0 -275
- package/management-ui/server/index.js +0 -873
- package/management-ui/server/middleware/errorHandler.js +0 -93
- package/management-ui/server/middleware/security.js +0 -32
- package/management-ui/server/processManager.js +0 -296
- package/management-ui/server/server.js +0 -346
- package/management-ui/server/services/aws-monitor.js +0 -413
- package/management-ui/server/services/npm-registry.js +0 -347
- package/management-ui/server/services/template-engine.js +0 -538
- package/management-ui/server/utils/cliIntegration.js +0 -220
- package/management-ui/server/utils/environment/auditLogger.js +0 -471
- package/management-ui/server/utils/environment/awsParameterStore.js +0 -275
- package/management-ui/server/utils/environment/encryption.js +0 -278
- package/management-ui/server/utils/environment/envFileManager.js +0 -286
- package/management-ui/server/utils/import-commonjs.js +0 -28
- package/management-ui/server/utils/response.js +0 -83
- package/management-ui/server/websocket/handler.js +0 -325
- package/management-ui/src/App.jsx +0 -25
- package/management-ui/src/assets/FriggLogo.svg +0 -1
- package/management-ui/src/components/AppRouter.jsx +0 -65
- package/management-ui/src/components/Button.jsx +0 -70
- package/management-ui/src/components/Card.jsx +0 -97
- package/management-ui/src/components/EnvironmentCompare.jsx +0 -400
- package/management-ui/src/components/EnvironmentEditor.jsx +0 -372
- package/management-ui/src/components/EnvironmentImportExport.jsx +0 -469
- package/management-ui/src/components/EnvironmentSchema.jsx +0 -491
- package/management-ui/src/components/EnvironmentSecurity.jsx +0 -463
- package/management-ui/src/components/ErrorBoundary.jsx +0 -73
- package/management-ui/src/components/IntegrationCard.jsx +0 -481
- package/management-ui/src/components/IntegrationCardEnhanced.jsx +0 -770
- package/management-ui/src/components/IntegrationExplorer.jsx +0 -379
- package/management-ui/src/components/IntegrationStatus.jsx +0 -336
- package/management-ui/src/components/Layout.jsx +0 -716
- package/management-ui/src/components/LoadingSpinner.jsx +0 -113
- package/management-ui/src/components/RepositoryPicker.jsx +0 -248
- package/management-ui/src/components/SessionMonitor.jsx +0 -350
- package/management-ui/src/components/StatusBadge.jsx +0 -208
- package/management-ui/src/components/UserContextSwitcher.jsx +0 -212
- package/management-ui/src/components/UserSimulation.jsx +0 -327
- package/management-ui/src/components/Welcome.jsx +0 -434
- package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +0 -637
- package/management-ui/src/components/codegen/APIModuleSelector.jsx +0 -227
- package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +0 -247
- package/management-ui/src/components/codegen/CodePreviewEditor.jsx +0 -316
- package/management-ui/src/components/codegen/DynamicModuleForm.jsx +0 -271
- package/management-ui/src/components/codegen/FormBuilder.jsx +0 -737
- package/management-ui/src/components/codegen/IntegrationGenerator.jsx +0 -855
- package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +0 -797
- package/management-ui/src/components/codegen/SchemaBuilder.jsx +0 -303
- package/management-ui/src/components/codegen/TemplateSelector.jsx +0 -586
- package/management-ui/src/components/codegen/index.js +0 -10
- package/management-ui/src/components/connections/ConnectionConfigForm.jsx +0 -362
- package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +0 -182
- package/management-ui/src/components/connections/ConnectionTester.jsx +0 -200
- package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +0 -292
- package/management-ui/src/components/connections/OAuthFlow.jsx +0 -204
- package/management-ui/src/components/connections/index.js +0 -5
- package/management-ui/src/components/index.js +0 -21
- package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +0 -222
- package/management-ui/src/components/monitoring/LambdaMetrics.jsx +0 -169
- package/management-ui/src/components/monitoring/MetricsChart.jsx +0 -197
- package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +0 -393
- package/management-ui/src/components/monitoring/SQSMetrics.jsx +0 -246
- package/management-ui/src/components/monitoring/index.js +0 -6
- package/management-ui/src/components/monitoring/monitoring.css +0 -218
- package/management-ui/src/components/theme-provider.jsx +0 -52
- package/management-ui/src/components/theme-toggle.jsx +0 -39
- package/management-ui/src/components/ui/badge.tsx +0 -36
- package/management-ui/src/components/ui/button.test.jsx +0 -56
- package/management-ui/src/components/ui/button.tsx +0 -57
- package/management-ui/src/components/ui/card.tsx +0 -76
- package/management-ui/src/components/ui/dropdown-menu.tsx +0 -199
- package/management-ui/src/components/ui/select.tsx +0 -157
- package/management-ui/src/components/ui/skeleton.jsx +0 -15
- package/management-ui/src/hooks/useFrigg.jsx +0 -387
- package/management-ui/src/hooks/useSocket.jsx +0 -58
- package/management-ui/src/index.css +0 -193
- package/management-ui/src/lib/utils.ts +0 -6
- package/management-ui/src/main.jsx +0 -10
- package/management-ui/src/pages/CodeGeneration.jsx +0 -14
- package/management-ui/src/pages/Connections.jsx +0 -252
- package/management-ui/src/pages/ConnectionsEnhanced.jsx +0 -633
- package/management-ui/src/pages/Dashboard.jsx +0 -311
- package/management-ui/src/pages/Environment.jsx +0 -314
- package/management-ui/src/pages/IntegrationConfigure.jsx +0 -669
- package/management-ui/src/pages/IntegrationDiscovery.jsx +0 -567
- package/management-ui/src/pages/IntegrationTest.jsx +0 -742
- package/management-ui/src/pages/Integrations.jsx +0 -253
- package/management-ui/src/pages/Monitoring.jsx +0 -17
- package/management-ui/src/pages/Simulation.jsx +0 -155
- package/management-ui/src/pages/Users.jsx +0 -492
- package/management-ui/src/services/api.js +0 -41
- package/management-ui/src/services/apiModuleService.js +0 -193
- package/management-ui/src/services/websocket-handlers.js +0 -120
- package/management-ui/src/test/api/project.test.js +0 -273
- package/management-ui/src/test/components/Welcome.test.jsx +0 -378
- package/management-ui/src/test/mocks/server.js +0 -178
- package/management-ui/src/test/setup.js +0 -61
- package/management-ui/src/test/utils/test-utils.jsx +0 -134
- package/management-ui/src/utils/repository.js +0 -98
- package/management-ui/src/utils/repository.test.js +0 -118
- package/management-ui/src/workflows/phase2-integration-workflows.js +0 -884
- package/management-ui/tailwind.config.js +0 -63
- package/management-ui/tsconfig.json +0 -37
- package/management-ui/tsconfig.node.json +0 -10
- package/management-ui/vite.config.js +0 -26
- package/management-ui/vitest.config.js +0 -38
- package/test/auther-definition-method-tester.js +0 -45
- package/test/index.js +0 -9
- package/test/integration-validator.js +0 -2
- package/test/mock-api-readme.md +0 -102
- package/test/mock-api.js +0 -284
- package/test/mock-integration.js +0 -78
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resource Discovery Service
|
|
3
|
-
*
|
|
4
|
-
* Domain Service - Hexagonal Architecture
|
|
5
|
-
*
|
|
6
|
-
* Orchestrates discovery of cloud resources (VPC, databases, encryption keys, etc.)
|
|
7
|
-
* using the cloud provider abstraction layer and domain-specific discovery services.
|
|
8
|
-
*
|
|
9
|
-
* This service is cloud-agnostic and delegates to provider-specific implementations.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
const { CloudProviderFactory } = require('./providers/provider-factory');
|
|
13
|
-
const { CloudFormationDiscovery } = require('./cloudformation-discovery');
|
|
14
|
-
const { VpcDiscovery } = require('../networking/vpc-discovery');
|
|
15
|
-
const { KmsDiscovery } = require('../security/kms-discovery');
|
|
16
|
-
const { AuroraDiscovery } = require('../database/aurora-discovery');
|
|
17
|
-
const { SsmDiscovery } = require('../parameters/ssm-discovery');
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Determine if AWS discovery should run
|
|
21
|
-
*
|
|
22
|
-
* Checks in priority order:
|
|
23
|
-
* 1. AppDefinition.aws.discovery.enabled (explicit opt-in/out)
|
|
24
|
-
* 2. FRIGG_SKIP_AWS_DISCOVERY environment variable
|
|
25
|
-
* 3. Auto-detection based on features enabled (VPC, KMS, SSM, PostgreSQL)
|
|
26
|
-
*
|
|
27
|
-
* @param {Object} appDefinition - Application definition
|
|
28
|
-
* @returns {boolean} True if discovery is needed
|
|
29
|
-
*/
|
|
30
|
-
function shouldRunDiscovery(appDefinition) {
|
|
31
|
-
// Priority 1: Check AppDefinition-level configuration
|
|
32
|
-
if (appDefinition.aws?.discovery?.enabled !== undefined) {
|
|
33
|
-
const enabled = appDefinition.aws.discovery.enabled;
|
|
34
|
-
console.log(
|
|
35
|
-
`⚙️ Using AppDefinition.aws.discovery.enabled: ${enabled}`
|
|
36
|
-
);
|
|
37
|
-
return enabled;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Priority 2: Check environment variable
|
|
41
|
-
console.log(
|
|
42
|
-
'⚙️ Checking FRIGG_SKIP_AWS_DISCOVERY:',
|
|
43
|
-
process.env.FRIGG_SKIP_AWS_DISCOVERY
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
if (process.env.FRIGG_SKIP_AWS_DISCOVERY === 'true') {
|
|
47
|
-
console.log(
|
|
48
|
-
'⚙️ Skipping AWS discovery because FRIGG_SKIP_AWS_DISCOVERY is set.'
|
|
49
|
-
);
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Priority 3: Auto-detect based on enabled features
|
|
54
|
-
return (
|
|
55
|
-
appDefinition.vpc?.enable === true ||
|
|
56
|
-
appDefinition.encryption?.fieldLevelEncryptionMethod === 'kms' ||
|
|
57
|
-
appDefinition.ssm?.enable === true ||
|
|
58
|
-
appDefinition.database?.postgres?.enable === true
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Gather discovered cloud resources
|
|
64
|
-
*
|
|
65
|
-
* Uses cloud provider abstraction to discover resources in a provider-agnostic way.
|
|
66
|
-
*
|
|
67
|
-
* @param {Object} appDefinition - Application definition
|
|
68
|
-
* @returns {Promise<Object>} Discovered cloud resources
|
|
69
|
-
*/
|
|
70
|
-
async function gatherDiscoveredResources(appDefinition) {
|
|
71
|
-
if (!shouldRunDiscovery(appDefinition)) {
|
|
72
|
-
console.log('⚙️ Skipping cloud resource discovery (not required for this configuration)');
|
|
73
|
-
return {};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
console.log('🔍 Running cloud resource discovery...');
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
// Get cloud provider (defaults to AWS, can be overridden via env var)
|
|
80
|
-
const providerName = process.env.CLOUD_PROVIDER || appDefinition.provider || 'aws';
|
|
81
|
-
const region = process.env.AWS_REGION || 'us-east-1';
|
|
82
|
-
|
|
83
|
-
console.log(` Provider: ${providerName}`);
|
|
84
|
-
console.log(` Region: ${region}`);
|
|
85
|
-
|
|
86
|
-
// Create provider adapter
|
|
87
|
-
const provider = CloudProviderFactory.create(providerName, region);
|
|
88
|
-
|
|
89
|
-
// Build discovery configuration
|
|
90
|
-
const stage = process.env.SLS_STAGE || 'dev';
|
|
91
|
-
const stackName = `${appDefinition.name || 'create-frigg-app'}-${stage}`;
|
|
92
|
-
const serviceName = appDefinition.name || 'create-frigg-app';
|
|
93
|
-
|
|
94
|
-
// Try CloudFormation-first discovery
|
|
95
|
-
const cfDiscovery = new CloudFormationDiscovery(provider, { serviceName, stage });
|
|
96
|
-
const stackResources = await cfDiscovery.discoverFromStack(stackName);
|
|
97
|
-
|
|
98
|
-
// Validate CF discovery results - check for ANY useful infrastructure
|
|
99
|
-
const hasVpcData = stackResources?.defaultVpcId; // VPC resource in stack
|
|
100
|
-
const hasKmsData = stackResources?.defaultKmsKeyId; // KMS resource in stack
|
|
101
|
-
const hasAuroraData = stackResources?.auroraClusterId; // Aurora in stack
|
|
102
|
-
|
|
103
|
-
// Check for routing infrastructure (proves VPC config exists even with external VPC)
|
|
104
|
-
const hasRoutingInfra = stackResources?.routeTableId || // FriggLambdaRouteTable
|
|
105
|
-
stackResources?.natRoute || // FriggNATRoute
|
|
106
|
-
stackResources?.vpcEndpoints?.s3 || // VPC endpoints
|
|
107
|
-
stackResources?.vpcEndpoints?.dynamodb;
|
|
108
|
-
|
|
109
|
-
// Stack is useful if it has EITHER actual resources OR routing infrastructure
|
|
110
|
-
const hasSomeUsefulData = hasVpcData || hasKmsData || hasAuroraData || hasRoutingInfra;
|
|
111
|
-
|
|
112
|
-
if (hasRoutingInfra && !hasVpcData) {
|
|
113
|
-
console.log(' ✓ Found VPC routing infrastructure in stack (external VPC pattern)');
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Check if we're in isolated mode (each stage gets its own VPC/Aurora)
|
|
117
|
-
const isIsolatedMode = appDefinition.managementMode === 'managed' &&
|
|
118
|
-
appDefinition.vpcIsolation === 'isolated';
|
|
119
|
-
|
|
120
|
-
if (stackResources && hasSomeUsefulData) {
|
|
121
|
-
console.log(' ✓ Discovered resources from existing CloudFormation stack');
|
|
122
|
-
console.log('✅ Cloud resource discovery completed successfully!');
|
|
123
|
-
return stackResources;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// In isolated mode, NEVER fall back to AWS discovery for VPC/Aurora
|
|
127
|
-
// These resources must be isolated per stage, so we either:
|
|
128
|
-
// 1. Use resources from THIS stage's CloudFormation stack (handled above)
|
|
129
|
-
// 2. Return empty to CREATE fresh isolated resources for this stage
|
|
130
|
-
if (isIsolatedMode) {
|
|
131
|
-
console.log(' ℹ Isolated mode: No CloudFormation stack or no VPC/Aurora in stack');
|
|
132
|
-
console.log(' ℹ Will create fresh isolated VPC/Aurora for this stage');
|
|
133
|
-
console.log(' ℹ Checking for shared KMS key...');
|
|
134
|
-
|
|
135
|
-
// KMS keys CAN be shared across stages (encryption keys are safe to reuse)
|
|
136
|
-
const kmsDiscovery = new KmsDiscovery(provider);
|
|
137
|
-
const kmsConfig = {
|
|
138
|
-
serviceName: appDefinition.name || 'create-frigg-app',
|
|
139
|
-
stage,
|
|
140
|
-
keyAlias: `alias/${appDefinition.name || 'create-frigg-app'}-${stage}-frigg-kms`,
|
|
141
|
-
};
|
|
142
|
-
const kmsResult = await kmsDiscovery.discover(kmsConfig);
|
|
143
|
-
|
|
144
|
-
if (kmsResult?.defaultKmsKeyId) {
|
|
145
|
-
console.log(' ✓ Found shared KMS key (can be reused across stages)');
|
|
146
|
-
console.log('✅ Cloud resource discovery completed - will create isolated VPC/Aurora!');
|
|
147
|
-
return kmsResult;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
console.log(' ℹ No existing KMS key found - will create new one');
|
|
151
|
-
console.log('✅ Cloud resource discovery completed - will create fresh isolated resources!');
|
|
152
|
-
return {};
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// Fallback to AWS API discovery (fresh deployment, stack not found, or stack has no useful data)
|
|
156
|
-
if (stackResources && !hasSomeUsefulData) {
|
|
157
|
-
console.log(' ℹ Stack found but contains no usable resources - running AWS API discovery...');
|
|
158
|
-
} else {
|
|
159
|
-
console.log(' ℹ No stack found - running AWS API discovery...');
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Create domain discovery services with provider
|
|
163
|
-
const vpcDiscovery = new VpcDiscovery(provider);
|
|
164
|
-
const kmsDiscovery = new KmsDiscovery(provider);
|
|
165
|
-
const auroraDiscovery = new AuroraDiscovery(provider);
|
|
166
|
-
const ssmDiscovery = new SsmDiscovery(provider);
|
|
167
|
-
|
|
168
|
-
const config = {
|
|
169
|
-
serviceName: appDefinition.name || 'create-frigg-app',
|
|
170
|
-
stage,
|
|
171
|
-
vpcId: appDefinition.vpc?.vpcId,
|
|
172
|
-
databaseId: appDefinition.database?.postgres?.clusterId ||
|
|
173
|
-
appDefinition.database?.postgres?.instanceId,
|
|
174
|
-
keyAlias: appDefinition.encryption?.keyAlias,
|
|
175
|
-
includeSecrets: true,
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
// Run discoveries in parallel for better performance
|
|
179
|
-
const [vpcResources, kmsResources, dbResources, ssmResources] =
|
|
180
|
-
await Promise.all([
|
|
181
|
-
appDefinition.vpc?.enable ? vpcDiscovery.discover(config) : Promise.resolve({}),
|
|
182
|
-
appDefinition.encryption?.fieldLevelEncryptionMethod === 'kms'
|
|
183
|
-
? kmsDiscovery.discover(config)
|
|
184
|
-
: Promise.resolve({}),
|
|
185
|
-
appDefinition.database?.postgres?.enable
|
|
186
|
-
? auroraDiscovery.discover(config)
|
|
187
|
-
: Promise.resolve({}),
|
|
188
|
-
appDefinition.ssm?.enable
|
|
189
|
-
? ssmDiscovery.discover(config)
|
|
190
|
-
: Promise.resolve({}),
|
|
191
|
-
]);
|
|
192
|
-
|
|
193
|
-
// Aggregate results
|
|
194
|
-
const discoveredResources = {
|
|
195
|
-
...vpcResources,
|
|
196
|
-
...kmsResources,
|
|
197
|
-
...dbResources,
|
|
198
|
-
...ssmResources,
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
console.log('✅ Cloud resource discovery completed successfully!');
|
|
202
|
-
|
|
203
|
-
return discoveredResources;
|
|
204
|
-
} catch (error) {
|
|
205
|
-
console.error('❌ Cloud resource discovery failed:', error.message);
|
|
206
|
-
console.error('Stack:', error.stack);
|
|
207
|
-
|
|
208
|
-
// Check if discovery failures should fail the deployment
|
|
209
|
-
const failOnError = appDefinition.aws?.discovery?.failOnError ?? false;
|
|
210
|
-
|
|
211
|
-
if (failOnError) {
|
|
212
|
-
console.error(
|
|
213
|
-
'❌ Discovery failure blocking deployment (aws.discovery.failOnError = true)'
|
|
214
|
-
);
|
|
215
|
-
throw error;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// Graceful degradation - return empty resources and let validation handle it
|
|
219
|
-
console.warn(
|
|
220
|
-
'⚠️ Continuing with empty discovered resources. This may cause deployment issues if resources are required.'
|
|
221
|
-
);
|
|
222
|
-
console.warn(
|
|
223
|
-
'💡 Set aws.discovery.failOnError = true in AppDefinition to fail on discovery errors.'
|
|
224
|
-
);
|
|
225
|
-
return {};
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
module.exports = {
|
|
230
|
-
shouldRunDiscovery,
|
|
231
|
-
gatherDiscoveredResources,
|
|
232
|
-
};
|
|
233
|
-
|