@friggframework/devtools 2.0.0-next.3 → 2.0.0-next.31

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 (199) hide show
  1. package/frigg-cli/.eslintrc.js +141 -0
  2. package/frigg-cli/__tests__/jest.config.js +102 -0
  3. package/frigg-cli/__tests__/unit/commands/build.test.js +483 -0
  4. package/frigg-cli/__tests__/unit/commands/install.test.js +418 -0
  5. package/frigg-cli/__tests__/unit/commands/ui.test.js +592 -0
  6. package/frigg-cli/__tests__/utils/command-tester.js +170 -0
  7. package/frigg-cli/__tests__/utils/mock-factory.js +270 -0
  8. package/frigg-cli/__tests__/utils/test-fixtures.js +463 -0
  9. package/frigg-cli/__tests__/utils/test-setup.js +286 -0
  10. package/frigg-cli/build-command/index.js +54 -0
  11. package/frigg-cli/deploy-command/index.js +36 -0
  12. package/frigg-cli/generate-command/__tests__/generate-command.test.js +312 -0
  13. package/frigg-cli/generate-command/azure-generator.js +43 -0
  14. package/frigg-cli/generate-command/gcp-generator.js +47 -0
  15. package/frigg-cli/generate-command/index.js +332 -0
  16. package/frigg-cli/generate-command/terraform-generator.js +555 -0
  17. package/frigg-cli/generate-iam-command.js +115 -0
  18. package/frigg-cli/index.js +47 -1
  19. package/frigg-cli/index.test.js +1 -4
  20. package/frigg-cli/init-command/backend-first-handler.js +756 -0
  21. package/frigg-cli/init-command/index.js +93 -0
  22. package/frigg-cli/init-command/template-handler.js +143 -0
  23. package/frigg-cli/install-command/index.js +1 -4
  24. package/frigg-cli/package.json +51 -0
  25. package/frigg-cli/start-command/index.js +24 -4
  26. package/frigg-cli/test/init-command.test.js +180 -0
  27. package/frigg-cli/test/npm-registry.test.js +319 -0
  28. package/frigg-cli/ui-command/index.js +154 -0
  29. package/frigg-cli/utils/app-resolver.js +319 -0
  30. package/frigg-cli/utils/backend-path.js +16 -17
  31. package/frigg-cli/utils/npm-registry.js +167 -0
  32. package/frigg-cli/utils/process-manager.js +199 -0
  33. package/frigg-cli/utils/repo-detection.js +405 -0
  34. package/infrastructure/AWS-DISCOVERY-TROUBLESHOOTING.md +245 -0
  35. package/infrastructure/AWS-IAM-CREDENTIAL-NEEDS.md +596 -0
  36. package/infrastructure/DEPLOYMENT-INSTRUCTIONS.md +268 -0
  37. package/infrastructure/GENERATE-IAM-DOCS.md +253 -0
  38. package/infrastructure/IAM-POLICY-TEMPLATES.md +176 -0
  39. package/infrastructure/README-TESTING.md +332 -0
  40. package/infrastructure/README.md +421 -0
  41. package/infrastructure/WEBSOCKET-CONFIGURATION.md +105 -0
  42. package/infrastructure/__tests__/fixtures/mock-aws-resources.js +391 -0
  43. package/infrastructure/__tests__/helpers/test-utils.js +277 -0
  44. package/infrastructure/aws-discovery.js +568 -0
  45. package/infrastructure/aws-discovery.test.js +373 -0
  46. package/infrastructure/build-time-discovery.js +206 -0
  47. package/infrastructure/build-time-discovery.test.js +375 -0
  48. package/infrastructure/create-frigg-infrastructure.js +3 -5
  49. package/infrastructure/frigg-deployment-iam-stack.yaml +379 -0
  50. package/infrastructure/iam-generator.js +687 -0
  51. package/infrastructure/iam-generator.test.js +169 -0
  52. package/infrastructure/iam-policy-basic.json +212 -0
  53. package/infrastructure/iam-policy-full.json +282 -0
  54. package/infrastructure/integration.test.js +383 -0
  55. package/infrastructure/run-discovery.js +110 -0
  56. package/infrastructure/serverless-template.js +923 -113
  57. package/infrastructure/serverless-template.test.js +541 -0
  58. package/management-ui/.eslintrc.js +22 -0
  59. package/management-ui/README.md +203 -0
  60. package/management-ui/components.json +21 -0
  61. package/management-ui/docs/phase2-integration-guide.md +320 -0
  62. package/management-ui/index.html +13 -0
  63. package/management-ui/package-lock.json +16517 -0
  64. package/management-ui/package.json +76 -0
  65. package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +302 -0
  66. package/management-ui/postcss.config.js +6 -0
  67. package/management-ui/server/api/backend.js +256 -0
  68. package/management-ui/server/api/cli.js +315 -0
  69. package/management-ui/server/api/codegen.js +663 -0
  70. package/management-ui/server/api/connections.js +857 -0
  71. package/management-ui/server/api/discovery.js +185 -0
  72. package/management-ui/server/api/environment/index.js +1 -0
  73. package/management-ui/server/api/environment/router.js +378 -0
  74. package/management-ui/server/api/environment.js +328 -0
  75. package/management-ui/server/api/integrations.js +876 -0
  76. package/management-ui/server/api/logs.js +248 -0
  77. package/management-ui/server/api/monitoring.js +282 -0
  78. package/management-ui/server/api/open-ide.js +31 -0
  79. package/management-ui/server/api/project.js +1029 -0
  80. package/management-ui/server/api/users/sessions.js +371 -0
  81. package/management-ui/server/api/users/simulation.js +254 -0
  82. package/management-ui/server/api/users.js +362 -0
  83. package/management-ui/server/api-contract.md +275 -0
  84. package/management-ui/server/index.js +873 -0
  85. package/management-ui/server/middleware/errorHandler.js +93 -0
  86. package/management-ui/server/middleware/security.js +32 -0
  87. package/management-ui/server/processManager.js +296 -0
  88. package/management-ui/server/server.js +346 -0
  89. package/management-ui/server/services/aws-monitor.js +413 -0
  90. package/management-ui/server/services/npm-registry.js +347 -0
  91. package/management-ui/server/services/template-engine.js +538 -0
  92. package/management-ui/server/utils/cliIntegration.js +220 -0
  93. package/management-ui/server/utils/environment/auditLogger.js +471 -0
  94. package/management-ui/server/utils/environment/awsParameterStore.js +264 -0
  95. package/management-ui/server/utils/environment/encryption.js +278 -0
  96. package/management-ui/server/utils/environment/envFileManager.js +286 -0
  97. package/management-ui/server/utils/import-commonjs.js +28 -0
  98. package/management-ui/server/utils/response.js +83 -0
  99. package/management-ui/server/websocket/handler.js +325 -0
  100. package/management-ui/src/App.jsx +109 -0
  101. package/management-ui/src/assets/FriggLogo.svg +1 -0
  102. package/management-ui/src/components/AppRouter.jsx +65 -0
  103. package/management-ui/src/components/Button.jsx +70 -0
  104. package/management-ui/src/components/Card.jsx +97 -0
  105. package/management-ui/src/components/EnvironmentCompare.jsx +400 -0
  106. package/management-ui/src/components/EnvironmentEditor.jsx +372 -0
  107. package/management-ui/src/components/EnvironmentImportExport.jsx +469 -0
  108. package/management-ui/src/components/EnvironmentSchema.jsx +491 -0
  109. package/management-ui/src/components/EnvironmentSecurity.jsx +463 -0
  110. package/management-ui/src/components/ErrorBoundary.jsx +73 -0
  111. package/management-ui/src/components/IntegrationCard.jsx +481 -0
  112. package/management-ui/src/components/IntegrationCardEnhanced.jsx +770 -0
  113. package/management-ui/src/components/IntegrationExplorer.jsx +379 -0
  114. package/management-ui/src/components/IntegrationStatus.jsx +336 -0
  115. package/management-ui/src/components/Layout.jsx +716 -0
  116. package/management-ui/src/components/LoadingSpinner.jsx +113 -0
  117. package/management-ui/src/components/RepositoryPicker.jsx +248 -0
  118. package/management-ui/src/components/SessionMonitor.jsx +350 -0
  119. package/management-ui/src/components/StatusBadge.jsx +208 -0
  120. package/management-ui/src/components/UserContextSwitcher.jsx +212 -0
  121. package/management-ui/src/components/UserSimulation.jsx +327 -0
  122. package/management-ui/src/components/Welcome.jsx +434 -0
  123. package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +637 -0
  124. package/management-ui/src/components/codegen/APIModuleSelector.jsx +227 -0
  125. package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +247 -0
  126. package/management-ui/src/components/codegen/CodePreviewEditor.jsx +316 -0
  127. package/management-ui/src/components/codegen/DynamicModuleForm.jsx +271 -0
  128. package/management-ui/src/components/codegen/FormBuilder.jsx +737 -0
  129. package/management-ui/src/components/codegen/IntegrationGenerator.jsx +855 -0
  130. package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +797 -0
  131. package/management-ui/src/components/codegen/SchemaBuilder.jsx +303 -0
  132. package/management-ui/src/components/codegen/TemplateSelector.jsx +586 -0
  133. package/management-ui/src/components/codegen/index.js +10 -0
  134. package/management-ui/src/components/connections/ConnectionConfigForm.jsx +362 -0
  135. package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +182 -0
  136. package/management-ui/src/components/connections/ConnectionTester.jsx +200 -0
  137. package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +292 -0
  138. package/management-ui/src/components/connections/OAuthFlow.jsx +204 -0
  139. package/management-ui/src/components/connections/index.js +5 -0
  140. package/management-ui/src/components/index.js +21 -0
  141. package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +222 -0
  142. package/management-ui/src/components/monitoring/LambdaMetrics.jsx +169 -0
  143. package/management-ui/src/components/monitoring/MetricsChart.jsx +197 -0
  144. package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +393 -0
  145. package/management-ui/src/components/monitoring/SQSMetrics.jsx +246 -0
  146. package/management-ui/src/components/monitoring/index.js +6 -0
  147. package/management-ui/src/components/monitoring/monitoring.css +218 -0
  148. package/management-ui/src/components/theme-provider.jsx +52 -0
  149. package/management-ui/src/components/theme-toggle.jsx +39 -0
  150. package/management-ui/src/components/ui/badge.tsx +36 -0
  151. package/management-ui/src/components/ui/button.test.jsx +56 -0
  152. package/management-ui/src/components/ui/button.tsx +57 -0
  153. package/management-ui/src/components/ui/card.tsx +76 -0
  154. package/management-ui/src/components/ui/dropdown-menu.tsx +199 -0
  155. package/management-ui/src/components/ui/select.tsx +157 -0
  156. package/management-ui/src/components/ui/skeleton.jsx +15 -0
  157. package/management-ui/src/hooks/useFrigg.jsx +601 -0
  158. package/management-ui/src/hooks/useSocket.jsx +58 -0
  159. package/management-ui/src/index.css +193 -0
  160. package/management-ui/src/lib/utils.ts +6 -0
  161. package/management-ui/src/main.jsx +10 -0
  162. package/management-ui/src/pages/CodeGeneration.jsx +14 -0
  163. package/management-ui/src/pages/Connections.jsx +252 -0
  164. package/management-ui/src/pages/ConnectionsEnhanced.jsx +633 -0
  165. package/management-ui/src/pages/Dashboard.jsx +311 -0
  166. package/management-ui/src/pages/Environment.jsx +314 -0
  167. package/management-ui/src/pages/IntegrationConfigure.jsx +669 -0
  168. package/management-ui/src/pages/IntegrationDiscovery.jsx +567 -0
  169. package/management-ui/src/pages/IntegrationTest.jsx +742 -0
  170. package/management-ui/src/pages/Integrations.jsx +253 -0
  171. package/management-ui/src/pages/Monitoring.jsx +17 -0
  172. package/management-ui/src/pages/Simulation.jsx +155 -0
  173. package/management-ui/src/pages/Users.jsx +492 -0
  174. package/management-ui/src/services/api.js +41 -0
  175. package/management-ui/src/services/apiModuleService.js +193 -0
  176. package/management-ui/src/services/websocket-handlers.js +120 -0
  177. package/management-ui/src/test/api/project.test.js +273 -0
  178. package/management-ui/src/test/components/Welcome.test.jsx +378 -0
  179. package/management-ui/src/test/mocks/server.js +178 -0
  180. package/management-ui/src/test/setup.js +61 -0
  181. package/management-ui/src/test/utils/test-utils.jsx +134 -0
  182. package/management-ui/src/utils/repository.js +98 -0
  183. package/management-ui/src/utils/repository.test.js +118 -0
  184. package/management-ui/src/workflows/phase2-integration-workflows.js +884 -0
  185. package/management-ui/tailwind.config.js +63 -0
  186. package/management-ui/tsconfig.json +37 -0
  187. package/management-ui/tsconfig.node.json +10 -0
  188. package/management-ui/vite.config.js +26 -0
  189. package/management-ui/vitest.config.js +38 -0
  190. package/package.json +17 -9
  191. package/infrastructure/app-handler-helpers.js +0 -57
  192. package/infrastructure/backend-utils.js +0 -90
  193. package/infrastructure/routers/auth.js +0 -26
  194. package/infrastructure/routers/integration-defined-routers.js +0 -37
  195. package/infrastructure/routers/middleware/loadUser.js +0 -15
  196. package/infrastructure/routers/middleware/requireLoggedInUser.js +0 -12
  197. package/infrastructure/routers/user.js +0 -41
  198. package/infrastructure/routers/websocket.js +0 -55
  199. package/infrastructure/workers/integration-defined-workers.js +0 -24
