agent-claw: automated task changes

This commit is contained in:
daniel
2026-05-06 18:55:16 -05:00
parent 38905bb1e9
commit 732b00fb66
8494 changed files with 2018127 additions and 4 deletions

View File

@@ -0,0 +1,27 @@
import type * as iam from '../../../aws-iam';
import type * as sns from '../../../aws-sns';
import type * as cdk from '../../../core';
import type { CloudFormationRuleConstraintOptions, CommonConstraintOptions, StackSetsConstraintOptions, TagUpdateConstraintOptions } from '../constraints';
import type { IPortfolio } from '../portfolio';
import type { IProduct } from '../product';
import { CfnPortfolioProductAssociation } from '../servicecatalog.generated';
import type { TagOptions } from '../tag-options';
export declare class AssociationManager {
static associateProductWithPortfolio(portfolio: IPortfolio, product: IProduct, options: CommonConstraintOptions | undefined): {
associationKey: string;
cfnPortfolioProductAssociation: CfnPortfolioProductAssociation;
};
static constrainTagUpdates(portfolio: IPortfolio, product: IProduct, options: TagUpdateConstraintOptions): void;
static notifyOnStackEvents(portfolio: IPortfolio, product: IProduct, topic: sns.ITopic, options: CommonConstraintOptions): void;
static constrainCloudFormationParameters(portfolio: IPortfolio, product: IProduct, options: CloudFormationRuleConstraintOptions): void;
static setLaunchRole(portfolio: IPortfolio, product: IProduct, launchRole: iam.IRoleRef, options: CommonConstraintOptions): void;
static setLocalLaunchRoleName(portfolio: IPortfolio, product: IProduct, launchRoleName: string, options: CommonConstraintOptions): void;
static deployWithStackSets(portfolio: IPortfolio, product: IProduct, options: StackSetsConstraintOptions): void;
static associateTagOptions(resource: cdk.IResource, resourceId: string, tagOptions: TagOptions): void;
private static setLaunchRoleConstraint;
private static stackSetConstraintLogicalId;
private static launchRoleConstraintLogicalId;
private static prettyPrintAssociation;
private static formatTemplateRule;
private static formatAssertions;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,58 @@
import type { IBucket } from '../../../aws-s3';
import { ServerSideEncryption } from '../../../aws-s3-deployment';
import * as cdk from '../../../core';
/**
* Product stack synthesizer props.
*/
export interface ProductStackSynthesizerProps {
/**
* The parent stack of the stack that this synthesizer is bound to.
*/
readonly parentStack: cdk.Stack;
/**
* The bucket used to store assets and enable ProductStack asset support.
*
* @default - No bucket provided and assets will not be supported
*/
readonly assetBucket?: IBucket;
/**
* A ServerSideEncryption can be enabled to encrypt assets that are put into assetBucket.
*
* @default - No encryption is used
*/
readonly serverSideEncryption?: ServerSideEncryption;
/**
* For AWS_KMS ServerSideEncryption a KMS KeyId must be provided which will be used to encrypt assets.
*
* @default - No KMS KeyId and SSE_KMS encryption cannot be used
*/
readonly serverSideEncryptionAwsKmsKeyId?: string;
/**
* The amount of memory (in MiB) to allocate to the AWS Lambda function which
* replicates the files from the CDK bucket to the destination bucket.
*
* If you are deploying large files, you will need to increase this number
* accordingly.
*
* @default 128
*/
readonly memoryLimit?: number;
}
/**
* Deployment environment for an AWS Service Catalog product stack.
*
* Interoperates with the StackSynthesizer of the parent stack.
*/
export declare class ProductStackSynthesizer extends cdk.StackSynthesizer {
private readonly parentStack;
private readonly assetBucket?;
private readonly serverSideEncryption?;
private readonly serverSideEncryptionAwsKmsKeyId?;
private readonly memoryLimit?;
private parentAssetBucket?;
constructor(props: ProductStackSynthesizerProps);
addFileAsset(asset: cdk.FileAssetSource): cdk.FileAssetLocation;
private physicalNameOfBucket;
addDockerImageAsset(_asset: cdk.DockerImageAssetSource): cdk.DockerImageAssetLocation;
synthesize(session: cdk.ISynthesisSession): void;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProductStackSynthesizer=void 0;var aws_s3_1=()=>{var tmp=require("../../../aws-s3");return aws_s3_1=()=>tmp,tmp},aws_s3_deployment_1=()=>{var tmp=require("../../../aws-s3-deployment");return aws_s3_deployment_1=()=>tmp,tmp},cdk=()=>{var tmp=require("../../../core");return cdk=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};class ProductStackSynthesizer extends cdk().StackSynthesizer{parentStack;assetBucket;serverSideEncryption;serverSideEncryptionAwsKmsKeyId;memoryLimit;parentAssetBucket;constructor(props){super(),this.parentStack=props.parentStack,this.assetBucket=props.assetBucket,this.serverSideEncryption=props.serverSideEncryption,this.serverSideEncryptionAwsKmsKeyId=props.serverSideEncryptionAwsKmsKeyId,this.memoryLimit=props.memoryLimit,this.assetBucket&&!cdk().Resource.isOwnedResource(this.assetBucket)&&cdk().Annotations.of(this.parentStack).addWarningV2("@aws-cdk/aws-servicecatalog:assetsManuallyAddBucketPermissions","[WARNING] Bucket Policy Permissions cannot be added to referenced Bucket. Please make sure your bucket has the correct permissions")}addFileAsset(asset){if(!this.assetBucket)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`AssetBucketRequired`,"An Asset Bucket must be provided to use Assets");const location=this.parentStack.synthesizer.addFileAsset(asset);this.parentAssetBucket||(this.parentAssetBucket=aws_s3_1().Bucket.fromBucketName(this.boundStack,"ParentAssetBucket",location.bucketName));const objectKey=location.objectKey,source=aws_s3_deployment_1().Source.bucket(this.parentAssetBucket,location.objectKey);if(this.serverSideEncryption===aws_s3_deployment_1().ServerSideEncryption.AWS_KMS&&!this.serverSideEncryptionAwsKmsKeyId)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`KmsKeyRequiredForSseKms`,"A KMS Key must be provided to use SSE_KMS");if(this.serverSideEncryption!==aws_s3_deployment_1().ServerSideEncryption.AWS_KMS&&this.serverSideEncryptionAwsKmsKeyId)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`SseKmsRequiredForKmsKey`,"A SSE_KMS encryption must be enabled if you provide KMS Key");const deploymentScope=this.assetBucket,deploymentCid="ProductAssetsDeployment";(deploymentScope.node.tryFindChild(deploymentCid)??new(aws_s3_deployment_1()).BucketDeployment(deploymentScope,deploymentCid,{sources:[source],destinationBucket:this.assetBucket,extract:!1,prune:!1,retainOnDelete:!0,serverSideEncryption:this.serverSideEncryption,serverSideEncryptionAwsKmsKeyId:this.serverSideEncryptionAwsKmsKeyId,memoryLimit:this.memoryLimit,outputObjectKeys:!1})).addSource(source);const bucketName=this.physicalNameOfBucket(this.assetBucket);if(!asset.fileName)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`AssetFileNameRequired`,"Asset file name is undefined");const s3ObjectUrl=`s3://${bucketName}/${objectKey}`,httpUrl=`https://s3.${bucketName}/${objectKey}`;return{bucketName,objectKey,httpUrl,s3ObjectUrl,s3Url:httpUrl}}physicalNameOfBucket(bucket){let resolvedName;if(cdk().Resource.isOwnedResource(bucket)?resolvedName=cdk().Stack.of(bucket).resolve(bucket.node.defaultChild.bucketName):resolvedName=bucket.bucketName,resolvedName===void 0)throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`BucketNameRequiredForAssets`,"A bucketName must be provided to use Assets");return resolvedName}addDockerImageAsset(_asset){throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`DockerAssetsNotSupported`,"Service Catalog Product Stacks cannot use Assets")}synthesize(session){this.synthesizeTemplate(session)}}exports.ProductStackSynthesizer=ProductStackSynthesizer;

