@factiii/stack 0.1.34 → 0.1.36

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 (102) hide show
  1. package/README.md +1 -1
  2. package/bin/stack +46 -0
  3. package/dist/cli/fix.js +10 -10
  4. package/dist/cli/fix.js.map +1 -1
  5. package/dist/cli/init.d.ts.map +1 -1
  6. package/dist/cli/init.js +20 -7
  7. package/dist/cli/init.js.map +1 -1
  8. package/dist/cli/scan.d.ts.map +1 -1
  9. package/dist/cli/scan.js +14 -22
  10. package/dist/cli/scan.js.map +1 -1
  11. package/dist/generators/generate-stack-yml.d.ts +1 -1
  12. package/dist/generators/generate-stack-yml.d.ts.map +1 -1
  13. package/dist/generators/generate-stack-yml.js +60 -33
  14. package/dist/generators/generate-stack-yml.js.map +1 -1
  15. package/dist/plugins/addons/openclaw/index.d.ts +45 -0
  16. package/dist/plugins/addons/openclaw/index.d.ts.map +1 -0
  17. package/dist/plugins/addons/openclaw/index.js +107 -0
  18. package/dist/plugins/addons/openclaw/index.js.map +1 -0
  19. package/dist/plugins/addons/openclaw/scanfix/setup.d.ts +19 -0
  20. package/dist/plugins/addons/openclaw/scanfix/setup.d.ts.map +1 -0
  21. package/dist/plugins/addons/openclaw/scanfix/setup.js +475 -0
  22. package/dist/plugins/addons/openclaw/scanfix/setup.js.map +1 -0
  23. package/dist/plugins/index.d.ts.map +1 -1
  24. package/dist/plugins/index.js +8 -0
  25. package/dist/plugins/index.js.map +1 -1
  26. package/dist/plugins/pipelines/aws/index.js +3 -3
  27. package/dist/plugins/pipelines/aws/prod.js +2 -2
  28. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +3 -1
  29. package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -1
  30. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +17 -7
  31. package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -1
  32. package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts +1 -1
  33. package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
  34. package/dist/plugins/pipelines/aws/scanfix/credentials.js +27 -73
  35. package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
  36. package/dist/plugins/pipelines/aws/scanfix/db-replication.d.ts +1 -4
  37. package/dist/plugins/pipelines/aws/scanfix/db-replication.d.ts.map +1 -1
  38. package/dist/plugins/pipelines/aws/scanfix/db-replication.js +9 -39
  39. package/dist/plugins/pipelines/aws/scanfix/db-replication.js.map +1 -1
  40. package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts +1 -0
  41. package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts.map +1 -1
  42. package/dist/plugins/pipelines/aws/scanfix/ec2.js +61 -110
  43. package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
  44. package/dist/plugins/pipelines/aws/scanfix/ecr.d.ts +1 -0
  45. package/dist/plugins/pipelines/aws/scanfix/ecr.d.ts.map +1 -1
  46. package/dist/plugins/pipelines/aws/scanfix/ecr.js +25 -34
  47. package/dist/plugins/pipelines/aws/scanfix/ecr.js.map +1 -1
  48. package/dist/plugins/pipelines/aws/scanfix/iam.d.ts +1 -0
  49. package/dist/plugins/pipelines/aws/scanfix/iam.d.ts.map +1 -1
  50. package/dist/plugins/pipelines/aws/scanfix/iam.js +35 -44
  51. package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
  52. package/dist/plugins/pipelines/aws/scanfix/rds.d.ts +1 -0
  53. package/dist/plugins/pipelines/aws/scanfix/rds.d.ts.map +1 -1
  54. package/dist/plugins/pipelines/aws/scanfix/rds.js +39 -104
  55. package/dist/plugins/pipelines/aws/scanfix/rds.js.map +1 -1
  56. package/dist/plugins/pipelines/aws/scanfix/s3.d.ts +1 -0
  57. package/dist/plugins/pipelines/aws/scanfix/s3.d.ts.map +1 -1
  58. package/dist/plugins/pipelines/aws/scanfix/s3.js +44 -53
  59. package/dist/plugins/pipelines/aws/scanfix/s3.js.map +1 -1
  60. package/dist/plugins/pipelines/aws/scanfix/security-groups.d.ts +1 -0
  61. package/dist/plugins/pipelines/aws/scanfix/security-groups.d.ts.map +1 -1
  62. package/dist/plugins/pipelines/aws/scanfix/security-groups.js +80 -79
  63. package/dist/plugins/pipelines/aws/scanfix/security-groups.js.map +1 -1
  64. package/dist/plugins/pipelines/aws/scanfix/ses.d.ts +1 -0
  65. package/dist/plugins/pipelines/aws/scanfix/ses.d.ts.map +1 -1
  66. package/dist/plugins/pipelines/aws/scanfix/ses.js +28 -50
  67. package/dist/plugins/pipelines/aws/scanfix/ses.js.map +1 -1
  68. package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.d.ts +17 -0
  69. package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.d.ts.map +1 -0
  70. package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.js +180 -0
  71. package/dist/plugins/pipelines/aws/scanfix/ssh-bridge.js.map +1 -0
  72. package/dist/plugins/pipelines/aws/scanfix/vpc.d.ts +1 -0
  73. package/dist/plugins/pipelines/aws/scanfix/vpc.d.ts.map +1 -1
  74. package/dist/plugins/pipelines/aws/scanfix/vpc.js +93 -94
  75. package/dist/plugins/pipelines/aws/scanfix/vpc.js.map +1 -1
  76. package/dist/plugins/pipelines/aws/utils/aws-helpers.d.ts +101 -28
  77. package/dist/plugins/pipelines/aws/utils/aws-helpers.d.ts.map +1 -1
  78. package/dist/plugins/pipelines/aws/utils/aws-helpers.js +428 -76
  79. package/dist/plugins/pipelines/aws/utils/aws-helpers.js.map +1 -1
  80. package/dist/plugins/pipelines/factiii/index.d.ts +11 -1
  81. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
  82. package/dist/plugins/pipelines/factiii/index.js +183 -33
  83. package/dist/plugins/pipelines/factiii/index.js.map +1 -1
  84. package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +1 -1
  85. package/dist/plugins/pipelines/factiii/scanfix/config.js +4 -4
  86. package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -1
  87. package/dist/plugins/pipelines/factiii/scanfix/secrets.js +68 -8
  88. package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
  89. package/dist/plugins/servers/mac/index.js +1 -1
  90. package/dist/plugins/servers/mac/staging.js +2 -2
  91. package/dist/scanfix/fixes/certbot.js +1 -1
  92. package/dist/scripts/validate-example-values.d.ts +1 -1
  93. package/dist/scripts/validate-example-values.js +6 -6
  94. package/dist/utils/config-helpers.d.ts +3 -0
  95. package/dist/utils/config-helpers.d.ts.map +1 -1
  96. package/dist/utils/config-helpers.js.map +1 -1
  97. package/dist/utils/secret-prompts.d.ts +5 -2
  98. package/dist/utils/secret-prompts.d.ts.map +1 -1
  99. package/dist/utils/secret-prompts.js +27 -4
  100. package/dist/utils/secret-prompts.js.map +1 -1
  101. package/dist/utils/template-generator.js +14 -14
  102. package/package.json +95 -88
