@friggframework/schemas 2.0.0--canary.490.c46b045.0 → 2.0.0--canary.490.4c380eb.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@friggframework/schemas",
3
- "version": "2.0.0--canary.490.c46b045.0",
3
+ "version": "2.0.0--canary.490.4c380eb.0",
4
4
  "description": "Canonical JSON Schema definitions for Frigg Framework",
5
5
  "main": "index.js",
6
6
  "author": "",
@@ -39,5 +39,5 @@
39
39
  "validators/",
40
40
  "index.js"
41
41
  ],
42
- "gitHead": "c46b04556cfd984038f38d98274100a0551bb470"
42
+ "gitHead": "4c380ebf74adc1ee0a0dfbb382def280c1fea2f3"
43
43
  }
@@ -20,6 +20,11 @@
20
20
  "enum": ["aws"],
21
21
  "default": "aws"
22
22
  },
23
+ "usePrismaLambdaLayer": {
24
+ "type": "boolean",
25
+ "description": "Use Lambda Layer for Prisma client (requires lambda:PublishLayerVersion permission). If false, Prisma is bundled with each function.",
26
+ "default": true
27
+ },
23
28
  "environment": {
24
29
  "type": "object",
25
30
  "description": "Environment variable configuration (key: true/false flags)",
@@ -291,9 +296,44 @@
291
296
  "type": "boolean",
292
297
  "description": "Create KMS key if none found during discovery",
293
298
  "default": false
299
+ },
300
+ "kmsKeyAlias": {
301
+ "type": "boolean",
302
+ "description": "Create KMS key alias (requires kms:CreateAlias permission). Set to false to skip alias creation and avoid permission errors.",
303
+ "default": true
304
+ },
305
+ "schema": {
306
+ "type": "object",
307
+ "description": "Field-level encryption schema defining which model fields should be encrypted",
308
+ "patternProperties": {
309
+ "^[A-Z][a-zA-Z0-9]*$": {
310
+ "type": "object",
311
+ "properties": {
312
+ "fields": {
313
+ "type": "array",
314
+ "description": "Array of field paths to encrypt (supports dot notation for nested fields)",
315
+ "items": {
316
+ "type": "string"
317
+ },
318
+ "examples": [["password", "apiKey", "data.secretToken"]]
319
+ }
320
+ },
321
+ "required": ["fields"],
322
+ "additionalProperties": false
323
+ }
324
+ },
325
+ "additionalProperties": true,
326
+ "examples": [{
327
+ "User": {
328
+ "fields": ["password", "apiKey"]
329
+ },
330
+ "Credential": {
331
+ "fields": ["access_token", "refresh_token"]
332
+ }
333
+ }]
294
334
  }
295
335
  },
296
- "additionalProperties": false
336
+ "additionalProperties": true
297
337
  },