View File

@@ -0,0 +1,4 @@
/**
* Generates a unique hash identfifer using SHA256 encryption algorithm
*/
export declare function hashValues(...ids: string[]): string;

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.hashValues=hashValues;var crypto=()=>{var tmp=require("crypto");return crypto=()=>tmp,tmp};function hashValues(...ids){const sha256=crypto().createHash("sha256");return ids.forEach(val=>sha256.update(val)),sha256.digest("hex").slice(0,12)}

View File

@@ -0,0 +1,27 @@
import type * as iam from '../../../aws-iam';
/**
* Class to validate that inputs match requirements.
*/
export declare class InputValidator {
/**
* Validates length is between allowed min and max lengths.
*/
static validateLength(resourceName: string, inputName: string, minLength: number, maxLength: number, inputString?: string): void;
/**
* Validates string matches the allowed regex pattern.
*/
static validateRegex(resourceName: string, inputName: string, regexp: RegExp, inputString?: string): void;
/**
* Validates string matches the valid URL regex pattern.
*/
static validateUrl(resourceName: string, inputName: string, inputString?: string): void;
/**
* Validates string matches the valid email regex pattern.
*/
static validateEmail(resourceName: string, inputName: string, inputString?: string): void;
/**
* Validates that a role being used as a local launch role has the role name set
*/
static validateRoleNameSetForLocalLaunchRole(role: iam.IRole): void;
private static truncateString;
}

View File

@@ -0,0 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.InputValidator=void 0;var cdk=()=>{var tmp=require("../../../core");return cdk=()=>tmp,tmp},core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},literal_string_1=()=>{var tmp=require("../../../core/lib/private/literal-string");return literal_string_1=()=>tmp,tmp};class InputValidator{static validateLength(resourceName,inputName,minLength,maxLength,inputString){if(!cdk().Token.isUnresolved(inputString)&&inputString!==void 0&&(inputString.length<minLength||inputString.length>maxLength))throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`InvalidInputLength`,`Invalid ${inputName} for resource ${resourceName}, must have length between ${minLength} and ${maxLength}, got: '${this.truncateString(inputString,100)}'`)}static validateRegex(resourceName,inputName,regexp,inputString){if(!cdk().Token.isUnresolved(inputString)&&inputString!==void 0&&!regexp.test(inputString))throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`InvalidInputPattern`,`Invalid ${inputName} for resource ${resourceName}, must match regex pattern ${regexp}, got: '${this.truncateString(inputString,100)}'`)}static validateUrl(resourceName,inputName,inputString){this.validateRegex(resourceName,inputName,/^https?:\/\/.*/,inputString)}static validateEmail(resourceName,inputName,inputString){this.validateRegex(resourceName,inputName,/^[\w\d.%+\-]+@[a-z\d.\-]+\.[a-z]{2,4}$/i,inputString)}static validateRoleNameSetForLocalLaunchRole(role){if(role.node.defaultChild&&cdk().Token.isUnresolved(role.node.defaultChild.roleName))throw new(core_1()).UnscopedValidationError((0,literal_string_1().lit)`LocalLaunchRoleMustHaveRoleName`,`Role ${role.node.id} used for Local Launch Role must have roleName explicitly set`)}static truncateString(string,maxLength){return string.length>maxLength?string.substring(0,maxLength)+"[truncated]":string}}exports.InputValidator=InputValidator;