@@ -1,34 +1,38 @@
1
1
  /**
2
2
  * AWS Helper Utilities
3
3
  *
4
- * Shared functions for AWS CLI operations used across all AWS scanfix files.
5
- * All functions use AWS CLI via execSync (no SDK dependency).
4
+ * Shared functions for AWS SDK operations used across all AWS scanfix files.
5
+ * Uses AWS SDK v3 clients instead of AWS CLI.
6
6
  */
7
+ import { EC2Client, DescribeVpcsCommand, DescribeSubnetsCommand, DescribeSecurityGroupsCommand, DescribeInstancesCommand, DescribeKeyPairsCommand, DescribeAddressesCommand, DescribeInternetGatewaysCommand, DescribeAvailabilityZonesCommand, DescribeImagesCommand, CreateVpcCommand, ModifyVpcAttributeCommand, CreateSubnetCommand, ModifySubnetAttributeCommand, CreateInternetGatewayCommand, AttachInternetGatewayCommand, CreateRouteTableCommand, CreateRouteCommand, AssociateRouteTableCommand, CreateSecurityGroupCommand, AuthorizeSecurityGroupIngressCommand, CreateKeyPairCommand, RunInstancesCommand, AllocateAddressCommand, AssociateAddressCommand, type Tag, type TagSpecification, type Filter, waitUntilInstanceRunning } from '@aws-sdk/client-ec2';
8
+ import { STSClient, GetCallerIdentityCommand } from '@aws-sdk/client-sts';
9
+ import { IAMClient, GetUserCommand, CreateUserCommand, PutUserPolicyCommand, CreateAccessKeyCommand } from '@aws-sdk/client-iam';
10
+ import { RDSClient, DescribeDBSubnetGroupsCommand, CreateDBSubnetGroupCommand, DescribeDBInstancesCommand, CreateDBInstanceCommand } from '@aws-sdk/client-rds';
11
+ import { S3Client, HeadBucketCommand, CreateBucketCommand, PutPublicAccessBlockCommand, PutBucketEncryptionCommand, GetBucketCorsCommand, PutBucketCorsCommand } from '@aws-sdk/client-s3';
12
+ import { ECRClient, DescribeRepositoriesCommand, CreateRepositoryCommand, PutLifecyclePolicyCommand, GetAuthorizationTokenCommand } from '@aws-sdk/client-ecr';
13
+ import { SESClient, VerifyDomainIdentityCommand, GetIdentityVerificationAttributesCommand, VerifyDomainDkimCommand, GetIdentityDkimAttributesCommand, GetSendQuotaCommand } from '@aws-sdk/client-ses';
7
14
  import type { FactiiiConfig } from '../../../../types/index.js';
