@aws-cdk/aws-bedrock-agentcore-alpha 2.250.0-alpha.0 → 2.252.0-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 (56) hide show
  1. package/.jsii +11883 -7285
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +4 -0
  4. package/README.md +405 -0
  5. package/lib/gateway/gateway-base.js +1 -1
  6. package/lib/gateway/gateway.d.ts +58 -0
  7. package/lib/gateway/gateway.js +46 -3
  8. package/lib/gateway/inbound-auth/authorizer.d.ts +27 -1
  9. package/lib/gateway/inbound-auth/authorizer.js +37 -5
  10. package/lib/gateway/inbound-auth/custom-claim.js +1 -1
  11. package/lib/gateway/interceptor.js +1 -1
  12. package/lib/gateway/outbound-auth/api-key.js +1 -1
  13. package/lib/gateway/outbound-auth/credential-provider.js +1 -1
  14. package/lib/gateway/protocol.js +2 -2
  15. package/lib/gateway/targets/schema/api-schema.js +4 -4
  16. package/lib/gateway/targets/schema/tool-schema.js +4 -4
  17. package/lib/gateway/targets/target-base.js +1 -1
  18. package/lib/gateway/targets/target-configuration.js +6 -6
  19. package/lib/gateway/targets/target.js +1 -1
  20. package/lib/index.d.ts +8 -0
  21. package/lib/index.js +13 -1
  22. package/lib/memory/memory-strategy.js +1 -1
  23. package/lib/memory/memory.js +2 -2
  24. package/lib/memory/strategies/managed-strategy.js +1 -1
  25. package/lib/memory/strategies/self-managed-strategy.js +1 -1
  26. package/lib/network/network-configuration.js +4 -4
  27. package/lib/policy/perms.d.ts +50 -0
  28. package/lib/policy/perms.js +62 -0
  29. package/lib/policy/policy-base.d.ts +194 -0
  30. package/lib/policy/policy-base.js +120 -0
  31. package/lib/policy/policy-engine-base.d.ts +260 -0
  32. package/lib/policy/policy-engine-base.js +193 -0
  33. package/lib/policy/policy-engine.d.ts +150 -0
  34. package/lib/policy/policy-engine.js +290 -0
  35. package/lib/policy/policy-statement.d.ts +518 -0
  36. package/lib/policy/policy-statement.js +927 -0
  37. package/lib/policy/policy-types.d.ts +66 -0
  38. package/lib/policy/policy-types.js +30 -0
  39. package/lib/policy/policy.d.ts +127 -0
  40. package/lib/policy/policy.js +225 -0
  41. package/lib/policy/validation-helpers.d.ts +139 -0
  42. package/lib/policy/validation-helpers.js +276 -0
  43. package/lib/runtime/inbound-auth/custom-claim.js +1 -1
  44. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +1 -1
  45. package/lib/runtime/observability.d.ts +105 -0
  46. package/lib/runtime/observability.js +317 -0
  47. package/lib/runtime/runtime-artifact.js +1 -1
  48. package/lib/runtime/runtime-base.js +1 -1
  49. package/lib/runtime/runtime-endpoint-base.js +1 -1
  50. package/lib/runtime/runtime-endpoint.js +1 -1
  51. package/lib/runtime/runtime.d.ts +17 -0
  52. package/lib/runtime/runtime.js +10 -2
  53. package/lib/tools/browser.js +2 -2
  54. package/lib/tools/code-interpreter.js +2 -2
  55. package/package.json +9 -9
  56. package/rosetta/default.ts-fixture +2 -0
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TAG_VALUE_PATTERN = exports.TAG_KEY_PATTERN = exports.TAG_VALUE_MAX_LENGTH = exports.TAG_KEY_MAX_LENGTH = exports.TAG_KEY_MIN_LENGTH = exports.MAX_TAGS = exports.DESCRIPTION_MAX_LENGTH = exports.POLICY_DEFINITION_MAX_LENGTH = exports.POLICY_DEFINITION_MIN_LENGTH = exports.POLICY_NAME_PATTERN = exports.POLICY_NAME_MAX_LENGTH = exports.POLICY_NAME_MIN_LENGTH = exports.POLICY_ENGINE_NAME_PATTERN = exports.POLICY_ENGINE_NAME_MAX_LENGTH = exports.POLICY_ENGINE_NAME_MIN_LENGTH = void 0;
4
+ exports.validatePolicyEngineName = validatePolicyEngineName;
5
+ exports.validatePolicyName = validatePolicyName;
6
+ exports.validatePolicyDefinition = validatePolicyDefinition;
7
+ exports.validateDescription = validateDescription;
8
+ exports.throwIfInvalidPolicyEngineName = throwIfInvalidPolicyEngineName;
9
+ exports.throwIfInvalidPolicyName = throwIfInvalidPolicyName;
10
+ exports.throwIfInvalidPolicyDefinition = throwIfInvalidPolicyDefinition;
11
+ exports.throwIfInvalidDescription = throwIfInvalidDescription;
12
+ exports.validateTags = validateTags;
13
+ exports.throwIfInvalidTags = throwIfInvalidTags;
14
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
+ const validation_helpers_1 = require("../memory/validation-helpers");
16
+ /**
17
+ * Validation constants for PolicyEngine
18
+ */
19
+ exports.POLICY_ENGINE_NAME_MIN_LENGTH = 1;
20
+ exports.POLICY_ENGINE_NAME_MAX_LENGTH = 48;
21
+ exports.POLICY_ENGINE_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*$/;
22
+ /**
23
+ * Validation constants for Policy
24
+ */
25
+ exports.POLICY_NAME_MIN_LENGTH = 1;
26
+ exports.POLICY_NAME_MAX_LENGTH = 48;
27
+ exports.POLICY_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_]*$/;
28
+ /**
29
+ * Validation constants for Cedar policy definitions
30
+ */
31
+ exports.POLICY_DEFINITION_MIN_LENGTH = 35;
32
+ exports.POLICY_DEFINITION_MAX_LENGTH = 153600;
33
+ /**
34
+ * Validation constants for descriptions
35
+ */
36
+ exports.DESCRIPTION_MAX_LENGTH = 4096;
37
+ /**
38
+ * Validation constants for tags
39
+ */
40
+ exports.MAX_TAGS = 50;
41
+ exports.TAG_KEY_MIN_LENGTH = 1;
42
+ exports.TAG_KEY_MAX_LENGTH = 128;
43
+ exports.TAG_VALUE_MAX_LENGTH = 256;
44
+ exports.TAG_KEY_PATTERN = /^[a-zA-Z0-9\s._:/=+@-]+$/;
45
+ exports.TAG_VALUE_PATTERN = /^[a-zA-Z0-9\s._:/=+@-]*$/;
46
+ /**
47
+ * Validates a policy engine name.
48
+ * Names must:
49
+ * - Start with a letter (a-z, A-Z)
50
+ * - Contain only letters, numbers, and underscores
51
+ * - Be between 1 and 48 characters
52
+ *
53
+ * @param name - The policy engine name to validate
54
+ * @param scope - The construct scope for error reporting (optional)
55
+ * @returns Array of validation error messages, empty if valid
56
+ */
57
+ function validatePolicyEngineName(name, scope) {
58
+ const errors = [];
59
+ // Handle null/undefined values
60
+ if (name == null) {
61
+ return errors;
62
+ }
63
+ // Skip validation for unresolved tokens (e.g. Lazy.string(), cross-stack refs)
64
+ if (aws_cdk_lib_1.Token.isUnresolved(name)) {
65
+ return errors;
66
+ }
67
+ // Validate length
68
+ errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
69
+ value: name,
70
+ fieldName: 'policyEngineName',
71
+ minLength: exports.POLICY_ENGINE_NAME_MIN_LENGTH,
72
+ maxLength: exports.POLICY_ENGINE_NAME_MAX_LENGTH,
73
+ }, scope));
74
+ // Validate pattern
75
+ errors.push(...(0, validation_helpers_1.validateFieldPattern)(name, 'policyEngineName', exports.POLICY_ENGINE_NAME_PATTERN, `The policy engine name "${name}" must start with a letter and contain only letters, numbers, and underscores`, scope));
76
+ return errors;
77
+ }
78
+ /**
79
+ * Validates a policy name.
80
+ * Names must:
81
+ * - Start with a letter (a-z, A-Z)
82
+ * - Contain only letters, numbers, and underscores
83
+ * - Be between 1 and 48 characters
84
+ *
85
+ * @param name - The policy name to validate
86
+ * @param scope - The construct scope for error reporting (optional)
87
+ * @returns Array of validation error messages, empty if valid
88
+ */
89
+ function validatePolicyName(name, scope) {
90
+ const errors = [];
91
+ // Handle null/undefined values
92
+ if (name == null) {
93
+ return errors;
94
+ }
95
+ // Skip validation for unresolved tokens (e.g. Lazy.string(), cross-stack refs)
96
+ if (aws_cdk_lib_1.Token.isUnresolved(name)) {
97
+ return errors;
98
+ }
99
+ // Validate length
100
+ errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
101
+ value: name,
102
+ fieldName: 'policyName',
103
+ minLength: exports.POLICY_NAME_MIN_LENGTH,
104
+ maxLength: exports.POLICY_NAME_MAX_LENGTH,
105
+ }, scope));
106
+ // Validate pattern
107
+ errors.push(...(0, validation_helpers_1.validateFieldPattern)(name, 'policyName', exports.POLICY_NAME_PATTERN, `The policy name "${name}" must start with a letter and contain only letters, numbers, and underscores`, scope));
108
+ return errors;
109
+ }
110
+ /**
111
+ * Validates a Cedar policy definition string.
112
+ * Definitions must be between 35 and 153,600 characters.
113
+ *
114
+ * @param definition - The Cedar policy definition to validate
115
+ * @param scope - The construct scope for error reporting (optional)
116
+ * @returns Array of validation error messages, empty if valid
117
+ */
118
+ function validatePolicyDefinition(definition, scope) {
119
+ const errors = [];
120
+ // Handle null/undefined values
121
+ if (definition == null) {
122
+ errors.push('Policy definition is required and cannot be null or undefined');
123
+ return errors;
124
+ }
125
+ // Skip validation for unresolved tokens (e.g. Lazy.string(), cross-stack refs)
126
+ if (aws_cdk_lib_1.Token.isUnresolved(definition)) {
127
+ return errors;
128
+ }
129
+ // Validate length
130
+ errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
131
+ value: definition,
132
+ fieldName: 'definition',
133
+ minLength: exports.POLICY_DEFINITION_MIN_LENGTH,
134
+ maxLength: exports.POLICY_DEFINITION_MAX_LENGTH,
135
+ }, scope));
136
+ return errors;
137
+ }
138
+ /**
139
+ * Validates a description string.
140
+ * Descriptions must not exceed 4,096 characters.
141
+ *
142
+ * @param description - The description to validate
143
+ * @param scope - The construct scope for error reporting (optional)
144
+ * @returns Array of validation error messages, empty if valid
145
+ */
146
+ function validateDescription(description, scope) {
147
+ const errors = [];
148
+ // Handle null/undefined values
149
+ if (description == null) {
150
+ return errors;
151
+ }
152
+ // Skip validation for unresolved tokens (e.g. Lazy.string(), cross-stack refs)
153
+ if (aws_cdk_lib_1.Token.isUnresolved(description)) {
154
+ return errors;
155
+ }
156
+ // Validate length (no minimum length requirement)
157
+ errors.push(...(0, validation_helpers_1.validateStringFieldLength)({
158
+ value: description,
159
+ fieldName: 'description',
160
+ minLength: 0,
161
+ maxLength: exports.DESCRIPTION_MAX_LENGTH,
162
+ }, scope));
163
+ return errors;
164
+ }
165
+ /**
166
+ * Validates a policy engine name and throws if invalid.
167
+ *
168
+ * @param name - The policy engine name to validate
169
+ * @param scope - The construct scope for error reporting (optional)
170
+ * @returns The validated name
171
+ * @throws ValidationError if validation fails
172
+ */
173
+ function throwIfInvalidPolicyEngineName(name, scope) {
174
+ return (0, validation_helpers_1.throwIfInvalid)(validatePolicyEngineName, name, scope);
175
+ }
176
+ /**
177
+ * Validates a policy name and throws if invalid.
178
+ *
179
+ * @param name - The policy name to validate
180
+ * @param scope - The construct scope for error reporting (optional)
181
+ * @returns The validated name
182
+ * @throws ValidationError if validation fails
183
+ */
184
+ function throwIfInvalidPolicyName(name, scope) {
185
+ return (0, validation_helpers_1.throwIfInvalid)(validatePolicyName, name, scope);
186
+ }
187
+ /**
188
+ * Validates a policy definition and throws if invalid.
189
+ *
190
+ * @param definition - The Cedar policy definition to validate
191
+ * @param scope - The construct scope for error reporting (optional)
192
+ * @returns The validated definition
193
+ * @throws ValidationError if validation fails
194
+ */
195
+ function throwIfInvalidPolicyDefinition(definition, scope) {
196
+ return (0, validation_helpers_1.throwIfInvalid)(validatePolicyDefinition, definition, scope);
197
+ }
198
+ /**
199
+ * Validates a description and throws if invalid.
200
+ *
201
+ * @param description - The description to validate
202
+ * @param scope - The construct scope for error reporting (optional)
203
+ * @returns The validated description
204
+ * @throws ValidationError if validation fails
205
+ */
206
+ function throwIfInvalidDescription(description, scope) {
207
+ return (0, validation_helpers_1.throwIfInvalid)(validateDescription, description, scope);
208
+ }
209
+ /**
210
+ * Validates tags for a PolicyEngine.
211
+ * Tags must:
212
+ * - Not exceed 50 tags
213
+ * - Have keys between 1 and 128 characters
214
+ * - Have values between 0 and 256 characters
215
+ * - Match allowed character patterns
216
+ *
217
+ * @param tags - The tags object to validate
218
+ * @param resourceName - The name of the resource being tagged (for error messages)
219
+ * @param scope - The construct scope for error reporting (optional)
220
+ * @returns Array of validation error messages, empty if valid
221
+ */
222
+ function validateTags(tags, resourceName, _scope) {
223
+ const errors = [];
224
+ // Handle null/undefined values
225
+ if (tags == null) {
226
+ return errors;
227
+ }
228
+ // Validate tag count
229
+ const tagCount = Object.keys(tags).length;
230
+ if (tagCount > exports.MAX_TAGS) {
231
+ errors.push(`PolicyEngine '${resourceName}' cannot have more than ${exports.MAX_TAGS} tags. Found: ${tagCount}`);
232
+ }
233
+ // Validate each tag
234
+ for (const [key, value] of Object.entries(tags)) {
235
+ // Skip validation for unresolved token keys
236
+ if (!aws_cdk_lib_1.Token.isUnresolved(key)) {
237
+ // Validate key length
238
+ if (key.length < exports.TAG_KEY_MIN_LENGTH || key.length > exports.TAG_KEY_MAX_LENGTH) {
239
+ errors.push(`PolicyEngine '${resourceName}' tag key length must be between ${exports.TAG_KEY_MIN_LENGTH} and ${exports.TAG_KEY_MAX_LENGTH} characters. ` +
240
+ `Key: "${key}" has length ${key.length}`);
241
+ }
242
+ // Validate key pattern
243
+ if (!exports.TAG_KEY_PATTERN.test(key)) {
244
+ errors.push(`PolicyEngine '${resourceName}' tag key contains invalid characters. ` +
245
+ `Key: "${key}". Valid characters: a-zA-Z0-9 and ._:/=+@-`);
246
+ }
247
+ }
248
+ // Skip validation for unresolved token values
249
+ if (!aws_cdk_lib_1.Token.isUnresolved(value)) {
250
+ // Validate value length
251
+ if (value.length > exports.TAG_VALUE_MAX_LENGTH) {
252
+ errors.push(`PolicyEngine '${resourceName}' tag value length cannot exceed ${exports.TAG_VALUE_MAX_LENGTH} characters. ` +
253
+ `Key: "${key}", value has length ${value.length}`);
254
+ }
255
+ // Validate value pattern
256
+ if (!exports.TAG_VALUE_PATTERN.test(value)) {
257
+ errors.push(`PolicyEngine '${resourceName}' tag value contains invalid characters. ` +
258
+ `Key: "${key}", Value: "${value}". Valid characters: a-zA-Z0-9 and ._:/=+@-`);
259
+ }
260
+ }
261
+ }
262
+ return errors;
263
+ }
264
+ /**
265
+ * Validates tags and throws if invalid.
266
+ *
267
+ * @param tags - The tags object to validate
268
+ * @param resourceName - The name of the resource being tagged (for error messages)
269
+ * @param scope - The construct scope for error reporting (optional)
270
+ * @returns The validated tags
271
+ * @throws ValidationError if validation fails
272
+ */
273
+ function throwIfInvalidTags(tags, resourceName, scope) {
274
+ return (0, validation_helpers_1.throwIfInvalid)((t, s) => validateTags(t, resourceName, s), tags, scope);
275
+ }
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdGlvbi1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVEQSw0REFzQ0M7QUFhRCxnREFzQ0M7QUFVRCw0REE0QkM7QUFVRCxrREEyQkM7QUFVRCx3RUFFQztBQVVELDREQUVDO0FBVUQsd0VBRUM7QUFVRCw4REFFQztBQWVELG9DQThEQztBQVdELGdEQVVDO0FBN1dELDZDQUFvQztBQUVwQyxxRUFLc0M7QUFFdEM7O0dBRUc7QUFDVSxRQUFBLDZCQUE2QixHQUFHLENBQUMsQ0FBQztBQUNsQyxRQUFBLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztBQUNuQyxRQUFBLDBCQUEwQixHQUFHLHlCQUF5QixDQUFDO0FBRXBFOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7QUFDM0IsUUFBQSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBQSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztBQUU3RDs7R0FFRztBQUNVLFFBQUEsNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLFFBQUEsNEJBQTRCLEdBQUcsTUFBTSxDQUFDO0FBRW5EOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFFM0M7O0dBRUc7QUFDVSxRQUFBLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDZCxRQUFBLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUN2QixRQUFBLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUN6QixRQUFBLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUMzQixRQUFBLGVBQWUsR0FBRywwQkFBMEIsQ0FBQztBQUM3QyxRQUFBLGlCQUFpQixHQUFHLDBCQUEwQixDQUFDO0FBRTVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxJQUFZLEVBQUUsS0FBa0I7SUFDdkUsTUFBTSxNQUFNLEdBQWEsRUFB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LENBQUM7UUFDSCxDQUFDO1FBRUQsOENBQThDO1FBQzlDLElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLHdCQUF3QjtZQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsNEJBQW9CLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLElBQUksQ0FDVCxpQkFBaUIsWUFBWSxvQ0FBb0MsNEJBQW9CLGVBQWU7b0JBQ2xHLFNBQVMsR0FBRyx1QkFBdUIsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUNwRCxDQUFDO1lBQ0osQ0FBQztZQUVELHlCQUF5QjtZQUN6QixJQUFJLENBQUMseUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQ1QsaUJBQWlCLFlBQVksMkNBQTJDO29CQUN0RSxTQUFTLEdBQUcsY0FBYyxLQUFLLDZDQUE2QyxDQUMvRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLElBQStCLEVBQy9CLFlBQW9CLEVBQ3BCLEtBQWtCO0lBRWxCLE9BQU8sSUFBQSxtQ0FBYyxFQUNuQixDQUFDLENBQTRCLEVBQUUsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsRUFDbEYsSUFBSSxFQUNKLEtBQUssQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQge1xuICB2YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoLFxuICB2YWxpZGF0ZUZpZWxkUGF0dGVybixcbiAgdGhyb3dJZkludmFsaWQsXG4gIHR5cGUgVmFsaWRhdGlvbkZuLFxufSBmcm9tICcuLi9tZW1vcnkvdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqXG4gKiBWYWxpZGF0aW9uIGNvbnN0YW50cyBmb3IgUG9saWN5RW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBQT0xJQ1lfRU5HSU5FX05BTUVfTUlOX0xFTkdUSCA9IDE7XG5leHBvcnQgY29uc3QgUE9MSUNZX0VOR0lORV9OQU1FX01BWF9MRU5HVEggPSA0ODtcbmV4cG9ydCBjb25zdCBQT0xJQ1lfRU5HSU5FX05BTUVfUEFUVEVSTiA9IC9eW0EtWmEtel1bQS1aYS16MC05X10qJC87XG5cbi8qKlxuICogVmFsaWRhdGlvbiBjb25zdGFudHMgZm9yIFBvbGljeVxuICovXG5leHBvcnQgY29uc3QgUE9MSUNZX05BTUVfTUlOX0xFTkdUSCA9IDE7XG5leHBvcnQgY29uc3QgUE9MSUNZX05BTUVfTUFYX0xFTkdUSCA9IDQ4O1xuZXhwb3J0IGNvbnN0IFBPTElDWV9OQU1FX1BBVFRFUk4gPSAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gY29uc3RhbnRzIGZvciBDZWRhciBwb2xpY3kgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9ERUZJTklUSU9OX01JTl9MRU5HVEggPSAzNTtcbmV4cG9ydCBjb25zdCBQT0xJQ1lfREVGSU5JVElPTl9NQVhfTEVOR1RIID0gMTUzNjAwO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gY29uc3RhbnRzIGZvciBkZXNjcmlwdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IERFU0NSSVBUSU9OX01BWF9MRU5HVEggPSA0MDk2O1xuXG4vKipcbiAqIFZhbGlkYXRpb24gY29uc3RhbnRzIGZvciB0YWdzXG4gKi9cbmV4cG9ydCBjb25zdCBNQVhfVEFHUyA9IDUwO1xuZXhwb3J0IGNvbnN0IFRBR19LRVlfTUlOX0xFTkdUSCA9IDE7XG5leHBvcnQgY29uc3QgVEFHX0tFWV9NQVhfTEVOR1RIID0gMTI4O1xuZXhwb3J0IGNvbnN0IFRBR19WQUxVRV9NQVhfTEVOR1RIID0gMjU2O1xuZXhwb3J0IGNvbnN0IFRBR19LRVlfUEFUVEVSTiA9IC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSskLztcbmV4cG9ydCBjb25zdCBUQUdfVkFMVUVfUEFUVEVSTiA9IC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBwb2xpY3kgZW5naW5lIG5hbWUuXG4gKiBOYW1lcyBtdXN0OlxuICogLSBTdGFydCB3aXRoIGEgbGV0dGVyIChhLXosIEEtWilcbiAqIC0gQ29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3Jlc1xuICogLSBCZSBiZXR3ZWVuIDEgYW5kIDQ4IGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBwb2xpY3kgZW5naW5lIG5hbWUgdG8gdmFsaWRhdGVcbiAqIEBwYXJhbSBzY29wZSAtIFRoZSBjb25zdHJ1Y3Qgc2NvcGUgZm9yIGVycm9yIHJlcG9ydGluZyAob3B0aW9uYWwpXG4gKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQb2xpY3lFbmdpbmVOYW1lKG5hbWU6IHN0cmluZywgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICBpZiAobmFtZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIFNraXAgdmFsaWRhdGlvbiBmb3IgdW5yZXNvbHZlZCB0b2tlbnMgKGUuZy4gTGF6eS5zdHJpbmcoKSwgY3Jvc3Mtc3RhY2sgcmVmcylcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChuYW1lKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBsZW5ndGhcbiAgZXJyb3JzLnB1c2goXG4gICAgLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aChcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICAgIGZpZWxkTmFtZTogJ3BvbGljeUVuZ2luZU5hbWUnLFxuICAgICAgICBtaW5MZW5ndGg6IFBPTElDWV9FTkdJTkVfTkFNRV9NSU5fTEVOR1RILFxuICAgICAgICBtYXhMZW5ndGg6IFBPTElDWV9FTkdJTkVfTkFNRV9NQVhfTEVOR1RILFxuICAgICAgfSxcbiAgICAgIHNjb3BlLFxuICAgICksXG4gICk7XG5cbiAgLy8gVmFsaWRhdGUgcGF0dGVyblxuICBlcnJvcnMucHVzaChcbiAgICAuLi52YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIG5hbWUsXG4gICAgICAncG9saWN5RW5naW5lTmFtZScsXG4gICAgICBQT0xJQ1lfRU5HSU5FX05BTUVfUEFUVEVSTixcbiAgICAgIGBUaGUgcG9saWN5IGVuZ2luZSBuYW1lIFwiJHtuYW1lfVwiIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3Jlc2AsXG4gICAgICBzY29wZSxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgcG9saWN5IG5hbWUuXG4gKiBOYW1lcyBtdXN0OlxuICogLSBTdGFydCB3aXRoIGEgbGV0dGVyIChhLXosIEEtWilcbiAqIC0gQ29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGFuZCB1bmRlcnNjb3Jlc1xuICogLSBCZSBiZXR3ZWVuIDEgYW5kIDQ4IGNoYXJhY3RlcnNcbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBwb2xpY3kgbmFtZSB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZSBmb3IgZXJyb3IgcmVwb3J0aW5nIChvcHRpb25hbClcbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBvbGljeU5hbWUobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBIYW5kbGUgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gIGlmIChuYW1lID09IG51bGwpIHtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciB1bnJlc29sdmVkIHRva2VucyAoZS5nLiBMYXp5LnN0cmluZygpLCBjcm9zcy1zdGFjayByZWZzKVxuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKG5hbWUpKSB7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGxlbmd0aFxuICBlcnJvcnMucHVzaChcbiAgICAuLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKFxuICAgICAge1xuICAgICAgICB2YWx1ZTogbmFtZSxcbiAgICAgICAgZmllbGROYW1lOiAncG9saWN5TmFtZScsXG4gICAgICAgIG1pbkxlbmd0aDogUE9MSUNZX05BTUVfTUlOX0xFTkdUSCxcbiAgICAgICAgbWF4TGVuZ3RoOiBQT0xJQ1lfTkFNRV9NQVhfTEVOR1RILFxuICAgICAgfSxcbiAgICAgIHNjb3BlLFxuICAgICksXG4gICk7XG5cbiAgLy8gVmFsaWRhdGUgcGF0dGVyblxuICBlcnJvcnMucHVzaChcbiAgICAuLi52YWxpZGF0ZUZpZWxkUGF0dGVybihcbiAgICAgIG5hbWUsXG4gICAgICAncG9saWN5TmFtZScsXG4gICAgICBQT0xJQ1lfTkFNRV9QQVRURVJOLFxuICAgICAgYFRoZSBwb2xpY3kgbmFtZSBcIiR7bmFtZX1cIiBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgYW5kIGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgdW5kZXJzY29yZXNgLFxuICAgICAgc2NvcGUsXG4gICAgKSxcbiAgKTtcblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIENlZGFyIHBvbGljeSBkZWZpbml0aW9uIHN0cmluZy5cbiAqIERlZmluaXRpb25zIG11c3QgYmUgYmV0d2VlbiAzNSBhbmQgMTUzLDYwMCBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBkZWZpbml0aW9uIC0gVGhlIENlZGFyIHBvbGljeSBkZWZpbml0aW9uIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIGZvciBlcnJvciByZXBvcnRpbmcgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUG9saWN5RGVmaW5pdGlvbihkZWZpbml0aW9uOiBzdHJpbmcsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIEhhbmRsZSBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgaWYgKGRlZmluaXRpb24gPT0gbnVsbCkge1xuICAgIGVycm9ycy5wdXNoKCdQb2xpY3kgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBhbmQgY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIFNraXAgdmFsaWRhdGlvbiBmb3IgdW5yZXNvbHZlZCB0b2tlbnMgKGUuZy4gTGF6eS5zdHJpbmcoKSwgY3Jvc3Mtc3RhY2sgcmVmcylcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChkZWZpbml0aW9uKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBsZW5ndGhcbiAgZXJyb3JzLnB1c2goXG4gICAgLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aChcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGRlZmluaXRpb24sXG4gICAgICAgIGZpZWxkTmFtZTogJ2RlZmluaXRpb24nLFxuICAgICAgICBtaW5MZW5ndGg6IFBPTElDWV9ERUZJTklUSU9OX01JTl9MRU5HVEgsXG4gICAgICAgIG1heExlbmd0aDogUE9MSUNZX0RFRklOSVRJT05fTUFYX0xFTkdUSCxcbiAgICAgIH0sXG4gICAgICBzY29wZSxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgZGVzY3JpcHRpb24gc3RyaW5nLlxuICogRGVzY3JpcHRpb25zIG11c3Qgbm90IGV4Y2VlZCA0LDA5NiBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBkZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZSBmb3IgZXJyb3IgcmVwb3J0aW5nIChvcHRpb25hbClcbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIEhhbmRsZSBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgaWYgKGRlc2NyaXB0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciB1bnJlc29sdmVkIHRva2VucyAoZS5nLiBMYXp5LnN0cmluZygpLCBjcm9zcy1zdGFjayByZWZzKVxuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGRlc2NyaXB0aW9uKSkge1xuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBsZW5ndGggKG5vIG1pbmltdW0gbGVuZ3RoIHJlcXVpcmVtZW50KVxuICBlcnJvcnMucHVzaChcbiAgICAuLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKFxuICAgICAge1xuICAgICAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgICAgIGZpZWxkTmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgbWluTGVuZ3RoOiAwLFxuICAgICAgICBtYXhMZW5ndGg6IERFU0NSSVBUSU9OX01BWF9MRU5HVEgsXG4gICAgICB9LFxuICAgICAgc2NvcGUsXG4gICAgKSxcbiAgKTtcblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIHBvbGljeSBlbmdpbmUgbmFtZSBhbmQgdGhyb3dzIGlmIGludmFsaWQuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgcG9saWN5IGVuZ2luZSBuYW1lIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIGZvciBlcnJvciByZXBvcnRpbmcgKG9wdGlvbmFsKVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBuYW1lXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0lmSW52YWxpZFBvbGljeUVuZ2luZU5hbWUobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICByZXR1cm4gdGhyb3dJZkludmFsaWQodmFsaWRhdGVQb2xpY3lFbmdpbmVOYW1lIGFzIFZhbGlkYXRpb25GbjxzdHJpbmc+LCBuYW1lLCBzY29wZSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgcG9saWN5IG5hbWUgYW5kIHRocm93cyBpZiBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gVGhlIHBvbGljeSBuYW1lIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIGZvciBlcnJvciByZXBvcnRpbmcgKG9wdGlvbmFsKVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBuYW1lXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0lmSW52YWxpZFBvbGljeU5hbWUobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICByZXR1cm4gdGhyb3dJZkludmFsaWQodmFsaWRhdGVQb2xpY3lOYW1lIGFzIFZhbGlkYXRpb25GbjxzdHJpbmc+LCBuYW1lLCBzY29wZSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgcG9saWN5IGRlZmluaXRpb24gYW5kIHRocm93cyBpZiBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSBkZWZpbml0aW9uIC0gVGhlIENlZGFyIHBvbGljeSBkZWZpbml0aW9uIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlIGZvciBlcnJvciByZXBvcnRpbmcgKG9wdGlvbmFsKVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBkZWZpbml0aW9uXG4gKiBAdGhyb3dzIFZhbGlkYXRpb25FcnJvciBpZiB2YWxpZGF0aW9uIGZhaWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0lmSW52YWxpZFBvbGljeURlZmluaXRpb24oZGVmaW5pdGlvbjogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICByZXR1cm4gdGhyb3dJZkludmFsaWQodmFsaWRhdGVQb2xpY3lEZWZpbml0aW9uIGFzIFZhbGlkYXRpb25GbjxzdHJpbmc+LCBkZWZpbml0aW9uLCBzY29wZSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgZGVzY3JpcHRpb24gYW5kIHRocm93cyBpZiBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSBkZXNjcmlwdGlvbiAtIFRoZSBkZXNjcmlwdGlvbiB0byB2YWxpZGF0ZVxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZSBmb3IgZXJyb3IgcmVwb3J0aW5nIChvcHRpb25hbClcbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgZGVzY3JpcHRpb25cbiAqIEB0aHJvd3MgVmFsaWRhdGlvbkVycm9yIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZJbnZhbGlkRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZywgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nIHtcbiAgcmV0dXJuIHRocm93SWZJbnZhbGlkKHZhbGlkYXRlRGVzY3JpcHRpb24gYXMgVmFsaWRhdGlvbkZuPHN0cmluZz4sIGRlc2NyaXB0aW9uLCBzY29wZSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRhZ3MgZm9yIGEgUG9saWN5RW5naW5lLlxuICogVGFncyBtdXN0OlxuICogLSBOb3QgZXhjZWVkIDUwIHRhZ3NcbiAqIC0gSGF2ZSBrZXlzIGJldHdlZW4gMSBhbmQgMTI4IGNoYXJhY3RlcnNcbiAqIC0gSGF2ZSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAyNTYgY2hhcmFjdGVyc1xuICogLSBNYXRjaCBhbGxvd2VkIGNoYXJhY3RlciBwYXR0ZXJuc1xuICpcbiAqIEBwYXJhbSB0YWdzIC0gVGhlIHRhZ3Mgb2JqZWN0IHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gcmVzb3VyY2VOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGJlaW5nIHRhZ2dlZCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZSBmb3IgZXJyb3IgcmVwb3J0aW5nIChvcHRpb25hbClcbiAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhZ3MoXG4gIHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gIHJlc291cmNlTmFtZTogc3RyaW5nLFxuICBfc2NvcGU/OiBJQ29uc3RydWN0LFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICBpZiAodGFncyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRhZyBjb3VudFxuICBjb25zdCB0YWdDb3VudCA9IE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aDtcbiAgaWYgKHRhZ0NvdW50ID4gTUFYX1RBR1MpIHtcbiAgICBlcnJvcnMucHVzaChcbiAgICAgIGBQb2xpY3lFbmdpbmUgJyR7cmVzb3VyY2VOYW1lfScgY2Fubm90IGhhdmUgbW9yZSB0aGFuICR7TUFYX1RBR1N9IHRhZ3MuIEZvdW5kOiAke3RhZ0NvdW50fWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGVhY2ggdGFnXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciB1bnJlc29sdmVkIHRva2VuIGtleXNcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChrZXkpKSB7XG4gICAgICAvLyBWYWxpZGF0ZSBrZXkgbGVuZ3RoXG4gICAgICBpZiAoa2V5Lmxlbmd0aCA8IFRBR19LRVlfTUlOX0xFTkdUSCB8fCBrZXkubGVuZ3RoID4gVEFHX0tFWV9NQVhfTEVOR1RIKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIGBQb2xpY3lFbmdpbmUgJyR7cmVzb3VyY2VOYW1lfScgdGFnIGtleSBsZW5ndGggbXVzdCBiZSBiZXR3ZWVuICR7VEFHX0tFWV9NSU5fTEVOR1RIfSBhbmQgJHtUQUdfS0VZX01BWF9MRU5HVEh9IGNoYXJhY3RlcnMuIGAgK1xuICAgICAgICAgICAgYEtleTogXCIke2tleX1cIiBoYXMgbGVuZ3RoICR7a2V5Lmxlbmd0aH1gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBrZXkgcGF0dGVyblxuICAgICAgaWYgKCFUQUdfS0VZX1BBVFRFUk4udGVzdChrZXkpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIGBQb2xpY3lFbmdpbmUgJyR7cmVzb3VyY2VOYW1lfScgdGFnIGtleSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMuIGAgK1xuICAgICAgICAgICAgYEtleTogXCIke2tleX1cIi4gVmFsaWQgY2hhcmFjdGVyczogYS16QS1aMC05IGFuZCAuXzovPStALWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciB1bnJlc29sdmVkIHRva2VuIHZhbHVlc1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgICAgLy8gVmFsaWRhdGUgdmFsdWUgbGVuZ3RoXG4gICAgICBpZiAodmFsdWUubGVuZ3RoID4gVEFHX1ZBTFVFX01BWF9MRU5HVEgpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgYFBvbGljeUVuZ2luZSAnJHtyZXNvdXJjZU5hbWV9JyB0YWcgdmFsdWUgbGVuZ3RoIGNhbm5vdCBleGNlZWQgJHtUQUdfVkFMVUVfTUFYX0xFTkdUSH0gY2hhcmFjdGVycy4gYCArXG4gICAgICAgICAgICBgS2V5OiBcIiR7a2V5fVwiLCB2YWx1ZSBoYXMgbGVuZ3RoICR7dmFsdWUubGVuZ3RofWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHZhbHVlIHBhdHRlcm5cbiAgICAgIGlmICghVEFHX1ZBTFVFX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgYFBvbGljeUVuZ2luZSAnJHtyZXNvdXJjZU5hbWV9JyB0YWcgdmFsdWUgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLiBgICtcbiAgICAgICAgICAgIGBLZXk6IFwiJHtrZXl9XCIsIFZhbHVlOiBcIiR7dmFsdWV9XCIuIFZhbGlkIGNoYXJhY3RlcnM6IGEtekEtWjAtOSBhbmQgLl86Lz0rQC1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRhZ3MgYW5kIHRocm93cyBpZiBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSB0YWdzIC0gVGhlIHRhZ3Mgb2JqZWN0IHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gcmVzb3VyY2VOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGJlaW5nIHRhZ2dlZCAoZm9yIGVycm9yIG1lc3NhZ2VzKVxuICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZSBmb3IgZXJyb3IgcmVwb3J0aW5nIChvcHRpb25hbClcbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgdGFnc1xuICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dJZkludmFsaWRUYWdzKFxuICB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICByZXNvdXJjZU5hbWU6IHN0cmluZyxcbiAgc2NvcGU/OiBJQ29uc3RydWN0LFxuKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gIHJldHVybiB0aHJvd0lmSW52YWxpZChcbiAgICAodDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgcz86IElDb25zdHJ1Y3QpID0+IHZhbGlkYXRlVGFncyh0LCByZXNvdXJjZU5hbWUsIHMpLFxuICAgIHRhZ3MsXG4gICAgc2NvcGUsXG4gICk7XG59XG4iXX0=
@@ -29,7 +29,7 @@ class RuntimeCustomClaim {
29
29
  valueType;
30
30
  operator;
31
31
  value;
32
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeCustomClaim", version: "2.250.0-alpha.0" };
32
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeCustomClaim", version: "2.252.0-alpha.0" };
33
33
  /**
34
34
  * Create a custom claim with a string value.
35
35
  * String claims must use the EQUALS operator.
@@ -22,7 +22,7 @@ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
22
22
  * Provides static factory methods to create different authentication types.
23
23
  */
24
24
  class RuntimeAuthorizerConfiguration {
25
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeAuthorizerConfiguration", version: "2.250.0-alpha.0" };
25
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeAuthorizerConfiguration", version: "2.252.0-alpha.0" };
26
26
  /**
27
27
  * Use IAM authentication (default).
28
28
  * Requires AWS credentials to sign requests using SigV4.
@@ -0,0 +1,105 @@
1
+ import type { IDeliveryStream } from 'aws-cdk-lib/aws-kinesisfirehose';
2
+ import * as logs from 'aws-cdk-lib/aws-logs';
3
+ import type * as s3 from 'aws-cdk-lib/aws-s3';
4
+ import { Construct } from 'constructs';
5
+ /**
6
+ * Log types for AgentCore Runtime observability
7
+ */
8
+ export declare class LogType {
9
+ /**
10
+ * The log type value
11
+ */
12
+ readonly value: string;
13
+ /**
14
+ * Application logs for agent runtime invocations
15
+ */
16
+ static readonly APPLICATION_LOGS: LogType;
17
+ /**
18
+ * Usage logs for session-level resource consumption
19
+ */
20
+ static readonly USAGE_LOGS: LogType;
21
+ /**
22
+ * A custom log type value
23
+ *
24
+ * @param value The log type value
25
+ */
26
+ static of(value: string): LogType;
27
+ private constructor();
28
+ }
29
+ /**
30
+ * Configuration for logging with log type and destination
31
+ */
32
+ export interface LoggingConfig {
33
+ /**
34
+ * The type of logs to deliver
35
+ */
36
+ readonly logType: LogType;
37
+ /**
38
+ * The destination for logs
39
+ */
40
+ readonly destination: LoggingDestination;
41
+ }
42
+ /**
43
+ * Configuration returned by LoggingDestination.bind()
44
+ * @internal
45
+ */
46
+ interface LoggingDestinationBindConfig {
47
+ /**
48
+ * The delivery destination construct
49
+ */
50
+ readonly deliveryDestination: logs.CfnDeliveryDestination;
51
+ }
52
+ /**
53
+ * Represents a logging destination for AgentCore Runtime
54
+ *
55
+ * Use the static factory methods to create instances:
56
+ * - `LoggingDestination.cloudWatchLogs(logGroup)` - Send logs to CloudWatch Logs
57
+ * - `LoggingDestination.s3(bucket)` - Send logs to S3
58
+ * - `LoggingDestination.firehose(stream)` - Send logs to Kinesis Data Firehose
59
+ */
60
+ export declare abstract class LoggingDestination {
61
+ /**
62
+ * Create a logging destination that sends logs to a CloudWatch Log Group
63
+ *
64
+ * @param logGroup The CloudWatch Log Group to send logs to
65
+ */
66
+ static cloudWatchLogs(logGroup: logs.ILogGroup): LoggingDestination;
67
+ /**
68
+ * Create a logging destination that sends logs to an S3 bucket
69
+ *
70
+ * @param bucket The S3 bucket to send logs to
71
+ */
72
+ static s3(bucket: s3.IBucket): LoggingDestination;
73
+ /**
74
+ * Create a logging destination that sends logs to a Kinesis Data Firehose delivery stream
75
+ *
76
+ * @param stream The Firehose delivery stream to send logs to
77
+ */
78
+ static firehose(stream: IDeliveryStream): LoggingDestination;
79
+ /**
80
+ * Bind this destination to a scope and create the delivery destination resource
81
+ *
82
+ * @param scope The construct scope
83
+ * @param id The construct id
84
+ * @internal
85
+ */
86
+ abstract _bind(scope: Construct, id: string): LoggingDestinationBindConfig;
87
+ }
88
+ /**
89
+ * Configure X-Ray tracing delivery for a runtime
90
+ *
91
+ * @param scope The construct scope
92
+ * @param sourceArn The ARN of the source resource (runtime)
93
+ * @internal
94
+ */
95
+ export declare function configureTracingDelivery(scope: Construct, sourceArn: string): logs.CfnDelivery;
96
+ /**
97
+ * Configure logging delivery for a runtime
98
+ *
99
+ * @param scope The construct scope
100
+ * @param sourceArn The ARN of the source resource (runtime)
101
+ * @param loggingConfigs Array of logging configurations
102
+ * @internal
103
+ */
104
+ export declare function configureLoggingDelivery(scope: Construct, sourceArn: string, loggingConfigs: LoggingConfig[]): logs.CfnDelivery[];
105
+ export {};