@aws-cdk/aws-bedrock-agentcore-alpha 2.228.0-alpha.0 → 2.229.1-alpha.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.
Files changed (92) hide show
  1. package/.jsii +1385 -1080
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +15 -1
  4. package/README.md +119 -15
  5. package/lib/gateway/gateway-base.js +171 -0
  6. package/{agentcore → lib}/gateway/gateway.js +4 -4
  7. package/{agentcore → lib}/gateway/inbound-auth/authorizer.js +3 -3
  8. package/lib/gateway/outbound-auth/api-key.js +141 -0
  9. package/{agentcore → lib}/gateway/outbound-auth/credential-provider.js +1 -1
  10. package/lib/gateway/outbound-auth/oauth.js +76 -0
  11. package/lib/gateway/perms.d.ts +73 -0
  12. package/lib/gateway/perms.js +109 -0
  13. package/{agentcore → lib}/gateway/protocol.js +2 -2
  14. package/{agentcore → lib}/gateway/targets/schema/api-schema.js +4 -4
  15. package/{agentcore → lib}/gateway/targets/schema/tool-schema.js +4 -4
  16. package/{agentcore → lib}/gateway/targets/target-base.js +1 -1
  17. package/{agentcore → lib}/gateway/targets/target-configuration.js +5 -5
  18. package/lib/gateway/targets/target.js +444 -0
  19. package/lib/index.d.ts +30 -1
  20. package/lib/index.js +55 -6
  21. package/{agentcore → lib}/memory/memory-strategy.js +1 -1
  22. package/{agentcore → lib}/memory/memory.js +2 -2
  23. package/{agentcore → lib}/memory/strategies/managed-strategy.js +1 -1
  24. package/{agentcore → lib}/memory/strategies/self-managed-strategy.js +1 -1
  25. package/{agentcore → lib}/network/network-configuration.js +4 -4
  26. package/{agentcore → lib}/runtime/runtime-artifact.d.ts +30 -0
  27. package/lib/runtime/runtime-artifact.js +174 -0
  28. package/{agentcore → lib}/runtime/runtime-authorizer-configuration.js +1 -1
  29. package/{agentcore → lib}/runtime/runtime-base.js +1 -1
  30. package/{agentcore → lib}/runtime/runtime-endpoint-base.js +1 -1
  31. package/{agentcore → lib}/runtime/runtime-endpoint.js +1 -1
  32. package/{agentcore → lib}/runtime/runtime.d.ts +32 -1
  33. package/lib/runtime/runtime.js +694 -0
  34. package/lib/runtime/types.d.ts +50 -0
  35. package/lib/runtime/types.js +25 -0
  36. package/{agentcore → lib}/tools/browser.d.ts +37 -0
  37. package/lib/tools/browser.js +680 -0
  38. package/{agentcore → lib}/tools/code-interpreter.js +2 -2
  39. package/package.json +10 -10
  40. package/agentcore/gateway/gateway-base.js +0 -171
  41. package/agentcore/gateway/outbound-auth/api-key.js +0 -141
  42. package/agentcore/gateway/outbound-auth/oauth.js +0 -76
  43. package/agentcore/gateway/perms.d.ts +0 -75
  44. package/agentcore/gateway/perms.js +0 -112
  45. package/agentcore/gateway/targets/target.js +0 -444
  46. package/agentcore/index.d.ts +0 -30
  47. package/agentcore/index.js +0 -71
  48. package/agentcore/runtime/runtime-artifact.js +0 -90
  49. package/agentcore/runtime/runtime.js +0 -589
  50. package/agentcore/runtime/types.d.ts +0 -20
  51. package/agentcore/runtime/types.js +0 -25
  52. package/agentcore/tools/browser.js +0 -641
  53. /package/{agentcore → lib}/gateway/gateway-base.d.ts +0 -0
  54. /package/{agentcore → lib}/gateway/gateway.d.ts +0 -0
  55. /package/{agentcore → lib}/gateway/inbound-auth/authorizer.d.ts +0 -0
  56. /package/{agentcore → lib}/gateway/outbound-auth/api-key.d.ts +0 -0
  57. /package/{agentcore → lib}/gateway/outbound-auth/credential-provider.d.ts +0 -0
  58. /package/{agentcore → lib}/gateway/outbound-auth/iam-role.d.ts +0 -0
  59. /package/{agentcore → lib}/gateway/outbound-auth/iam-role.js +0 -0
  60. /package/{agentcore → lib}/gateway/outbound-auth/oauth.d.ts +0 -0
  61. /package/{agentcore → lib}/gateway/protocol.d.ts +0 -0
  62. /package/{agentcore → lib}/gateway/targets/schema/api-schema.d.ts +0 -0
  63. /package/{agentcore → lib}/gateway/targets/schema/base-schema.d.ts +0 -0
  64. /package/{agentcore → lib}/gateway/targets/schema/base-schema.js +0 -0
  65. /package/{agentcore → lib}/gateway/targets/schema/tool-schema.d.ts +0 -0
  66. /package/{agentcore → lib}/gateway/targets/target-base.d.ts +0 -0
  67. /package/{agentcore → lib}/gateway/targets/target-configuration.d.ts +0 -0
  68. /package/{agentcore → lib}/gateway/targets/target.d.ts +0 -0
  69. /package/{agentcore → lib}/gateway/validation-helpers.d.ts +0 -0
  70. /package/{agentcore → lib}/gateway/validation-helpers.js +0 -0
  71. /package/{agentcore → lib}/memory/memory-strategy.d.ts +0 -0
  72. /package/{agentcore → lib}/memory/memory.d.ts +0 -0
  73. /package/{agentcore → lib}/memory/perms.d.ts +0 -0
  74. /package/{agentcore → lib}/memory/perms.js +0 -0
  75. /package/{agentcore → lib}/memory/strategies/managed-strategy.d.ts +0 -0
  76. /package/{agentcore → lib}/memory/strategies/self-managed-strategy.d.ts +0 -0
  77. /package/{agentcore → lib}/memory/validation-helpers.d.ts +0 -0
  78. /package/{agentcore → lib}/memory/validation-helpers.js +0 -0
  79. /package/{agentcore → lib}/network/network-configuration.d.ts +0 -0
  80. /package/{agentcore → lib}/runtime/perms.d.ts +0 -0
  81. /package/{agentcore → lib}/runtime/perms.js +0 -0
  82. /package/{agentcore → lib}/runtime/runtime-authorizer-configuration.d.ts +0 -0
  83. /package/{agentcore → lib}/runtime/runtime-base.d.ts +0 -0
  84. /package/{agentcore → lib}/runtime/runtime-endpoint-base.d.ts +0 -0
  85. /package/{agentcore → lib}/runtime/runtime-endpoint.d.ts +0 -0
  86. /package/{agentcore → lib}/runtime/validation-helpers.d.ts +0 -0
  87. /package/{agentcore → lib}/runtime/validation-helpers.js +0 -0
  88. /package/{agentcore → lib}/tools/code-interpreter.d.ts +0 -0
  89. /package/{agentcore → lib}/tools/perms.d.ts +0 -0
  90. /package/{agentcore → lib}/tools/perms.js +0 -0
  91. /package/{agentcore → lib}/tools/validation-helpers.d.ts +0 -0
  92. /package/{agentcore → lib}/tools/validation-helpers.js +0 -0