15
+ export declare function getEC2Client(region: string): EC2Client;
16
+ export declare function getSTSClient(region: string): STSClient;
17
+ export declare function getIAMClient(region: string): IAMClient;
18
+ export declare function getRDSClient(region: string): RDSClient;
19
+ export declare function getS3Client(region: string): S3Client;
20
+ export declare function getECRClient(region: string): ECRClient;
21
+ export declare function getSESClient(region: string): SESClient;
8
22
  /**
9
- * Execute an AWS CLI command with region injection
10
- * Returns the stdout as a trimmed string
11
- * Throws on failure
23
+ * Build standard tags array for AWS resources
12
24
  */
13
- export declare function awsExec(cmd: string, region?: string): string;
25
+ export declare function buildTags(projectName: string, extraTags?: Record<string, string>): Tag[];
14
26
  /**
15
- * Execute an AWS CLI command, returning null on failure instead of throwing
27
+ * Build TagSpecification for resource creation
16
28
  */
17
- export declare function awsExecSafe(cmd: string, region?: string): string | null;
29
+ export declare function tagSpec(resourceType: string, projectName: string, extraTags?: Record<string, string>): TagSpecification;
18
30
  /**
19
- * Find an AWS resource by its factiii:project tag
20
- * Returns the resource data as parsed JSON, or null if not found
31
+ * Build a filter for factiii:project tag
21
32
  */
22
- export declare function findResourceByTag(describeCmd: string, projectName: string, region: string): unknown | null;
23
- /**
24
- * Generate --tag-specifications string for AWS resource creation
25
- * Tags resources with factiii:project={name} and factiii:managed=true
26
- * Uses JSON format to avoid shell parsing issues with colons in tag keys
27
- */
28
- export declare function tagSpec(resourceType: string, projectName: string, extraTags?: Record<string, string>): string;
33
+ export declare function projectFilter(projectName: string): Filter;
29
34
  /**
30
35
  * Extract AWS configuration from a FactiiiConfig
31
- * Checks both top-level config.aws and per-environment aws settings
32
36
  */