@@ -0,0 +1,245 @@
1
+ # AWS Discovery Troubleshooting Guide
2
+
3
+ ## Overview
4
+
5
+ AWS Discovery automatically finds your default AWS resources (VPC, subnets, security groups, KMS keys) during the build process. This eliminates the need to manually specify resource IDs in your configuration.
6
+
7
+ ## When AWS Discovery Runs
8
+
9
+ AWS Discovery runs automatically during `frigg build` and `frigg deploy` when your AppDefinition includes:
10
+
11
+ - `vpc.enable: true` - VPC support
12
+ - `encryption.useDefaultKMSForFieldLevelEncryption: true` - KMS encryption
13
+ - `ssm.enable: true` - SSM Parameter Store
14
+
15
+ ## Fail-Fast Behavior
16
+
17
+ ⚠️ **Important:** If you enable these features, discovery **must succeed**. The build will fail if:
18
+ - AWS credentials are missing or invalid
19
+ - Required AWS permissions are not granted
20
+ - No VPC/subnets exist in your region
21
+ - Discovery times out or encounters errors
22
+
23
+ This prevents deployments with incorrect or missing AWS resources, which could cause security issues or deployment failures.
24
+
25
+ ## Common Issues
26
+
27
+ ### 1. "Variables resolution errored" - Environment Variables Not Found
28
+
29
+ **Error:**
30
+ ```
31
+ Cannot resolve variable at "provider.vpc.securityGroupIds.0": Value not found at "env" source
32
+ Cannot resolve variable at "provider.vpc.subnetIds.0": Value not found at "env" source
33
+ ```
34
+
35
+ **Cause:** AWS discovery didn't run or failed to set environment variables.
36
+
37
+ **Solutions:**
38
+
39
+ #### Option A: Run Discovery Manually
40
+ ```bash
41
+ # Run discovery before building
42
+ node node_modules/@friggframework/devtools/infrastructure/run-discovery.js
43
+
44
+ # Then build
45
+ npx frigg build
46
+ ```
47
+
48
+ #### Option B: Check Prerequisites
49
+ 1. **AWS Credentials:** Ensure AWS CLI is configured
50
+ ```bash
51
+ aws configure list
52
+ aws sts get-caller-identity
53
+ ```
54
+
55
+ 2. **IAM Permissions:** User needs discovery permissions (see [AWS-IAM-CREDENTIAL-NEEDS.md](./AWS-IAM-CREDENTIAL-NEEDS.md))
56
+ - `sts:GetCallerIdentity`
57
+ - `ec2:DescribeVpcs`
58
+ - `ec2:DescribeSubnets`
59
+ - `ec2:DescribeSecurityGroups`
60
+ - `ec2:DescribeRouteTables`
61
+ - `kms:ListKeys`
62
+ - `kms:DescribeKey`
63
+
64
+ 3. **Default VPC:** Ensure you have a VPC in your AWS region
65
+ ```bash
66
+ aws ec2 describe-vpcs --region us-east-1
67
+ ```
68
+
69
+ ### 2. AWS SDK Not Installed
70
+
71
+ **Error:**
72
+ ```bash
73
+ 🚨 AWS SDK not installed!
74
+ Cannot find module '@aws-sdk/client-ec2'
75
+ ```
76
+
77
+ **Cause:** AWS SDK dependencies are only installed when needed to keep bundle size minimal.
78
+
79
+ **Solution:**
80
+ ```bash
81
+ # Install required AWS SDK packages
82
+ npm install @aws-sdk/client-ec2 @aws-sdk/client-kms @aws-sdk/client-sts
83
+
84
+ # Then run discovery
85
+ npx frigg build
86
+ ```
87
+
88
+ **Note:** AWS SDK is optional - only install if you use VPC/KMS/SSM features.
89
+
90
+ ### 3. No Default VPC Found
91
+
92
+ **Error:**
93
+ ```
94
+ No VPC found in the account
95
+ ```
96
+
97
+ **Cause:** Your AWS account doesn't have a default VPC or any VPCs in the current region.
98
+
99
+ **Solutions:**
100
+
101
+ #### Option A: Create Default VPC
102
+ ```bash
103
+ aws ec2 create-default-vpc --region us-east-1
104
+ ```
105
+
106
+ #### Option B: Disable VPC in AppDefinition
107
+ ```javascript
108
+ // backend/index.js
109
+ const appDefinition = {
110
+ // ... other config
111
+ vpc: {
112
+ enable: false // Disable VPC support
113
+ }
114
+ };
115
+ ```
116
+
117
+ ### 4. Permission Denied During Discovery
118
+
119
+ **Error:**
120
+ ```
121
+ User: arn:aws:iam::123456789012:user/my-user is not authorized to perform: ec2:DescribeVpcs
122
+ ```
123
+
124
+ **Cause:** IAM user lacks discovery permissions.
125
+
126
+ **Solution:**
127
+ 1. Update IAM policy with discovery permissions
128
+ 2. Or generate a custom IAM stack:
129
+ ```bash
130
+ npx frigg generate-iam
131
+ aws cloudformation deploy --template-file backend/infrastructure/frigg-deployment-iam.yaml --stack-name frigg-deployment-iam --capabilities CAPABILITY_NAMED_IAM
132
+ ```
133
+
134
+ ### 5. Region Configuration Issues
135
+
136
+ **Error:**
137
+ ```
138
+ No subnets found in VPC vpc-123456789
139
+ ```
140
+
141
+ **Cause:** AWS discovery is looking in the wrong region or region has no subnets.
142
+
143
+ **Solutions:**
144
+
145
+ #### Option A: Set AWS Region
146
+ ```bash
147
+ export AWS_REGION=us-east-1
148
+ npx frigg build
149
+ ```
150
+
151
+ #### Option B: Check Current Region
152
+ ```bash
153
+ aws configure get region
154
+ aws ec2 describe-availability-zones --query 'AvailabilityZones[0].RegionName'
155
+ ```
156
+
157
+ ## Manual Override
158
+
159
+ If AWS discovery continues to fail, you can manually set environment variables:
160
+
161
+ ```bash
162
+ # Find your actual resource IDs
163
+ aws ec2 describe-vpcs --query 'Vpcs[0].VpcId' --output text
164
+ aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-12345678" --query 'Subnets[0:2].SubnetId' --output text
165
+
166
+ # Set before building
167
+ export AWS_DISCOVERY_VPC_ID=vpc-12345678
168
+ export AWS_DISCOVERY_SECURITY_GROUP_ID=sg-12345678
169
+ export AWS_DISCOVERY_SUBNET_ID_1=subnet-12345678
170
+ export AWS_DISCOVERY_SUBNET_ID_2=subnet-87654321
171
+ export AWS_DISCOVERY_PUBLIC_SUBNET_ID=subnet-abcdef12
172
+ export AWS_DISCOVERY_ROUTE_TABLE_ID=rtb-12345678
173
+ export AWS_DISCOVERY_KMS_KEY_ID=arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
174
+
175
+ npx frigg build
176
+ ```
177
+
178
+ **⚠️ Important:** Use real AWS resource IDs, not placeholder values. Fake IDs will cause deployment failures.
179
+
180
+ ## Debugging Discovery
181
+
182
+ ### Enable Verbose Logging
183
+ ```bash
184
+ npx frigg build --verbose
185
+ ```
186
+
187
+ ### Test Discovery Standalone
188
+ ```bash
189
+ # Test discovery without building
190
+ node node_modules/@friggframework/devtools/infrastructure/run-discovery.js
191
+ ```
192
+
193
+ ### Check Environment Variables
194
+ ```bash
195
+ # After running discovery
196
+ printenv | grep AWS_DISCOVERY
197
+ ```
198
+
199
+ ## Recovery Steps
200
+
201
+ If you're stuck, try this recovery process:
202
+
203
+ 1. **Verify AWS Setup**
204
+ ```bash
205
+ aws sts get-caller-identity
206
+ aws ec2 describe-vpcs --region us-east-1
207
+ ```
208
+
209
+ 2. **Check App Definition**
210
+ ```bash
211
+ # Ensure your backend/index.js exports Definition correctly
212
+ node -e "console.log(require('./backend/index.js').Definition)"
213
+ ```
214
+
215
+ 3. **Run Discovery Manually**
216
+ ```bash
217
+ node node_modules/@friggframework/devtools/infrastructure/run-discovery.js
218
+ ```
219
+
220
+ 4. **Disable Features Temporarily**
221
+ ```javascript
222
+ // backend/index.js - temporarily disable problematic features
223
+ const appDefinition = {
224
+ vpc: { enable: false },
225
+ encryption: { useDefaultKMSForFieldLevelEncryption: false },
226
+ ssm: { enable: false }
227
+ };
228
+ ```
229
+
230
+ 5. **Build and Test**
231
+ ```bash
232
+ npx frigg build
233
+ ```
234
+
235
+ ## Getting Help
236
+
237
+ If discovery continues to fail:
238
+
239
+ 1. **Check logs** for specific error messages
240
+ 2. **Verify IAM permissions** using the generated IAM stack
241
+ 3. **Test AWS CLI access** in your target region
242
+ 4. **Review AppDefinition** for correct feature flags
243
+ 5. **Try fallback values** as a temporary workaround
244
+
245
+ The discovery system is designed to be resilient, but AWS environment differences can cause issues. Most problems are related to IAM permissions or missing AWS resources in the target region.