@@ -25,7 +25,7 @@ const PROMPT_MAX_LENGTH = 30000;
25
25
  * with specific models and prompt templates.
26
26
  */
27
27
  class ManagedMemoryStrategy {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.228.0-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.229.1-alpha.0" };
29
29
  name;
30
30
  description;
31
31
  /**
@@ -74,7 +74,7 @@ const DEFAULT_TOKEN_BASED_TRIGGER = 100;
74
74
  * Use AgentCore memory for event storage with custom triggers. Define memory processing logic in your own environment.
75
75
  */
76
76
  class SelfManagedMemoryStrategy {
77
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.228.0-alpha.0" };
77
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.SelfManagedMemoryStrategy", version: "2.229.1-alpha.0" };
78
78
  name;
79
79
  description;
80
80
  strategyType;
@@ -9,7 +9,7 @@ const ec2 = require("aws-cdk-lib/aws-ec2");
9
9
  * Abstract base class for network configuration.
10
10
  */
11
11
  class NetworkConfiguration {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.228.0-alpha.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.NetworkConfiguration", version: "2.229.1-alpha.0" };
13
13
  /**
14
14
  * The network mode to use.
15
15
  * Configure the security level for agent
@@ -88,7 +88,7 @@ exports.NetworkConfiguration = NetworkConfiguration;
88
88
  * Network configuration for the Browser tool.
89
89
  */
90
90
  class BrowserNetworkConfiguration extends NetworkConfiguration {
91
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.228.0-alpha.0" };
91
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.BrowserNetworkConfiguration", version: "2.229.1-alpha.0" };
92
92
  /**
93
93
  * Creates a public network configuration. PUBLIC is the default network mode.
94
94
  * @returns A BrowserNetworkConfiguration.
@@ -134,7 +134,7 @@ exports.BrowserNetworkConfiguration = BrowserNetworkConfiguration;
134
134
  * Network configuration for the Code Interpreter tool.
135
135
  */
136
136
  class CodeInterpreterNetworkConfiguration extends NetworkConfiguration {
137
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.228.0-alpha.0" };
137
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.CodeInterpreterNetworkConfiguration", version: "2.229.1-alpha.0" };
138
138
  /**
139
139
  * Creates a public network configuration.
140
140
  * @returns A CodeInterpreterNetworkConfiguration.
@@ -188,7 +188,7 @@ exports.CodeInterpreterNetworkConfiguration = CodeInterpreterNetworkConfiguratio
188
188
  * Network configuration for the Runtime.
189
189
  */
190
190
  class RuntimeNetworkConfiguration extends NetworkConfiguration {
191
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.228.0-alpha.0" };
191
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeNetworkConfiguration", version: "2.229.1-alpha.0" };
192
192
  /**
193
193
  * Creates a public network configuration. PUBLIC is the default network mode.
194
194
  * @returns A RuntimeNetworkConfiguration.
@@ -15,6 +15,29 @@ import * as assets from 'aws-cdk-lib/aws-ecr-assets';
15
15
  import { CfnRuntime } from 'aws-cdk-lib/aws-bedrockagentcore';
16
16
  import { Construct } from 'constructs';
17
17
  import { Runtime } from './runtime';
18
+ import { Location } from 'aws-cdk-lib/aws-s3';
19
+ /**
20
+ * Bedrock AgentCore runtime environment for code execution
21
+ * Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13
22
+ */
23
+ export declare enum AgentCoreRuntime {
24
+ /**
25
+ * Python 3.10 runtime
26
+ */
27
+ PYTHON_3_10 = "PYTHON_3_10",
28
+ /**
29
+ * Python 3.11 runtime
30
+ */
31
+ PYTHON_3_11 = "PYTHON_3_11",
32
+ /**
33
+ * Python 3.12 runtime
34
+ */
35
+ PYTHON_3_12 = "PYTHON_3_12",
36
+ /**
37
+ * Python 3.13 runtime
38
+ */
39
+ PYTHON_3_13 = "PYTHON_3_13"
40
+ }
18
41
  /**
19
42
  * Abstract base class for agent runtime artifacts.
20
43
  * Provides methods to reference container images from ECR repositories or local assets.
@@ -30,6 +53,13 @@ export declare abstract class AgentRuntimeArtifact {
30
53
  * @param options The options to further configure the selected image
31
54
  */
32
55
  static fromAsset(directory: string, options?: assets.DockerImageAssetOptions): AgentRuntimeArtifact;
56
+ /**
57
+ * Reference an agent runtime artifact that's constructed directly from an S3 object
58
+ * @param s3Location The source code location and configuration details.
59
+ * @param runtime The runtime environment for executing the code. Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13
60
+ * @param entrypoint The entry point for the code execution, specifying the function or method that should be invoked when the code runs.
61
+ */
62
+ static fromS3(s3Location: Location, runtime: AgentCoreRuntime, entrypoint: string[]): AgentRuntimeArtifact;
33
63
  /**
34
64
  * Called when the image is used by a Runtime to handle side effects like permissions
35
65
  */
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentRuntimeArtifact = exports.AgentCoreRuntime = void 0;
4
+ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const assets = require("aws-cdk-lib/aws-ecr-assets");
7
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
8
+ const validation_helpers_1 = require("./validation-helpers");
9
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
10
+ const s3 = require("aws-cdk-lib/aws-s3");
11
+ /**
12
+ * Bedrock AgentCore runtime environment for code execution
13
+ * Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13
14
+ */
15
+ var AgentCoreRuntime;
16
+ (function (AgentCoreRuntime) {
17
+ /**
18
+ * Python 3.10 runtime
19
+ */
20
+ AgentCoreRuntime["PYTHON_3_10"] = "PYTHON_3_10";
21
+ /**
22
+ * Python 3.11 runtime
23
+ */
24
+ AgentCoreRuntime["PYTHON_3_11"] = "PYTHON_3_11";
25
+ /**
26
+ * Python 3.12 runtime
27
+ */
28
+ AgentCoreRuntime["PYTHON_3_12"] = "PYTHON_3_12";
29
+ /**
30
+ * Python 3.13 runtime
31
+ */
32
+ AgentCoreRuntime["PYTHON_3_13"] = "PYTHON_3_13";
33
+ })(AgentCoreRuntime || (exports.AgentCoreRuntime = AgentCoreRuntime = {}));
34
+ /**
35
+ * Abstract base class for agent runtime artifacts.
36
+ * Provides methods to reference container images from ECR repositories or local assets.
37
+ */
38
+ class AgentRuntimeArtifact {
39
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AgentRuntimeArtifact", version: "2.229.1-alpha.0" };
40
+ /**
41
+ * Reference an image in an ECR repository
42
+ */
43
+ static fromEcrRepository(repository, tag = 'latest') {
44
+ return new EcrImage(repository, tag);
45
+ }
46
+ /**
47
+ * Reference an agent runtime artifact that's constructed directly from sources on disk
48
+ * @param directory The directory where the Dockerfile is stored
49
+ * @param options The options to further configure the selected image
50
+ */
51
+ static fromAsset(directory, options = {}) {
52
+ return new AssetImage(directory, options);
53
+ }
54
+ /**
55
+ * Reference an agent runtime artifact that's constructed directly from an S3 object
56
+ * @param s3Location The source code location and configuration details.
57
+ * @param runtime The runtime environment for executing the code. Allowed values: PYTHON_3_10 | PYTHON_3_11 | PYTHON_3_12 | PYTHON_3_13
58
+ * @param entrypoint The entry point for the code execution, specifying the function or method that should be invoked when the code runs.
59
+ */
60
+ static fromS3(s3Location, runtime, entrypoint) {
61
+ try {
62
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_AgentCoreRuntime(runtime);
63
+ }
64
+ catch (error) {
65
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
66
+ Error.captureStackTrace(error, this.fromS3);
67
+ }
68
+ throw error;
69
+ }
70
+ return new S3Image(s3Location, runtime, entrypoint);
71
+ }
72
+ }
73
+ exports.AgentRuntimeArtifact = AgentRuntimeArtifact;
74
+ class EcrImage extends AgentRuntimeArtifact {
75
+ repository;
76
+ tag;
77
+ bound = false;
78
+ constructor(repository, tag) {
79
+ super();
80
+ this.repository = repository;
81
+ this.tag = tag;
82
+ }
83
+ bind(_scope, runtime) {
84
+ // Handle permissions (only once)
85
+ if (!this.bound && runtime.role) {
86
+ this.repository.grantPull(runtime.role);
87
+ this.bound = true;
88
+ }
89
+ }
90
+ _render() {
91
+ // Return container configuration directly as expected by the runtime
92
+ // The runtime wraps this in containerConfiguration
93
+ return {
94
+ containerUri: this.repository.repositoryUriForTag(this.tag),
95
+ };
96
+ }
97
+ }
98
+ class AssetImage extends AgentRuntimeArtifact {
99
+ directory;
100
+ options;
101
+ asset;
102
+ bound = false;
103
+ constructor(directory, options = {}) {
104
+ super();
105
+ this.directory = directory;
106
+ this.options = options;
107
+ }
108
+ bind(scope, runtime) {
109
+ // Create the asset if not already created
110
+ if (!this.asset) {
111
+ const hash = (0, helpers_internal_1.md5hash)(this.directory);
112
+ this.asset = new assets.DockerImageAsset(scope, `AgentRuntimeArtifact${hash}`, {
113
+ directory: this.directory,
114
+ ...this.options,
115
+ });
116
+ }
117
+ // Grant permissions (only once)
118
+ if (!this.bound) {
119
+ this.asset.repository.grantPull(runtime.role);
120
+ this.bound = true;
121
+ }
122
+ }
123
+ _render() {
124
+ if (!this.asset) {
125
+ throw new validation_helpers_1.ValidationError('Asset not initialized. Call bind() before _render()');
126
+ }
127
+ // Return container configuration directly as expected by the runtime
128
+ // The runtime wraps this in containerConfiguration
129
+ return {
130
+ containerUri: this.asset.imageUri,
131
+ };
132
+ }
133
+ }
134
+ class S3Image extends AgentRuntimeArtifact {
135
+ s3Location;
136
+ runtime;
137
+ entrypoint;
138
+ bound = false;
139
+ constructor(s3Location, runtime, entrypoint) {
140
+ super();
141
+ this.s3Location = s3Location;
142
+ this.runtime = runtime;
143
+ this.entrypoint = entrypoint;
144
+ }
145
+ bind(scope, runtime) {
146
+ // Handle permissions (only once)
147
+ if (!this.bound && runtime.role) {
148
+ if (!aws_cdk_lib_1.Token.isUnresolved(this.s3Location.bucketName)) {
149
+ aws_cdk_lib_1.Stack.of(scope).resolve(this.s3Location.bucketName);
150
+ }
151
+ const bucket = s3.Bucket.fromBucketName(scope, `${this.s3Location.bucketName}CodeArchive`, this.s3Location.bucketName);
152
+ // Ensure the policy is applied before the browser resource is created
153
+ bucket.grantRead(runtime.role);
154
+ this.bound = true;
155
+ }
156
+ }
157
+ _render() {
158
+ const s3Config = {
159
+ bucket: this.s3Location.bucketName,
160
+ prefix: this.s3Location.objectKey,
161
+ };
162
+ if (this.s3Location.objectVersion) {
163
+ s3Config.versionId = this.s3Location.objectVersion;
164
+ }
165
+ return {
166
+ code: {
167
+ s3: s3Config,
168
+ },
169
+ runtime: this.runtime,
170
+ entryPoint: this.entrypoint,
171
+ };
172
+ }
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxxREFBcUQ7QUFFckQsNEVBQWdFO0FBR2hFLDZEQUF1RDtBQUV2RCw2Q0FBMkM7QUFDM0MseUNBQXlDO0FBRXpDOzs7R0FHRztBQUNILElBQVksZ0JBaUJYO0FBakJELFdBQVksZ0JBQWdCO0lBQzFCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7SUFDM0I7O09BRUc7SUFDSCwrQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILCtDQUEyQixDQUFBO0lBQzNCOztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQWpCVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQWlCM0I7QUFFRDs7O0dBR0c7QUFDSCxNQUFzQixvQkFBb0I7O0lBQ3hDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLFVBQTJCLEVBQUUsTUFBYyxRQUFRO1FBQ2pGLE9BQU8sSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxVQUEwQyxFQUFFO1FBQ3JGLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzNDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQW9CLEVBQUUsT0FBeUIsRUFBRSxVQUFvQjs7Ozs7Ozs7OztRQUN4RixPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDckQ7O0FBekJILG9EQXFDQztBQUVELE1BQU0sUUFBUyxTQUFRLG9CQUFvQjtJQUdaO0lBQThDO0lBRm5FLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFdEIsWUFBNkIsVUFBMkIsRUFB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VSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDckMsS0FBSyxFQUNMLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLGFBQWEsRUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQzNCLENBQUM7WUFDRixzRUFBc0U7WUFDdEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztLQUNGO0lBRU0sT0FBTztRQUNaLE1BQU0sUUFBUSxHQUFRO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7WUFDbEMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztTQUNsQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU87WUFDTCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLFFBQVE7YUFDYjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDckIsQ0FBQztLQUNWO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHMnO1xuaW1wb3J0IHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IG1kNWhhc2ggfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUnVudGltZSB9IGZyb20gJy4vcnVudGltZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuXG4vKipcbiAqIEJlZHJvY2sgQWdlbnRDb3JlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIGNvZGUgZXhlY3V0aW9uXG4gKiBBbGxvd2VkIHZhbHVlczogUFlUSE9OXzNfMTAgfCBQWVRIT05fM18xMSB8IFBZVEhPTl8zXzEyIHwgUFlUSE9OXzNfMTNcbiAqL1xuZXhwb3J0IGVudW0gQWdlbnRDb3JlUnVudGltZSB7XG4gIC8qKlxuICAgKiBQeXRob24gMy4xMCBydW50aW1lXG4gICAqL1xuICBQWVRIT05fM18xMCA9ICdQWVRIT05fM18xMCcsXG4gIC8qKlxuICAgKiBQeXRob24gMy4xMSBydW50aW1lXG4gICAqL1xuICBQWVRIT05fM18xMSA9ICdQWVRIT05fM18xMScsXG4gIC8qKlxuICAgKiBQeXRob24gMy4xMiBydW50aW1lXG4gICAqL1xuICBQWVRIT05fM18xMiA9ICdQWVRIT05fM18xMicsXG4gIC8qKlxuICAgKiBQeXRob24gMy4xMyBydW50aW1lXG4gICAqL1xuICBQWVRIT05fM18xMyA9ICdQWVRIT05fM18xMycsXG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdHMuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHJlZmVyZW5jZSBjb250YWluZXIgaW1hZ2VzIGZyb20gRUNSIHJlcG9zaXRvcmllcyBvciBsb2NhbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gaW1hZ2UgaW4gYW4gRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgRWNySW1hZ2UocmVwb3NpdG9yeSwgdGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBzb3VyY2VzIG9uIGRpc2tcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBmdXJ0aGVyIGNvbmZpZ3VyZSB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgPSB7fSk6IEFnZW50UnVudGltZUFydGlmYWN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0SW1hZ2UoZGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBhbiBTMyBvYmplY3RcbiAgICogQHBhcmFtIHMzTG9jYXRpb24gVGhlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMuXG4gICAqIEBwYXJhbSBydW50aW1lIFRoZSBydW50aW1lIGVudmlyb25tZW50IGZvciBleGVjdXRpbmcgdGhlIGNvZGUuIEFsbG93ZWQgdmFsdWVzOiBQWVRIT05fM18xMCB8IFBZVEhPTl8zXzExIHwgUFlUSE9OXzNfMTIgfCBQWVRIT05fM18xM1xuICAgKiBAcGFyYW0gZW50cnlwb2ludCBUaGUgZW50cnkgcG9pbnQgZm9yIHRoZSBjb2RlIGV4ZWN1dGlvbiwgc3BlY2lmeWluZyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgY29kZSBydW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoczNMb2NhdGlvbjogTG9jYXRpb24sIHJ1bnRpbWU6IEFnZW50Q29yZVJ1bnRpbWUsIGVudHJ5cG9pbnQ6IHN0cmluZ1tdKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgUzNJbWFnZShzM0xvY2F0aW9uLCBydW50aW1lLCBlbnRyeXBvaW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgaW1hZ2UgaXMgdXNlZCBieSBhIFJ1bnRpbWUgdG8gaGFuZGxlIHNpZGUgZWZmZWN0cyBsaWtlIHBlcm1pc3Npb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChzY29wZTogQ29uc3RydWN0LCBydW50aW1lOiBSdW50aW1lKTogdm9pZDtcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBhcnRpZmFjdCBjb25maWd1cmF0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eTtcbn1cblxuY2xhc3MgRWNySW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeSwgcHJpdmF0ZSByZWFkb25seSB0YWc6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgLy8gUmV0dXJuIGNvbnRhaW5lciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGFzIGV4cGVjdGVkIGJ5IHRoZSBydW50aW1lXG4gICAgLy8gVGhlIHJ1bnRpbWUgd3JhcHMgdGhpcyBpbiBjb250YWluZXJDb25maWd1cmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lclVyaTogdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmlGb3JUYWcodGhpcy50YWcpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIEFzc2V0SW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldDtcbiAgcHJpdmF0ZSBib3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogYXNzZXRzLkRvY2tlckltYWdlQXNzZXRPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSB0aGUgYXNzZXQgaWYgbm90IGFscmVhZHkgY3JlYXRlZFxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgY29uc3QgaGFzaCA9IG1kNWhhc2godGhpcy5kaXJlY3RvcnkpO1xuICAgICAgdGhpcy5hc3NldCA9IG5ldyBhc3NldHMuRG9ja2VySW1hZ2VBc3NldChzY29wZSwgYEFnZW50UnVudGltZUFydGlmYWN0JHtoYXNofWAsIHtcbiAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQpIHtcbiAgICAgIHRoaXMuYXNzZXQucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBc3NldCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmluZCgpIGJlZm9yZSBfcmVuZGVyKCknKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gY29udGFpbmVyIGNvbmZpZ3VyYXRpb24gZGlyZWN0bHkgYXMgZXhwZWN0ZWQgYnkgdGhlIHJ1bnRpbWVcbiAgICAvLyBUaGUgcnVudGltZSB3cmFwcyB0aGlzIGluIGNvbnRhaW5lckNvbmZpZ3VyYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyVXJpOiB0aGlzLmFzc2V0LmltYWdlVXJpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIFMzSW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHMzTG9jYXRpb246IExvY2F0aW9uLCBwcml2YXRlIHJlYWRvbmx5IHJ1bnRpbWU6IEFnZW50Q29yZVJ1bnRpbWUsIHByaXZhdGUgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMuczNMb2NhdGlvbi5idWNrZXROYW1lKSkge1xuICAgICAgICBTdGFjay5vZihzY29wZSkucmVzb2x2ZSh0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBidWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBgJHt0aGlzLnMzTG9jYXRpb24uYnVja2V0TmFtZX1Db2RlQXJjaGl2ZWAsXG4gICAgICAgIHRoaXMuczNMb2NhdGlvbi5idWNrZXROYW1lLFxuICAgICAgKTtcbiAgICAgIC8vIEVuc3VyZSB0aGUgcG9saWN5IGlzIGFwcGxpZWQgYmVmb3JlIHRoZSBicm93c2VyIHJlc291cmNlIGlzIGNyZWF0ZWRcbiAgICAgIGJ1Y2tldC5ncmFudFJlYWQocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgY29uc3QgczNDb25maWc6IGFueSA9IHtcbiAgICAgIGJ1Y2tldDogdGhpcy5zM0xvY2F0aW9uLmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IHRoaXMuczNMb2NhdGlvbi5vYmplY3RLZXksXG4gICAgfTtcbiAgICBpZiAodGhpcy5zM0xvY2F0aW9uLm9iamVjdFZlcnNpb24pIHtcbiAgICAgIHMzQ29uZmlnLnZlcnNpb25JZCA9IHRoaXMuczNMb2NhdGlvbi5vYmplY3RWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29kZToge1xuICAgICAgICBzMzogczNDb25maWcsXG4gICAgICB9LFxuICAgICAgcnVudGltZTogdGhpcy5ydW50aW1lLFxuICAgICAgZW50cnlQb2ludDogdGhpcy5lbnRyeXBvaW50LFxuICAgIH0gYXMgYW55O1xuICB9XG59XG4iXX0=
@@ -9,7 +9,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
9
9
  * Provides static factory methods to create different authentication types.
10
10
  */
11
11
  class RuntimeAuthorizerConfiguration {
12
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeAuthorizerConfiguration", version: "2.228.0-alpha.0" };
12
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeAuthorizerConfiguration", version: "2.229.1-alpha.0" };
13
13
  /**
14
14
  * Use IAM authentication (default).
15
15
  * Requires AWS credentials to sign requests using SigV4.
@@ -26,7 +26,7 @@ const validation_helpers_1 = require("./validation-helpers");
26
26
  * Base class for Agent Runtime
27
27
  */
28
28
  class RuntimeBase extends aws_cdk_lib_1.Resource {
29
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeBase", version: "2.228.0-alpha.0" };
29
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeBase", version: "2.229.1-alpha.0" };
30
30
  /**
31
31
  * An accessor for the Connections object that will fail if this Runtime does not have a VPC
32
32
  * configured.
@@ -22,7 +22,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
22
22
  * Base class for Runtime Endpoint
23
23
  */
24
24
  class RuntimeEndpointBase extends aws_cdk_lib_1.Resource {
25
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpointBase", version: "2.228.0-alpha.0" };
25
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpointBase", version: "2.229.1-alpha.0" };
26
26
  constructor(scope, id) {
27
27
  super(scope, id);
28
28
  }
@@ -67,7 +67,7 @@ let RuntimeEndpoint = (() => {
67
67
  RuntimeEndpoint = _classThis = _classDescriptor.value;
68
68
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
69
  }
70
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.228.0-alpha.0" };
70
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeEndpoint", version: "2.229.1-alpha.0" };
71
71
  /** Uniquely identifies this class. */
72
72
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.RuntimeEndpoint';
73
73
  /**
@@ -5,7 +5,7 @@ import { RuntimeAuthorizerConfiguration } from './runtime-authorizer-configurati
5
5
  import { RuntimeBase, IBedrockAgentRuntime, AgentRuntimeAttributes } from './runtime-base';
6
6
  import { RuntimeEndpoint } from './runtime-endpoint';
7
7
  import { RuntimeNetworkConfiguration } from '../network/network-configuration';
8
- import { ProtocolType } from './types';
8
+ import { LifecycleConfiguration, ProtocolType, RequestHeaderConfiguration } from './types';
9
9
  /******************************************************************************
10
10
  * Props
11
11
  *****************************************************************************/
@@ -71,6 +71,16 @@ export interface RuntimeProps {
71
71
  readonly tags?: {
72
72
  [key: string]: string;
73
73
  };
74
+ /**
75
+ * Configuration for HTTP request headers that will be passed through to the runtime.
76
+ * @default - No request headers configured
77
+ */
78
+ readonly requestHeaderConfiguration?: RequestHeaderConfiguration;
79
+ /**
80
+ * The life cycle configuration for the AgentCore Runtime.
81
+ * @default - No lifecycle configuration
82
+ */
83
+ readonly lifecycleConfiguration?: LifecycleConfiguration;
74
84
  }
75
85
  /**
76
86
  * Options for adding an endpoint to the runtime
@@ -167,6 +177,7 @@ export declare class Runtime extends RuntimeBase {
167
177
  private readonly networkConfiguration;
168
178
  private readonly protocolConfiguration;
169
179
  private readonly authorizerConfiguration?;
180
+ private readonly lifecycleConfiguration?;
170
181
  constructor(scope: Construct, id: string, props: RuntimeProps);
171
182
  /**
172
183
  * Renders the environment variables for CloudFormation
@@ -183,6 +194,26 @@ export declare class Runtime extends RuntimeBase {
183
194
  * @internal
184
195
  */
185
196
  private renderAgentRuntimeArtifact;
197
+ /**
198
+ * Renders the request header configuration for CloudFormation
199
+ * @internal
200
+ */
201
+ private renderRequestHeaderConfiguration;
202
+ /**
203
+ * Renders the lifecycle configuration for CloudFormation
204
+ * @internal
205
+ */
206
+ private renderLifecycleConfiguration;
207
+ /**
208
+ * Validates the request header configuration
209
+ * @throws Error if validation fails
210
+ */
211
+ private validateRequestHeaderConfiguration;
212
+ /**
213
+ * Validates the lifecycle configuration
214
+ * @throws Error if validation fails
215
+ */
216
+ private validateLifecycleConfiguration;
186
217
  /**
187
218
  * Validates the runtime name format
188
219
  * Pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,47}$