@intentius/chant-lexicon-aws 0.18.23 → 0.18.25

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.
@@ -8659,30 +8659,30 @@ export declare class DataSyncAgent {
8659
8659
 
8660
8660
  export declare class DataTable {
8661
8661
  constructor(props: {
8662
+ /** The identifier of the Amazon Connect instance. */
8663
+ InstanceArn: string;
8664
+ /** The name of the Data Table */
8665
+ Name: string;
8666
+ /** The status of the Data Table */
8667
+ Status: "PUBLISHED";
8668
+ /** The time zone of the Data Table */
8669
+ TimeZone: string;
8670
+ /** The value lock level of the Data Table */
8671
+ ValueLockLevel: "ATTRIBUTE" | "DATA_TABLE" | "NONE" | "PRIMARY_VALUE" | "VALUE";
8662
8672
  /** The arn of the Data Table */
8663
8673
  Arn?: string;
8664
8674
  /** The creation time of the Data Table */
8665
8675
  CreatedTime?: number;
8666
8676
  /** The description of the Data Table. */
8667
8677
  Description?: string;
8668
- /** The identifier of the Amazon Connect instance. */
8669
- InstanceArn?: string;
8670
8678
  /** Last modified region. */
8671
8679
  LastModifiedRegion?: string;
8672
8680
  /** Last modified time. */
8673
8681
  LastModifiedTime?: number;
8674
8682
  /** The lock version of the Data Table */
8675
8683
  LockVersion?: Record<string, unknown>;
8676
- /** The name of the Data Table */
8677
- Name?: string;
8678
- /** The status of the Data Table */
8679
- Status?: "PUBLISHED";
8680
8684
  /** One or more tags. */
8681
8685
  Tags?: DataTable_Tag[];
8682
- /** The time zone of the Data Table */
8683
- TimeZone?: string;
8684
- /** The value lock level of the Data Table */
8685
- ValueLockLevel?: "ATTRIBUTE" | "DATA_TABLE" | "NONE" | "PRIMARY_VALUE" | "VALUE";
8686
8686
  }, attributes?: CFResourceAttributes);
8687
8687
  readonly Arn: string;
8688
8688
  readonly CreatedTime: number;
@@ -8693,17 +8693,17 @@ export declare class DataTable {
8693
8693
 
8694
8694
  export declare class DataTableAttribute {
8695
8695
  constructor(props: {
8696
+ DataTableArn: string;
8697
+ InstanceArn: string;
8698
+ Name: string;
8699
+ ValueType: "BOOLEAN" | "NUMBER" | "NUMBER_LIST" | "TEXT" | "TEXT_LIST";
8696
8700
  AttributeId?: string;
8697
- DataTableArn?: string;
8698
8701
  Description?: string;
8699
- InstanceArn?: string;
8700
8702
  LastModifiedRegion?: string;
8701
8703
  LastModifiedTime?: number;
8702
8704
  LockVersion?: Record<string, unknown>;
8703
- Name?: string;
8704
8705
  Primary?: boolean;
8705
8706
  Validation?: Record<string, unknown>;
8706
- ValueType?: "BOOLEAN" | "NUMBER" | "NUMBER_LIST" | "TEXT" | "TEXT_LIST";
8707
8707
  }, attributes?: CFResourceAttributes);
8708
8708
  readonly AttributeId: string;
8709
8709
  readonly LastModifiedRegion: string;
@@ -8713,9 +8713,9 @@ export declare class DataTableAttribute {
8713
8713
 
8714
8714
  export declare class DataTableRecord {
8715
8715
  constructor(props: {
8716
- DataTableArn?: string;
8717
- DataTableRecord?: Record<string, unknown>;
8718
- InstanceArn?: string;
8716
+ DataTableArn: string;
8717
+ DataTableRecord: Record<string, unknown>;
8718
+ InstanceArn: string;
8719
8719
  RecordId?: string;
8720
8720
  }, attributes?: CFResourceAttributes);
8721
8721
  readonly RecordId: string;
@@ -11190,12 +11190,16 @@ export declare class DLMLifecyclePolicy {
11190
11190
 
11191
11191
  export declare class DMSCertificate {
11192
11192
  constructor(props: {
11193
+ /** The certificate Arn */
11194
+ CertificateArn?: string;
11195
+ /** The certificate Identifier */
11193
11196
  CertificateIdentifier?: string;
11197
+ /** The certificate Pem */
11194
11198
  CertificatePem?: string;
11199
+ /** The certificate Wallet */
11195
11200
  CertificateWallet?: string;
11196
- Id?: string;
11197
11201
  }, attributes?: CFResourceAttributes);
11198
- readonly Id: string;
11202
+ readonly CertificateArn: string;
11199
11203
  }
11200
11204
 
11201
11205
  export declare class DMSEndpoint {
@@ -17690,14 +17694,14 @@ export declare class InstanceGroupConfig {
17690
17694
  JobFlowId: string;
17691
17695
  AutoScalingPolicy?: InstanceGroupConfig_AutoScalingPolicy;
17692
17696
  BidPrice?: string;
17693
- Configurations?: InstanceGroupConfig_AppConfiguration[];
17697
+ Configurations?: InstanceGroupConfig_Configuration[];
17694
17698
  CustomAmiId?: string;
17695
17699
  EbsConfiguration?: InstanceGroupConfig_EbsConfiguration;
17696
- InstanceGroupId?: string;
17700
+ Id?: string;
17697
17701
  Market?: string;
17698
17702
  Name?: string;
17699
17703
  }, attributes?: CFResourceAttributes);
17700
- readonly InstanceGroupId: string;
17704
+ readonly Id: string;
17701
17705
  }
17702
17706
 
17703
17707
  export declare class InstanceProfile {
@@ -19306,6 +19310,18 @@ export declare class KmsKey {
19306
19310
  readonly KeyId: string;
19307
19311
  }
19308
19312
 
19313
+ export declare class KnowledgeBasePolicy {
19314
+ constructor(props: {
19315
+ /** The unique identifier of the knowledge base */
19316
+ KnowledgeBaseId: string;
19317
+ /** The IAM policy document defining access permissions for the knowledge base */
19318
+ PolicyDocument: PolicyDocument;
19319
+ /** The revision identifier for the policy, used for optimistic concurrency control */
19320
+ RevisionId?: string;
19321
+ }, attributes?: CFResourceAttributes);
19322
+ readonly RevisionId: string;
19323
+ }
19324
+
19309
19325
  export declare class Label {
19310
19326
  constructor(props: {
19311
19327
  /** The name of the label. */
@@ -34835,6 +34851,23 @@ export declare class TLSInspectionConfiguration {
34835
34851
  readonly TLSInspectionConfigurationId: string;
34836
34852
  }
34837
34853
 
34854
+ export declare class TokenVault {
34855
+ constructor(props: {
34856
+ /** The ARN of the token vault. */
34857
+ Arn?: string;
34858
+ /** The KMS configuration for the token vault. */
34859
+ KmsConfiguration?: TokenVault_KmsConfiguration;
34860
+ /** The timestamp when the token vault was last modified. */
34861
+ LastModifiedDate?: string;
34862
+ /** The unique identifier of the token vault. */
34863
+ TokenVaultId?: string;
34864
+ }, attributes?: CFResourceAttributes);
34865
+ readonly Arn: string;
34866
+ readonly KmsConfiguration: TokenVault_KmsConfiguration;
34867
+ readonly LastModifiedDate: string;
34868
+ readonly TokenVaultId: string;
34869
+ }
34870
+
34838
34871
  export declare class Topic {
34839
34872
  constructor(props: {
34840
34873
  /** The archive policy determines the number of days SNS retains messages. You can set a retention period from 1 to 365 days. */
@@ -35605,6 +35638,18 @@ export declare class TransitGatewayPolicyTable {
35605
35638
  readonly TransitGatewayPolicyTableId: string;
35606
35639
  }
35607
35640
 
35641
+ export declare class TransitGatewayPolicyTableAssociation {
35642
+ constructor(props: {
35643
+ /** The ID of transit gateway attachment. */
35644
+ TransitGatewayAttachmentId: string;
35645
+ /** The ID of transit gateway policy table. */
35646
+ TransitGatewayPolicyTableId: string;
35647
+ /** The state of the transit gateway policy table association. */
35648
+ State?: string;
35649
+ }, attributes?: CFResourceAttributes);
35650
+ readonly State: string;
35651
+ }
35652
+
35608
35653
  export declare class TransitGatewayRegistration {
35609
35654
  constructor(props: {
35610
35655
  /** The ID of the global network. */
@@ -36806,12 +36851,42 @@ export declare class Vpc {
36806
36851
  Ipv6CidrBlocks?: string[];
36807
36852
  /** The tags for the VPC. */
36808
36853
  Tags?: Vpc_Tag[];
36854
+ VpcEncryptionControl?: Vpc_VpcEncryptionControl;
36809
36855
  VpcId?: string;
36810
36856
  }, attributes?: CFResourceAttributes);
36811
36857
  readonly CidrBlockAssociations: string[];
36812
36858
  readonly DefaultNetworkAcl: string;
36813
36859
  readonly DefaultSecurityGroup: string;
36814
36860
  readonly Ipv6CidrBlocks: string[];
36861
+ readonly VpcEncryptionControl_ResourceExclusions: string;
36862
+ readonly VpcEncryptionControl_ResourceExclusions_EgressOnlyInternetGateway: string;
36863
+ readonly VpcEncryptionControl_ResourceExclusions_EgressOnlyInternetGateway_State: string;
36864
+ readonly VpcEncryptionControl_ResourceExclusions_EgressOnlyInternetGateway_StateMessage: string;
36865
+ readonly VpcEncryptionControl_ResourceExclusions_ElasticFileSystem: string;
36866
+ readonly VpcEncryptionControl_ResourceExclusions_ElasticFileSystem_State: string;
36867
+ readonly VpcEncryptionControl_ResourceExclusions_ElasticFileSystem_StateMessage: string;
36868
+ readonly VpcEncryptionControl_ResourceExclusions_InternetGateway: string;
36869
+ readonly VpcEncryptionControl_ResourceExclusions_InternetGateway_State: string;
36870
+ readonly VpcEncryptionControl_ResourceExclusions_InternetGateway_StateMessage: string;
36871
+ readonly VpcEncryptionControl_ResourceExclusions_Lambda: string;
36872
+ readonly VpcEncryptionControl_ResourceExclusions_Lambda_State: string;
36873
+ readonly VpcEncryptionControl_ResourceExclusions_Lambda_StateMessage: string;
36874
+ readonly VpcEncryptionControl_ResourceExclusions_NatGateway: string;
36875
+ readonly VpcEncryptionControl_ResourceExclusions_NatGateway_State: string;
36876
+ readonly VpcEncryptionControl_ResourceExclusions_NatGateway_StateMessage: string;
36877
+ readonly VpcEncryptionControl_ResourceExclusions_VirtualPrivateGateway: string;
36878
+ readonly VpcEncryptionControl_ResourceExclusions_VirtualPrivateGateway_State: string;
36879
+ readonly VpcEncryptionControl_ResourceExclusions_VirtualPrivateGateway_StateMessage: string;
36880
+ readonly VpcEncryptionControl_ResourceExclusions_VpcLattice: string;
36881
+ readonly VpcEncryptionControl_ResourceExclusions_VpcLattice_State: string;
36882
+ readonly VpcEncryptionControl_ResourceExclusions_VpcLattice_StateMessage: string;
36883
+ readonly VpcEncryptionControl_ResourceExclusions_VpcPeering: string;
36884
+ readonly VpcEncryptionControl_ResourceExclusions_VpcPeering_State: string;
36885
+ readonly VpcEncryptionControl_ResourceExclusions_VpcPeering_StateMessage: string;
36886
+ readonly VpcEncryptionControl_State: string;
36887
+ readonly VpcEncryptionControl_StateMessage: string;
36888
+ readonly VpcEncryptionControl_VpcEncryptionControlId: string;
36889
+ readonly VpcEncryptionControl_VpcId: string;
36815
36890
  readonly VpcId: string;
36816
36891
  }
36817
36892
 
@@ -41616,14 +41691,6 @@ export declare class AppConfigResourceObject {
41616
41691
  });
41617
41692
  }
41618
41693
 
41619
- export declare class AppConfiguration {
41620
- constructor(props: {
41621
- Classification?: string;
41622
- ConfigurationProperties?: Record<string, unknown>;
41623
- Configurations?: InstanceGroupConfig_AppConfiguration[];
41624
- });
41625
- }
41626
-
41627
41694
  export declare class AppCookieStickinessPolicy {
41628
41695
  constructor(props: {
41629
41696
  /** The name of the application cookie used for stickiness. */
@@ -79199,26 +79266,24 @@ export declare class InstanceFleetConfig_SpotResizingSpecification {
79199
79266
  });
79200
79267
  }
79201
79268
 
79202
- export declare class InstanceGroupConfig_AppConfiguration {
79269
+ export declare class InstanceGroupConfig_AutoScalingPolicy {
79203
79270
  constructor(props: {
79204
- Classification?: string;
79205
- ConfigurationProperties?: Record<string, unknown>;
79206
- Configurations?: InstanceGroupConfig_AppConfiguration[];
79271
+ Constraints: InstanceGroupConfig_ScalingConstraints;
79272
+ Rules: InstanceGroupConfig_ScalingRule[];
79207
79273
  });
79208
79274
  }
79209
79275
 
79210
- export declare class InstanceGroupConfig_AutoScalingPolicy {
79276
+ export declare class InstanceGroupConfig_Configuration {
79211
79277
  constructor(props: {
79212
- Constraints: InstanceGroupConfig_ScalingConstraints;
79213
- Rules: InstanceGroupConfig_ScalingRule[];
79278
+ Classification?: string;
79279
+ ConfigurationProperties?: Record<string, unknown>;
79280
+ Configurations?: InstanceGroupConfig_Configuration[];
79214
79281
  });
79215
79282
  }
79216
79283
 
79217
79284
  export declare class InstanceGroupConfig_EbsBlockDeviceConfig {
79218
79285
  constructor(props: {
79219
79286
  VolumeSpecification: InstanceGroupConfig_VolumeSpecification;
79220
- /** Use of this property can confuse CloudFormation drift detection. The EbsBlockDeviceConfigs read from the system may return a list with one entry per volume, replacing any entry specified in the template with a VolumesPerInstance greater than one by that many entries containing only the VolumeSpecification. Thus to avoid false drift detection, it is recommended to supply repeated entries in EbsBlockDeviceConfigs for any VolumeSpecification which is intended to be repeated and not to use this property.
79221
- */
79222
79287
  VolumesPerInstance?: number;
79223
79288
  });
79224
79289
  }
@@ -83004,6 +83069,15 @@ export declare class KinesisVideoStreamConfig {
83004
83069
  });
83005
83070
  }
83006
83071
 
83072
+ export declare class KmsConfiguration {
83073
+ constructor(props: {
83074
+ /** The type of KMS key (CustomerManagedKey or ServiceManagedKey). */
83075
+ KeyType: "CustomerManagedKey" | "ServiceManagedKey";
83076
+ /** The Amazon Resource Name (ARN) of the KMS key. */
83077
+ KmsKeyArn?: string;
83078
+ });
83079
+ }
83080
+
83007
83081
  export declare class KmsEncryptionConfig {
83008
83082
  constructor(props: {
83009
83083
  /** The type of customer-managed-key (CMK) used for encryption. The two types of supported CMKs are customer owned CMKs and AWS owned CMKs. */
@@ -85494,6 +85568,7 @@ export declare class ListenerRule_RuleCondition {
85494
85568
 
85495
85569
  export declare class ListenerRule_SourceIpConfig {
85496
85570
  constructor(props: {
85571
+ IpAddressType?: string;
85497
85572
  /** The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.
85498
85573
  If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header. */
85499
85574
  Values?: string[];
@@ -113484,6 +113559,7 @@ export declare class SourceDataSettings {
113484
113559
 
113485
113560
  export declare class SourceIpConfig {
113486
113561
  constructor(props: {
113562
+ IpAddressType?: string;
113487
113563
  /** The source IP addresses, in CIDR format. You can use both IPv4 and IPv6 addresses. Wildcards are not supported.
113488
113564
  If you specify multiple addresses, the condition is satisfied if the source IP address of the request matches one of the CIDR blocks. This condition is not satisfied by the addresses in the X-Forwarded-For header. */
113489
113565
  Values?: string[];
@@ -118196,6 +118272,15 @@ export declare class TokenValidityUnits {
118196
118272
  });
118197
118273
  }
118198
118274
 
118275
+ export declare class TokenVault_KmsConfiguration {
118276
+ constructor(props: {
118277
+ /** The type of KMS key (CustomerManagedKey or ServiceManagedKey). */
118278
+ KeyType: "CustomerManagedKey" | "ServiceManagedKey";
118279
+ /** The Amazon Resource Name (ARN) of the KMS key. */
118280
+ KmsKeyArn?: string;
118281
+ });
118282
+ }
118283
+
118199
118284
  export declare class ToolbarConfiguration {
118200
118285
  constructor(props: {
118201
118286
  HiddenToolbarItems?: UserSettings_ToolbarItem[];
@@ -121731,6 +121816,60 @@ export declare class Vpc_Tag {
121731
121816
  });
121732
121817
  }
121733
121818
 
121819
+ export declare class Vpc_VpcEncryptionControl {
121820
+ constructor(props: {
121821
+ /** The desired exclusion mode for Egress-Only Internet Gateways. */
121822
+ EgressOnlyInternetGatewayExclusion?: "disable" | "enable";
121823
+ /** The desired exclusion mode for Elastic File System. */
121824
+ ElasticFileSystemExclusion?: "disable" | "enable";
121825
+ /** The desired exclusion mode for Internet Gateways. */
121826
+ InternetGatewayExclusion?: "disable" | "enable";
121827
+ /** The desired exclusion mode for Lambda. */
121828
+ LambdaExclusion?: "disable" | "enable";
121829
+ /** The mode of the VPC encryption control. */
121830
+ Mode?: "enforce" | "monitor";
121831
+ /** The desired exclusion mode for NAT Gateways. */
121832
+ NatGatewayExclusion?: "disable" | "enable";
121833
+ ResourceExclusions?: Vpc_VpcEncryptionControlExclusions;
121834
+ /** The state of the VPC encryption control. */
121835
+ State?: string;
121836
+ /** A message describing the state of the VPC encryption control. */
121837
+ StateMessage?: string;
121838
+ /** The desired exclusion mode for Virtual Private Gateways. */
121839
+ VirtualPrivateGatewayExclusion?: "disable" | "enable";
121840
+ /** The ID of the VPC encryption control. */
121841
+ VpcEncryptionControlId?: string;
121842
+ /** The ID of the VPC. */
121843
+ VpcId?: string;
121844
+ /** The desired exclusion mode for VPC Lattice. */
121845
+ VpcLatticeExclusion?: "disable" | "enable";
121846
+ /** The desired exclusion mode for VPC Peering. */
121847
+ VpcPeeringExclusion?: "disable" | "enable";
121848
+ });
121849
+ }
121850
+
121851
+ export declare class Vpc_VpcEncryptionControlExclusion {
121852
+ constructor(props: {
121853
+ /** The exclusion state of the resource type. */
121854
+ State?: string;
121855
+ /** A message describing the exclusion state of the resource type. */
121856
+ StateMessage?: string;
121857
+ });
121858
+ }
121859
+
121860
+ export declare class Vpc_VpcEncryptionControlExclusions {
121861
+ constructor(props: {
121862
+ EgressOnlyInternetGateway?: Vpc_VpcEncryptionControlExclusion;
121863
+ ElasticFileSystem?: Vpc_VpcEncryptionControlExclusion;
121864
+ InternetGateway?: Vpc_VpcEncryptionControlExclusion;
121865
+ Lambda?: Vpc_VpcEncryptionControlExclusion;
121866
+ NatGateway?: Vpc_VpcEncryptionControlExclusion;
121867
+ VirtualPrivateGateway?: Vpc_VpcEncryptionControlExclusion;
121868
+ VpcLattice?: Vpc_VpcEncryptionControlExclusion;
121869
+ VpcPeering?: Vpc_VpcEncryptionControlExclusion;
121870
+ });
121871
+ }
121872
+
121734
121873
  export declare class VpcAttachment_ProposedNetworkFunctionGroupChange {
121735
121874
  constructor(props: {
121736
121875
  /** The rule number in the policy document that applies to this change. */
@@ -121859,6 +121998,38 @@ export declare class VpcEgressConfiguration {
121859
121998
  });
121860
121999
  }
121861
122000
 
122001
+ export declare class VpcEncryptionControl {
122002
+ constructor(props: {
122003
+ /** The desired exclusion mode for Egress-Only Internet Gateways. */
122004
+ EgressOnlyInternetGatewayExclusion?: "disable" | "enable";
122005
+ /** The desired exclusion mode for Elastic File System. */
122006
+ ElasticFileSystemExclusion?: "disable" | "enable";
122007
+ /** The desired exclusion mode for Internet Gateways. */
122008
+ InternetGatewayExclusion?: "disable" | "enable";
122009
+ /** The desired exclusion mode for Lambda. */
122010
+ LambdaExclusion?: "disable" | "enable";
122011
+ /** The mode of the VPC encryption control. */
122012
+ Mode?: "enforce" | "monitor";
122013
+ /** The desired exclusion mode for NAT Gateways. */
122014
+ NatGatewayExclusion?: "disable" | "enable";
122015
+ ResourceExclusions?: Vpc_VpcEncryptionControlExclusions;
122016
+ /** The state of the VPC encryption control. */
122017
+ State?: string;
122018
+ /** A message describing the state of the VPC encryption control. */
122019
+ StateMessage?: string;
122020
+ /** The desired exclusion mode for Virtual Private Gateways. */
122021
+ VirtualPrivateGatewayExclusion?: "disable" | "enable";
122022
+ /** The ID of the VPC encryption control. */
122023
+ VpcEncryptionControlId?: string;
122024
+ /** The ID of the VPC. */
122025
+ VpcId?: string;
122026
+ /** The desired exclusion mode for VPC Lattice. */
122027
+ VpcLatticeExclusion?: "disable" | "enable";
122028
+ /** The desired exclusion mode for VPC Peering. */
122029
+ VpcPeeringExclusion?: "disable" | "enable";
122030
+ });
122031
+ }
122032
+
121862
122033
  export declare class VPCEncryptionControl_ResourceExclusions {
121863
122034
  constructor(props: {
121864
122035
  EgressOnlyInternetGateway?: VPCEncryptionControl_VpcEncryptionControlExclusion;
@@ -121888,10 +122059,16 @@ export declare class VPCEncryptionControl_VpcEncryptionControlExclusion {
121888
122059
  });
121889
122060
  }
121890
122061
 
121891
- export declare class VpcEncryptionControlExclusion {
122062
+ export declare class VpcEncryptionControlExclusions {
121892
122063
  constructor(props: {
121893
- State?: string;
121894
- StateMessage?: string;
122064
+ EgressOnlyInternetGateway?: Vpc_VpcEncryptionControlExclusion;
122065
+ ElasticFileSystem?: Vpc_VpcEncryptionControlExclusion;
122066
+ InternetGateway?: Vpc_VpcEncryptionControlExclusion;
122067
+ Lambda?: Vpc_VpcEncryptionControlExclusion;
122068
+ NatGateway?: Vpc_VpcEncryptionControlExclusion;
122069
+ VirtualPrivateGateway?: Vpc_VpcEncryptionControlExclusion;
122070
+ VpcLattice?: Vpc_VpcEncryptionControlExclusion;
122071
+ VpcPeering?: Vpc_VpcEncryptionControlExclusion;
121895
122072
  });
121896
122073
  }
121897
122074
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-aws",
3
- "version": "0.18.23",
3
+ "version": "0.18.25",
4
4
  "description": "AWS CloudFormation lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -80,7 +80,7 @@
80
80
  "typescript": "^5.9.3"
81
81
  },
82
82
  "peerDependencies": {
83
- "@intentius/chant": "^0.18.23",
83
+ "@intentius/chant": "^0.18.25",
84
84
  "typescript": "^5.9.3"
85
85
  }
86
86
  }
@@ -15,13 +15,24 @@ const baseProps = {
15
15
  containerUri: "123456789012.dkr.ecr.us-east-1.amazonaws.com/support-agent:latest",
16
16
  };
17
17
 
18
+ // The endpoint is opt-in (#978) — it races the Runtime's async version-READY when
19
+ // created in the same apply. Tests that exercise the endpoint pass this variant.
20
+ const withEndpoint = { ...baseProps, provisionEndpoint: true };
21
+
18
22
  describe("AgentCoreAgent", () => {
19
- test("returns all 8 members", () => {
23
+ test("returns 7 members by default; the endpoint is opt-in (#978)", () => {
20
24
  const instance = AgentCoreAgent(baseProps);
21
25
  expect(Object.keys(instance.members)).toEqual([
22
- "role", "gatewayRole", "runtime", "endpoint", "memory",
26
+ "role", "gatewayRole", "runtime", "memory",
23
27
  "workloadIdentity", "gateway", "gatewayTarget",
24
28
  ]);
29
+ expect((instance as any).endpoint).toBeUndefined();
30
+ });
31
+
32
+ test("provisionEndpoint adds the endpoint as an 8th member", () => {
33
+ const instance = AgentCoreAgent(withEndpoint);
34
+ expect(Object.keys(instance.members)).toContain("endpoint");
35
+ expect(Object.keys(instance.members)).toHaveLength(8);
25
36
  });
26
37
 
27
38
  test("expandComposite produces correct logical names", () => {
@@ -29,12 +40,14 @@ describe("AgentCoreAgent", () => {
29
40
  expect(expanded.has("agentRole")).toBe(true);
30
41
  expect(expanded.has("agentGatewayRole")).toBe(true);
31
42
  expect(expanded.has("agentRuntime")).toBe(true);
32
- expect(expanded.has("agentEndpoint")).toBe(true);
43
+ expect(expanded.has("agentEndpoint")).toBe(false); // opt-in (#978)
33
44
  expect(expanded.has("agentMemory")).toBe(true);
34
45
  expect(expanded.has("agentWorkloadIdentity")).toBe(true);
35
46
  expect(expanded.has("agentGateway")).toBe(true);
36
47
  expect(expanded.has("agentGatewayTarget")).toBe(true);
37
- expect(expanded.size).toBe(8);
48
+ expect(expanded.size).toBe(7);
49
+ // With the endpoint opted in, it appears as agentEndpoint.
50
+ expect(expandComposite("agent", AgentCoreAgent(withEndpoint)).has("agentEndpoint")).toBe(true);
38
51
  });
39
52
 
40
53
  test("role and gatewayRole trust bedrock-agentcore.amazonaws.com", () => {
@@ -50,7 +63,7 @@ describe("AgentCoreAgent", () => {
50
63
  });
51
64
 
52
65
  test("kebab-case name is sanitized for Runtime/RuntimeEndpoint/Memory (no hyphens)", () => {
53
- const instance = AgentCoreAgent(baseProps);
66
+ const instance = AgentCoreAgent(withEndpoint);
54
67
  const runtimeProps = (instance.runtime as any).props;
55
68
  const endpointProps = (instance.endpoint as any).props;
56
69
  const memoryProps = (instance.memory as any).props;
@@ -182,8 +195,8 @@ describe("AgentCoreAgent", () => {
182
195
  );
183
196
  });
184
197
 
185
- test("RuntimeEndpoint references runtime.AgentRuntimeId", () => {
186
- const instance = AgentCoreAgent(baseProps);
198
+ test("RuntimeEndpoint references runtime.AgentRuntimeId (when opted in)", () => {
199
+ const instance = AgentCoreAgent(withEndpoint);
187
200
  const endpointProps = (instance.endpoint as any).props;
188
201
  expect(endpointProps.AgentRuntimeId).toBeInstanceOf(AttrRef);
189
202
  });
@@ -222,7 +235,7 @@ describe("AgentCoreAgent", () => {
222
235
 
223
236
  test("per-member defaults are applied (e.g. custom endpoint description)", () => {
224
237
  const instance = AgentCoreAgent({
225
- ...baseProps,
238
+ ...withEndpoint,
226
239
  defaults: { endpoint: { Description: "prod alias" } },
227
240
  });
228
241
  const endpointProps = (instance.endpoint as any).props;
@@ -230,7 +243,7 @@ describe("AgentCoreAgent", () => {
230
243
  });
231
244
 
232
245
  test("serializes to a valid CloudFormation template with the expected resource types", () => {
233
- const expanded = expandComposite("agent", AgentCoreAgent(baseProps));
246
+ const expanded = expandComposite("agent", AgentCoreAgent(withEndpoint));
234
247
  resolveAttrRefs(expanded);
235
248
  const output = awsSerializer.serialize(expanded);
236
249
  const template = JSON.parse(output);
@@ -96,6 +96,18 @@ export interface AgentCoreAgentProps {
96
96
  environmentVariables?: Record<string, string>;
97
97
  /** RuntimeEndpoint name — the alias a version-promotion capability would repoint (deferred, see #882). Default: "DEFAULT". */
98
98
  endpointName?: string;
99
+ /**
100
+ * Create the `RuntimeEndpoint` in this template. **Default: false.** A
101
+ * RuntimeEndpoint can only be created once the Runtime's agent *version* is
102
+ * READY, which is asynchronous and is NOT gated by the Runtime resource's own
103
+ * CloudFormation `CREATE_COMPLETE` — so creating the endpoint in the same apply
104
+ * as the Runtime races and fails on a real deploy ("Agent version 1 must be in
105
+ * READY status. Current status: CREATING", #978). Leave this off and create the
106
+ * endpoint out-of-band once the runtime is READY — which is what Bedrock
107
+ * AgentCore's own tooling (and Loom's app) does. Opt in only when you know the
108
+ * Runtime will already be READY (e.g. a version-promotion flow on an existing runtime).
109
+ */
110
+ provisionEndpoint?: boolean;
99
111
  /** Memory event retention, in days. CFN bounds: 3-365. Default: 30. */
100
112
  memoryEventExpiryDays?: number;
101
113
  /** Gateway authorizer. Mirrors the generated `BedrockAgentCoreGateway_AuthorizerType` CFN enum. Default: "AWS_IAM". */
@@ -122,7 +134,8 @@ export type AgentCoreAgentResult = {
122
134
  role: InstanceType<typeof Role>;
123
135
  gatewayRole: InstanceType<typeof Role>;
124
136
  runtime: InstanceType<typeof Runtime>;
125
- endpoint: InstanceType<typeof RuntimeEndpoint>;
137
+ /** Present only when `provisionEndpoint` is set — see that prop (#978). */
138
+ endpoint?: InstanceType<typeof RuntimeEndpoint>;
126
139
  memory: InstanceType<typeof Memory>;
127
140
  workloadIdentity: InstanceType<typeof WorkloadIdentity>;
128
141
  gateway: InstanceType<typeof BedrockAgentCoreGateway>;
@@ -228,10 +241,14 @@ export const AgentCoreAgent = Composite<AgentCoreAgentProps, AgentCoreAgentResul
228
241
  EnvironmentVariables: props.environmentVariables,
229
242
  }, defaults?.runtime));
230
243
 
231
- const endpoint = new RuntimeEndpoint(mergeDefaults({
232
- AgentRuntimeId: runtime.AgentRuntimeId,
233
- Name: toRuntimeIdentifier(props.endpointName ?? "DEFAULT"),
234
- }, defaults?.endpoint));
244
+ // Opt-in only (#978): the endpoint races the Runtime's async version-READY when
245
+ // created in the same apply. Off by default; create it out-of-band post-READY.
246
+ const endpoint = props.provisionEndpoint
247
+ ? new RuntimeEndpoint(mergeDefaults({
248
+ AgentRuntimeId: runtime.AgentRuntimeId,
249
+ Name: toRuntimeIdentifier(props.endpointName ?? "DEFAULT"),
250
+ }, defaults?.endpoint))
251
+ : undefined;
235
252
 
236
253
  const memory = new Memory(mergeDefaults({
237
254
  Name: `${runtimeName}Memory`.slice(0, 48),
@@ -264,5 +281,5 @@ export const AgentCoreAgent = Composite<AgentCoreAgentProps, AgentCoreAgentResul
264
281
  },
265
282
  }, defaults?.gatewayTarget));
266
283
 
267
- return { role, gatewayRole, runtime, endpoint, memory, workloadIdentity, gateway, gatewayTarget };
284
+ return { role, gatewayRole, runtime, ...(endpoint ? { endpoint } : {}), memory, workloadIdentity, gateway, gatewayTarget };
268
285
  }, "AgentCoreAgent");