33
37
  export declare function getAwsConfig(config: FactiiiConfig): {
34
38
  region: string;
@@ -36,22 +40,91 @@ export declare function getAwsConfig(config: FactiiiConfig): {
36
40
  accessKeyId?: string;
37
41
  };
38
42
  /**
39
- * Check if AWS provisioning should run
40
- * AWS provisioning (VPC, EC2, RDS, etc.) only runs from the dev machine.
41
- * When on the server (FACTIII_ON_SERVER=true), skip provisioning — only server-level fixes run.
43
+ * Check if running on server (skip AWS provisioning)
42
44
  */
43
45
  export declare function isOnServer(): boolean;
44
46
  /**
45
- * Check if AWS CLI is installed and accessible
47
+ * Get project name for tagging
46
48
  */
47
- export declare function isAwsCliInstalled(): boolean;
49
+ export declare function getProjectName(config: FactiiiConfig): string;
48
50
  /**
49
- * Check if AWS credentials are configured and valid
50
- * Returns the account ID if valid, null otherwise
51
+ * Get AWS account ID via STS
51
52
  */
52
- export declare function getAwsAccountId(region?: string): string | null;
53
+ export declare function getAwsAccountId(region: string): Promise<string | null>;
53
54
  /**
54
- * Get the project name for tagging (from config.name)
55
+ * Find VPC by factiii:project tag
55
56
  */
56
- export declare function getProjectName(config: FactiiiConfig): string;
57
+ export declare function findVpc(projectName: string, region: string): Promise<string | null>;
58
+ /**
59
+ * Find subnet by tag and type
60
+ */
61
+ export declare function findSubnet(projectName: string, region: string, type: string): Promise<string | null>;
62
+ /**
63
+ * Find all private subnets
64
+ */
65
+ export declare function findPrivateSubnets(projectName: string, region: string): Promise<string[]>;
66
+ /**
67
+ * Find security group by name and VPC
68
+ */
69
+ export declare function findSecurityGroup(groupName: string, vpcId: string, region: string): Promise<string | null>;
70
+ /**
71
+ * Find EC2 key pair by name
72
+ */
73
+ export declare function findKeyPair(keyName: string, region: string): Promise<boolean>;
74
+ /**
75
+ * Find running/stopped EC2 instance by tag
76
+ */
77
+ export declare function findInstance(projectName: string, region: string): Promise<string | null>;
78
+ /**
79
+ * Find Elastic IP associated with an instance
80
+ */
81
+ export declare function findElasticIp(instanceId: string, region: string): Promise<string | null>;
82
+ /**
83
+ * Find internet gateway attached to VPC
84
+ */
85
+ export declare function findIgw(vpcId: string, region: string): Promise<string | null>;
86
+ /**
87
+ * Find DB subnet group
88
+ */
89
+ export declare function findDbSubnetGroup(groupName: string, region: string): Promise<boolean>;
90
+ /**
91
+ * Find RDS instance by identifier
92
+ */
93
+ export declare function findRdsInstance(dbInstanceId: string, region: string): Promise<{
94
+ status: string;
95
+ endpoint: string | null;
96
+ } | null>;
97
+ /**
98
+ * Find RDS instance endpoint
99
+ */
100
+ export declare function findRdsEndpoint(projectName: string, region: string): Promise<string | null>;
101
+ /**
102
+ * Check if ECR repository exists
103
+ */
104
+ export declare function findEcrRepo(repoName: string, region: string): Promise<boolean>;
105
+ /**
106
+ * Check if S3 bucket exists
107
+ */
108
+ export declare function findBucket(bucketName: string, region: string): Promise<boolean>;
109
+ /**
110
+ * Check if IAM user exists
111
+ */
112
+ export declare function findIamUser(userName: string, region: string): Promise<boolean>;
113
+ /**
114
+ * Check if domain is verified in SES
115
+ */
116
+ export declare function isDomainVerified(domain: string, region: string): Promise<boolean>;
117
+ /**
118
+ * Check if DKIM is configured for domain
119
+ */
120
+ export declare function hasDkim(domain: string, region: string): Promise<boolean>;
121
+ /**
122
+ * Check if S3 bucket has CORS configured
123
+ */
124
+ export declare function hasCors(bucketName: string, region: string): Promise<boolean>;
125
+ /**
126
+ * Check if AWS is configured for this project (shared guard)
127
+ */
128
+ export declare function isAwsConfigured(config: FactiiiConfig): boolean;
129
+ export { EC2Client, DescribeVpcsCommand, DescribeSubnetsCommand, DescribeSecurityGroupsCommand, DescribeInstancesCommand, DescribeKeyPairsCommand, DescribeAddressesCommand, DescribeInternetGatewaysCommand, DescribeAvailabilityZonesCommand, DescribeImagesCommand, CreateVpcCommand, ModifyVpcAttributeCommand, CreateSubnetCommand, ModifySubnetAttributeCommand, CreateInternetGatewayCommand, AttachInternetGatewayCommand, CreateRouteTableCommand, CreateRouteCommand, AssociateRouteTableCommand, CreateSecurityGroupCommand, AuthorizeSecurityGroupIngressCommand, CreateKeyPairCommand, RunInstancesCommand, AllocateAddressCommand, AssociateAddressCommand, waitUntilInstanceRunning, STSClient, GetCallerIdentityCommand, IAMClient, GetUserCommand, CreateUserCommand, PutUserPolicyCommand, CreateAccessKeyCommand, RDSClient, DescribeDBSubnetGroupsCommand, CreateDBSubnetGroupCommand, DescribeDBInstancesCommand, CreateDBInstanceCommand, S3Client, HeadBucketCommand, CreateBucketCommand, PutPublicAccessBlockCommand, PutBucketEncryptionCommand, GetBucketCorsCommand, PutBucketCorsCommand, ECRClient, DescribeRepositoriesCommand, CreateRepositoryCommand, PutLifecyclePolicyCommand, GetAuthorizationTokenCommand, SESClient, VerifyDomainIdentityCommand, GetIdentityVerificationAttributesCommand, VerifyDomainDkimCommand, GetIdentityDkimAttributesCommand, GetSendQuotaCommand, };
57
130
  //# sourceMappingURL=aws-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aws-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/utils/aws-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,GAAG,IAAI,CAWhB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAe7G;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CA2BA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"aws-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/utils/aws-helpers.ts"],"names":[],"mappings":"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"}