298
338
  "vpc": {
299
339
  "type": "object",
@@ -382,6 +422,74 @@
382
422
  "type": "boolean",
383
423
  "description": "Automatically fix VPC configuration issues",
384
424
  "default": false
425
+ },
426
+ "ownership": {
427
+ "type": "object",
428
+ "description": "Resource ownership configuration - controls whether infrastructure components are managed by CloudFormation stack or external",
429
+ "properties": {
430
+ "vpc": {
431
+ "type": "string",
432
+ "enum": ["stack", "external", "auto"],
433
+ "description": "VPC ownership: 'stack' (create/manage in CloudFormation), 'external' (use existing), 'auto' (discover and decide)",
434
+ "default": "auto"
435
+ },
436
+ "subnets": {
437
+ "type": "string",
438
+ "enum": ["stack", "external", "auto"],
439
+ "description": "Subnet ownership: 'stack' (create/manage in CloudFormation), 'external' (use existing), 'auto' (discover and decide)",
440
+ "default": "auto"
441
+ },
442
+ "securityGroup": {
443
+ "type": "string",
444
+ "enum": ["stack", "external", "auto"],
445
+ "description": "Security group ownership: 'stack' (create/manage in CloudFormation), 'external' (use existing), 'auto' (discover and decide)",
446
+ "default": "auto"
447
+ },
448
+ "natGateway": {
449
+ "type": "string",
450
+ "enum": ["stack", "external", "auto"],
451
+ "description": "NAT Gateway ownership: 'stack' (create/manage in CloudFormation), 'external' (use existing), 'auto' (discover and decide)",
452
+ "default": "auto"
453
+ }
454
+ },
455
+ "additionalProperties": false
456
+ },
457
+ "external": {
458
+ "type": "object",
459
+ "description": "External resource IDs when using ownership='external'",
460
+ "properties": {
461
+ "vpcId": {
462
+ "type": "string",
463
+ "pattern": "^vpc-[a-z0-9]+$",
464
+ "description": "External VPC ID"
465
+ },
466
+ "subnetIds": {
467
+ "type": "array",
468
+ "description": "External subnet IDs (minimum 2 for high availability)",
469
+ "items": {
470
+ "type": "string",
471
+ "pattern": "^subnet-[a-z0-9]+$"
472
+ },
473
+ "minItems": 2,
474
+ "examples": [["subnet-abc123", "subnet-def456"]]
475
+ },
476
+ "securityGroupIds": {
477
+ "type": "array",
478
+ "description": "External security group IDs",
479
+ "items": {
480
+ "type": "string",
481
+ "pattern": "^sg-[a-z0-9]+$"
482
+ },
483
+ "minItems": 1,
484
+ "examples": [["sg-abc123"]]
485
+ },
486
+ "natGatewayId": {
487
+ "type": "string",
488
+ "pattern": "^nat-[a-z0-9]+$",
489
+ "description": "External NAT Gateway ID"
490
+ }
491
+ },
492
+ "additionalProperties": false
385
493
  }
386
494
  },
387
495
  "additionalProperties": false
@@ -543,6 +651,18 @@
543
651
  },
544
652
  "additionalProperties": false
545
653
  },
654
+ "deployment": {
655
+ "type": "object",
656
+ "description": "Deployment configuration and options",
657
+ "properties": {
658
+ "skipPostDeploymentHealthCheck": {
659
+ "type": "boolean",
660
+ "description": "Skip post-deployment health check (frigg doctor). Useful when cloudformation:DetectStackResourceDrift permission is not available.",
661
+ "default": false
662
+ }
663
+ },
664
+ "additionalProperties": false
665
+ },
546
666
  "custom": {
547
667
  "type": "object",
548
668
  "description": "Custom application-specific configuration",
@@ -583,6 +703,7 @@
583
703
  {
584
704
  "name": "my-frigg-app",
585
705
  "provider": "aws",
706
+ "usePrismaLambdaLayer": false,
586
707
  "environment": {
587
708
  "NODE_ENV": true,
588
709
  "API_KEY": true
@@ -599,13 +720,28 @@
599
720
  },
600
721
  "encryption": {
601
722
  "fieldLevelEncryptionMethod": "kms",
602
- "createResourceIfNoneFound": true
723
+ "createResourceIfNoneFound": true,
724
+ "kmsKeyAlias": false,
725
+ "schema": {
726
+ "User": {
727
+ "fields": ["password"]
728
+ }
729
+ }
603
730
  },
604
731
  "vpc": {
605
732
  "enable": true,
606
733
  "management": "create-new",
607
734
  "cidrBlock": "10.0.0.0/16",
608
- "enableVPCEndpoints": true
735
+ "enableVPCEndpoints": true,
736
+ "ownership": {
737
+ "securityGroup": "external"
738
+ },
739
+ "external": {
740
+ "securityGroupIds": ["sg-abc123"]
741
+ }
742
+ },
743
+ "deployment": {
744
+ "skipPostDeploymentHealthCheck": true
609
745
  },
610
746
  "ssm": {
611
747
  "enable": true