@aws-cdk/aws-bedrock-agentcore-alpha 2.221.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.
- package/.eslintrc.js +4 -0
- package/.jsii +12000 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +183 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +796 -0
- package/agentcore/index.d.ts +11 -0
- package/agentcore/index.js +36 -0
- package/agentcore/network/network-configuration.d.ts +152 -0
- package/agentcore/network/network-configuration.js +234 -0
- package/agentcore/runtime/perms.d.ts +67 -0
- package/agentcore/runtime/perms.js +101 -0
- package/agentcore/runtime/runtime-artifact.d.ts +42 -0
- package/agentcore/runtime/runtime-artifact.js +90 -0
- package/agentcore/runtime/runtime-authorizer-configuration.d.ts +62 -0
- package/agentcore/runtime/runtime-authorizer-configuration.js +165 -0
- package/agentcore/runtime/runtime-base.d.ts +309 -0
- package/agentcore/runtime/runtime-base.js +207 -0
- package/agentcore/runtime/runtime-endpoint-base.d.ts +130 -0
- package/agentcore/runtime/runtime-endpoint-base.js +31 -0
- package/agentcore/runtime/runtime-endpoint.d.ts +182 -0
- package/agentcore/runtime/runtime-endpoint.js +372 -0
- package/agentcore/runtime/runtime.d.ts +230 -0
- package/agentcore/runtime/runtime.js +590 -0
- package/agentcore/runtime/types.d.ts +16 -0
- package/agentcore/runtime/types.js +21 -0
- package/agentcore/runtime/validation-helpers.d.ts +37 -0
- package/agentcore/runtime/validation-helpers.js +85 -0
- package/agentcore/tools/browser.d.ts +519 -0
- package/agentcore/tools/browser.js +641 -0
- package/agentcore/tools/code-interpreter.d.ts +447 -0
- package/agentcore/tools/code-interpreter.js +553 -0
- package/agentcore/tools/perms.d.ts +74 -0
- package/agentcore/tools/perms.js +122 -0
- package/agentcore/tools/validation-helpers.d.ts +37 -0
- package/agentcore/tools/validation-helpers.js +85 -0
- package/jest.config.js +2 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +22 -0
- package/package.json +122 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +19 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
import * as ecr from 'aws-cdk-lib/aws-ecr';
|
|
14
|
+
import * as assets from 'aws-cdk-lib/aws-ecr-assets';
|
|
15
|
+
import { CfnRuntime } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
16
|
+
import { Construct } from 'constructs';
|
|
17
|
+
import { Runtime } from './runtime';
|
|
18
|
+
/**
|
|
19
|
+
* Abstract base class for agent runtime artifacts.
|
|
20
|
+
* Provides methods to reference container images from ECR repositories or local assets.
|
|
21
|
+
*/
|
|
22
|
+
export declare abstract class AgentRuntimeArtifact {
|
|
23
|
+
/**
|
|
24
|
+
* Reference an image in an ECR repository
|
|
25
|
+
*/
|
|
26
|
+
static fromEcrRepository(repository: ecr.IRepository, tag?: string): AgentRuntimeArtifact;
|
|
27
|
+
/**
|
|
28
|
+
* Reference an agent runtime artifact that's constructed directly from sources on disk
|
|
29
|
+
* @param directory The directory where the Dockerfile is stored
|
|
30
|
+
* @param options The options to further configure the selected image
|
|
31
|
+
*/
|
|
32
|
+
static fromAsset(directory: string, options?: assets.DockerImageAssetOptions): AgentRuntimeArtifact;
|
|
33
|
+
/**
|
|
34
|
+
* Called when the image is used by a Runtime to handle side effects like permissions
|
|
35
|
+
*/
|
|
36
|
+
abstract bind(scope: Construct, runtime: Runtime): void;
|
|
37
|
+
/**
|
|
38
|
+
* Render the artifact configuration for CloudFormation
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
abstract _render(): CfnRuntime.AgentRuntimeArtifactProperty;
|
|
42
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgentRuntimeArtifact = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
const assets = require("aws-cdk-lib/aws-ecr-assets");
|
|
6
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
7
|
+
const validation_helpers_1 = require("./validation-helpers");
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base class for agent runtime artifacts.
|
|
10
|
+
* Provides methods to reference container images from ECR repositories or local assets.
|
|
11
|
+
*/
|
|
12
|
+
class AgentRuntimeArtifact {
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.AgentRuntimeArtifact", version: "2.221.0-alpha.0" };
|
|
14
|
+
/**
|
|
15
|
+
* Reference an image in an ECR repository
|
|
16
|
+
*/
|
|
17
|
+
static fromEcrRepository(repository, tag = 'latest') {
|
|
18
|
+
return new EcrImage(repository, tag);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reference an agent runtime artifact that's constructed directly from sources on disk
|
|
22
|
+
* @param directory The directory where the Dockerfile is stored
|
|
23
|
+
* @param options The options to further configure the selected image
|
|
24
|
+
*/
|
|
25
|
+
static fromAsset(directory, options = {}) {
|
|
26
|
+
return new AssetImage(directory, options);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.AgentRuntimeArtifact = AgentRuntimeArtifact;
|
|
30
|
+
class EcrImage extends AgentRuntimeArtifact {
|
|
31
|
+
repository;
|
|
32
|
+
tag;
|
|
33
|
+
bound = false;
|
|
34
|
+
constructor(repository, tag) {
|
|
35
|
+
super();
|
|
36
|
+
this.repository = repository;
|
|
37
|
+
this.tag = tag;
|
|
38
|
+
}
|
|
39
|
+
bind(_scope, runtime) {
|
|
40
|
+
// Handle permissions (only once)
|
|
41
|
+
if (!this.bound && runtime.role) {
|
|
42
|
+
this.repository.grantPull(runtime.role);
|
|
43
|
+
this.bound = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
_render() {
|
|
47
|
+
// Return container configuration directly as expected by the runtime
|
|
48
|
+
// The runtime wraps this in containerConfiguration
|
|
49
|
+
return {
|
|
50
|
+
containerUri: this.repository.repositoryUriForTag(this.tag),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
class AssetImage extends AgentRuntimeArtifact {
|
|
55
|
+
directory;
|
|
56
|
+
options;
|
|
57
|
+
asset;
|
|
58
|
+
bound = false;
|
|
59
|
+
constructor(directory, options = {}) {
|
|
60
|
+
super();
|
|
61
|
+
this.directory = directory;
|
|
62
|
+
this.options = options;
|
|
63
|
+
}
|
|
64
|
+
bind(scope, runtime) {
|
|
65
|
+
// Create the asset if not already created
|
|
66
|
+
if (!this.asset) {
|
|
67
|
+
const hash = (0, helpers_internal_1.md5hash)(this.directory);
|
|
68
|
+
this.asset = new assets.DockerImageAsset(scope, `AgentRuntimeArtifact${hash}`, {
|
|
69
|
+
directory: this.directory,
|
|
70
|
+
...this.options,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Grant permissions (only once)
|
|
74
|
+
if (!this.bound) {
|
|
75
|
+
this.asset.repository.grantPull(runtime.role);
|
|
76
|
+
this.bound = true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
_render() {
|
|
80
|
+
if (!this.asset) {
|
|
81
|
+
throw new validation_helpers_1.ValidationError('Asset not initialized. Call bind() before _render()');
|
|
82
|
+
}
|
|
83
|
+
// Return container configuration directly as expected by the runtime
|
|
84
|
+
// The runtime wraps this in containerConfiguration
|
|
85
|
+
return {
|
|
86
|
+
containerUri: this.asset.imageUri,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bnRpbWUtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQWNBLHFEQUFxRDtBQUVyRCw0RUFBZ0U7QUFHaEUsNkRBQXVEO0FBRXZEOzs7R0FHRztBQUNILE1BQXNCLG9CQUFvQjs7SUFDeEM7O09BRUc7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsVUFBMkIsRUFBRSxNQUFjLFFBQVE7UUFDakYsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDdEM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFpQixFQUFFLFVBQTBDLEVBQUU7UUFDckYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDM0M7O0FBZkgsb0RBMkJDO0FBRUQsTUFBTSxRQUFTLFNBQVEsb0JBQW9CO0lBR1o7SUFBOEM7SUFGbkUsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixZQUE2QixVQUEyQixFQUFtQixHQUFXO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBRG1CLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQW1CLFFBQUcsR0FBSCxHQUFHLENBQVE7S0FFckY7SUFFTSxJQUFJLENBQUMsTUFBaUIsRUFBRSxPQUFnQjtRQUM3QyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0tBQ0Y7SUFFTSxPQUFPO1FBQ1oscUVBQXFFO1FBQ3JFLG1EQUFtRDtRQUNuRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNyRCxDQUFDO0tBQ1Y7Q0FDRjtBQUVELE1BQU0sVUFBVyxTQUFRLG9CQUFvQjtJQUlkO0lBQW9DO0lBSHpELEtBQUssQ0FBMkI7SUFDaEMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixZQUE2QixTQUFpQixFQUFtQixVQUEwQyxFQUFFO1FBQzNHLEtBQUssRUFBRSxDQUFDO1FBRG1CLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7S0FFNUc7SUFFTSxJQUFJLENBQUMsS0FBZ0IsRUFBRSxPQUFnQjtRQUM1QywwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksR0FBRyxJQUFBLDBCQUFPLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixJQUFJLEVBQUUsRUFBRTtnQkFDN0UsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixHQUFHLElBQUksQ0FBQyxPQUFPO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxtREFBbUQ7UUFDbkQsT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDM0IsQ0FBQztLQUNWO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjci1hc3NldHMnO1xuaW1wb3J0IHsgQ2ZuUnVudGltZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IG1kNWhhc2ggfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUnVudGltZSB9IGZyb20gJy4vcnVudGltZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWdlbnQgcnVudGltZSBhcnRpZmFjdHMuXG4gKiBQcm92aWRlcyBtZXRob2RzIHRvIHJlZmVyZW5jZSBjb250YWluZXIgaW1hZ2VzIGZyb20gRUNSIHJlcG9zaXRvcmllcyBvciBsb2NhbCBhc3NldHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gaW1hZ2UgaW4gYW4gRUNSIHJlcG9zaXRvcnlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjclJlcG9zaXRvcnkocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5LCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogQWdlbnRSdW50aW1lQXJ0aWZhY3Qge1xuICAgIHJldHVybiBuZXcgRWNySW1hZ2UocmVwb3NpdG9yeSwgdGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gYWdlbnQgcnVudGltZSBhcnRpZmFjdCB0aGF0J3MgY29uc3RydWN0ZWQgZGlyZWN0bHkgZnJvbSBzb3VyY2VzIG9uIGRpc2tcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBEb2NrZXJmaWxlIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBmdXJ0aGVyIGNvbmZpZ3VyZSB0aGUgc2VsZWN0ZWQgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KGRpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldE9wdGlvbnMgPSB7fSk6IEFnZW50UnVudGltZUFydGlmYWN0IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0SW1hZ2UoZGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgaW1hZ2UgaXMgdXNlZCBieSBhIFJ1bnRpbWUgdG8gaGFuZGxlIHNpZGUgZWZmZWN0cyBsaWtlIHBlcm1pc3Npb25zXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChzY29wZTogQ29uc3RydWN0LCBydW50aW1lOiBSdW50aW1lKTogdm9pZDtcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBhcnRpZmFjdCBjb25maWd1cmF0aW9uIGZvciBDbG91ZEZvcm1hdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eTtcbn1cblxuY2xhc3MgRWNySW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYm91bmQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGVjci5JUmVwb3NpdG9yeSwgcHJpdmF0ZSByZWFkb25seSB0YWc6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZChfc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBwZXJtaXNzaW9ucyAob25seSBvbmNlKVxuICAgIGlmICghdGhpcy5ib3VuZCAmJiBydW50aW1lLnJvbGUpIHtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgLy8gUmV0dXJuIGNvbnRhaW5lciBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGFzIGV4cGVjdGVkIGJ5IHRoZSBydW50aW1lXG4gICAgLy8gVGhlIHJ1bnRpbWUgd3JhcHMgdGhpcyBpbiBjb250YWluZXJDb25maWd1cmF0aW9uXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRhaW5lclVyaTogdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlVcmlGb3JUYWcodGhpcy50YWcpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG5cbmNsYXNzIEFzc2V0SW1hZ2UgZXh0ZW5kcyBBZ2VudFJ1bnRpbWVBcnRpZmFjdCB7XG4gIHByaXZhdGUgYXNzZXQ/OiBhc3NldHMuRG9ja2VySW1hZ2VBc3NldDtcbiAgcHJpdmF0ZSBib3VuZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0b3J5OiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogYXNzZXRzLkRvY2tlckltYWdlQXNzZXRPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoc2NvcGU6IENvbnN0cnVjdCwgcnVudGltZTogUnVudGltZSk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSB0aGUgYXNzZXQgaWYgbm90IGFscmVhZHkgY3JlYXRlZFxuICAgIGlmICghdGhpcy5hc3NldCkge1xuICAgICAgY29uc3QgaGFzaCA9IG1kNWhhc2godGhpcy5kaXJlY3RvcnkpO1xuICAgICAgdGhpcy5hc3NldCA9IG5ldyBhc3NldHMuRG9ja2VySW1hZ2VBc3NldChzY29wZSwgYEFnZW50UnVudGltZUFydGlmYWN0JHtoYXNofWAsIHtcbiAgICAgICAgZGlyZWN0b3J5OiB0aGlzLmRpcmVjdG9yeSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gR3JhbnQgcGVybWlzc2lvbnMgKG9ubHkgb25jZSlcbiAgICBpZiAoIXRoaXMuYm91bmQpIHtcbiAgICAgIHRoaXMuYXNzZXQucmVwb3NpdG9yeS5ncmFudFB1bGwocnVudGltZS5yb2xlKTtcbiAgICAgIHRoaXMuYm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQWdlbnRSdW50aW1lQXJ0aWZhY3RQcm9wZXJ0eSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBc3NldCBub3QgaW5pdGlhbGl6ZWQuIENhbGwgYmluZCgpIGJlZm9yZSBfcmVuZGVyKCknKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gY29udGFpbmVyIGNvbmZpZ3VyYXRpb24gZGlyZWN0bHkgYXMgZXhwZWN0ZWQgYnkgdGhlIHJ1bnRpbWVcbiAgICAvLyBUaGUgcnVudGltZSB3cmFwcyB0aGlzIGluIGNvbnRhaW5lckNvbmZpZ3VyYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgY29udGFpbmVyVXJpOiB0aGlzLmFzc2V0LmltYWdlVXJpLFxuICAgIH0gYXMgYW55O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
5
|
+
* with the License. A copy of the License is located at
|
|
6
|
+
*
|
|
7
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
10
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
11
|
+
* and limitations under the License.
|
|
12
|
+
*/
|
|
13
|
+
import { CfnRuntime } from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
14
|
+
/**
|
|
15
|
+
* Abstract base class for runtime authorizer configurations.
|
|
16
|
+
* Provides static factory methods to create different authentication types.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class RuntimeAuthorizerConfiguration {
|
|
19
|
+
/**
|
|
20
|
+
* Use IAM authentication (default).
|
|
21
|
+
* Requires AWS credentials to sign requests using SigV4.
|
|
22
|
+
*
|
|
23
|
+
* @returns RuntimeAuthorizerConfiguration for IAM authentication
|
|
24
|
+
*/
|
|
25
|
+
static usingIAM(): RuntimeAuthorizerConfiguration;
|
|
26
|
+
/**
|
|
27
|
+
* Use custom JWT authentication.
|
|
28
|
+
* Validates JWT tokens against the specified OIDC provider.
|
|
29
|
+
*
|
|
30
|
+
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
31
|
+
* @param allowedClients Optional array of allowed client IDs
|
|
32
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
33
|
+
* @returns RuntimeAuthorizerConfiguration for JWT authentication
|
|
34
|
+
*/
|
|
35
|
+
static usingJWT(discoveryUrl: string, allowedClients?: string[], allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
36
|
+
/**
|
|
37
|
+
* Use AWS Cognito User Pool authentication.
|
|
38
|
+
* Validates Cognito-issued JWT tokens.
|
|
39
|
+
*
|
|
40
|
+
* @param userPoolId The Cognito User Pool ID (e.g., 'us-west-2_ABC123')
|
|
41
|
+
* @param clientId The Cognito App Client ID
|
|
42
|
+
* @param region Optional AWS region where the User Pool is located (defaults to stack region)
|
|
43
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
44
|
+
* @returns RuntimeAuthorizerConfiguration for Cognito authentication
|
|
45
|
+
*/
|
|
46
|
+
static usingCognito(userPoolId: string, clientId: string, region?: string, allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
47
|
+
/**
|
|
48
|
+
* Use OAuth 2.0 authentication.
|
|
49
|
+
* Supports various OAuth providers.
|
|
50
|
+
*
|
|
51
|
+
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
52
|
+
* @param clientId OAuth client ID
|
|
53
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
54
|
+
* @returns RuntimeAuthorizerConfiguration for OAuth authentication
|
|
55
|
+
*/
|
|
56
|
+
static usingOAuth(discoveryUrl: string, clientId: string, allowedAudience?: string[]): RuntimeAuthorizerConfiguration;
|
|
57
|
+
/**
|
|
58
|
+
* Render the authorizer configuration for CloudFormation
|
|
59
|
+
* @internal
|
|
60
|
+
*/
|
|
61
|
+
abstract _render(): CfnRuntime.AuthorizerConfigurationProperty | undefined;
|
|
62
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuntimeAuthorizerConfiguration = void 0;
|
|
4
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
9
|
+
* with the License. A copy of the License is located at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
14
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
15
|
+
* and limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
18
|
+
const validation_helpers_1 = require("./validation-helpers");
|
|
19
|
+
/**
|
|
20
|
+
* Abstract base class for runtime authorizer configurations.
|
|
21
|
+
* Provides static factory methods to create different authentication types.
|
|
22
|
+
*/
|
|
23
|
+
class RuntimeAuthorizerConfiguration {
|
|
24
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.RuntimeAuthorizerConfiguration", version: "2.221.0-alpha.0" };
|
|
25
|
+
/**
|
|
26
|
+
* Use IAM authentication (default).
|
|
27
|
+
* Requires AWS credentials to sign requests using SigV4.
|
|
28
|
+
*
|
|
29
|
+
* @returns RuntimeAuthorizerConfiguration for IAM authentication
|
|
30
|
+
*/
|
|
31
|
+
static usingIAM() {
|
|
32
|
+
return new IamAuthorizerConfiguration();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Use custom JWT authentication.
|
|
36
|
+
* Validates JWT tokens against the specified OIDC provider.
|
|
37
|
+
*
|
|
38
|
+
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
39
|
+
* @param allowedClients Optional array of allowed client IDs
|
|
40
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
41
|
+
* @returns RuntimeAuthorizerConfiguration for JWT authentication
|
|
42
|
+
*/
|
|
43
|
+
static usingJWT(discoveryUrl, allowedClients, allowedAudience) {
|
|
44
|
+
if (!discoveryUrl.endsWith('/.well-known/openid-configuration')) {
|
|
45
|
+
throw new validation_helpers_1.ValidationError('JWT discovery URL must end with /.well-known/openid-configuration');
|
|
46
|
+
}
|
|
47
|
+
return new JwtAuthorizerConfiguration(discoveryUrl, allowedClients, allowedAudience);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Use AWS Cognito User Pool authentication.
|
|
51
|
+
* Validates Cognito-issued JWT tokens.
|
|
52
|
+
*
|
|
53
|
+
* @param userPoolId The Cognito User Pool ID (e.g., 'us-west-2_ABC123')
|
|
54
|
+
* @param clientId The Cognito App Client ID
|
|
55
|
+
* @param region Optional AWS region where the User Pool is located (defaults to stack region)
|
|
56
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
57
|
+
* @returns RuntimeAuthorizerConfiguration for Cognito authentication
|
|
58
|
+
*/
|
|
59
|
+
static usingCognito(userPoolId, clientId, region, allowedAudience) {
|
|
60
|
+
return new CognitoAuthorizerConfiguration(userPoolId, clientId, region, allowedAudience);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Use OAuth 2.0 authentication.
|
|
64
|
+
* Supports various OAuth providers.
|
|
65
|
+
*
|
|
66
|
+
* @param discoveryUrl The OIDC discovery URL (must end with /.well-known/openid-configuration)
|
|
67
|
+
* @param clientId OAuth client ID
|
|
68
|
+
* @param allowedAudience Optional array of allowed audiences
|
|
69
|
+
* @returns RuntimeAuthorizerConfiguration for OAuth authentication
|
|
70
|
+
*/
|
|
71
|
+
static usingOAuth(discoveryUrl, clientId, allowedAudience) {
|
|
72
|
+
if (!discoveryUrl.endsWith('/.well-known/openid-configuration')) {
|
|
73
|
+
throw new validation_helpers_1.ValidationError('OAuth discovery URL must end with /.well-known/openid-configuration');
|
|
74
|
+
}
|
|
75
|
+
return new OAuthAuthorizerConfiguration(discoveryUrl, clientId, allowedAudience);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.RuntimeAuthorizerConfiguration = RuntimeAuthorizerConfiguration;
|
|
79
|
+
/**
|
|
80
|
+
* IAM authorizer configuration
|
|
81
|
+
*/
|
|
82
|
+
class IamAuthorizerConfiguration extends RuntimeAuthorizerConfiguration {
|
|
83
|
+
_render() {
|
|
84
|
+
// For IAM authentication, return undefined to let AWS service use default
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* JWT authorizer configuration
|
|
90
|
+
*/
|
|
91
|
+
class JwtAuthorizerConfiguration extends RuntimeAuthorizerConfiguration {
|
|
92
|
+
discoveryUrl;
|
|
93
|
+
allowedClients;
|
|
94
|
+
allowedAudience;
|
|
95
|
+
constructor(discoveryUrl, allowedClients, allowedAudience) {
|
|
96
|
+
super();
|
|
97
|
+
this.discoveryUrl = discoveryUrl;
|
|
98
|
+
this.allowedClients = allowedClients;
|
|
99
|
+
this.allowedAudience = allowedAudience;
|
|
100
|
+
}
|
|
101
|
+
_render() {
|
|
102
|
+
return {
|
|
103
|
+
customJwtAuthorizer: {
|
|
104
|
+
discoveryUrl: this.discoveryUrl,
|
|
105
|
+
allowedClients: this.allowedClients,
|
|
106
|
+
allowedAudience: this.allowedAudience,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Cognito authorizer configuration
|
|
113
|
+
*/
|
|
114
|
+
class CognitoAuthorizerConfiguration extends RuntimeAuthorizerConfiguration {
|
|
115
|
+
userPoolId;
|
|
116
|
+
clientId;
|
|
117
|
+
region;
|
|
118
|
+
allowedAudience;
|
|
119
|
+
constructor(userPoolId, clientId, region, allowedAudience) {
|
|
120
|
+
super();
|
|
121
|
+
this.userPoolId = userPoolId;
|
|
122
|
+
this.clientId = clientId;
|
|
123
|
+
this.region = region;
|
|
124
|
+
this.allowedAudience = allowedAudience;
|
|
125
|
+
}
|
|
126
|
+
_render() {
|
|
127
|
+
// If region is not provided, use a token that will be resolved to the stack region
|
|
128
|
+
// This will be resolved during synthesis
|
|
129
|
+
const region = this.region ?? aws_cdk_lib_1.Token.asString({ Ref: 'AWS::Region' });
|
|
130
|
+
const discoveryUrl = `https://cognito-idp.${region}.amazonaws.com/${this.userPoolId}/.well-known/openid-configuration`;
|
|
131
|
+
// Use JWT format for Cognito (CloudFormation expects JWT format)
|
|
132
|
+
return {
|
|
133
|
+
customJwtAuthorizer: {
|
|
134
|
+
discoveryUrl: discoveryUrl,
|
|
135
|
+
allowedClients: [this.clientId],
|
|
136
|
+
allowedAudience: this.allowedAudience,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* OAuth authorizer configuration
|
|
143
|
+
*/
|
|
144
|
+
class OAuthAuthorizerConfiguration extends RuntimeAuthorizerConfiguration {
|
|
145
|
+
discoveryUrl;
|
|
146
|
+
clientId;
|
|
147
|
+
allowedAudience;
|
|
148
|
+
constructor(discoveryUrl, clientId, allowedAudience) {
|
|
149
|
+
super();
|
|
150
|
+
this.discoveryUrl = discoveryUrl;
|
|
151
|
+
this.clientId = clientId;
|
|
152
|
+
this.allowedAudience = allowedAudience;
|
|
153
|
+
}
|
|
154
|
+
_render() {
|
|
155
|
+
// OAuth is also represented as JWT in CloudFormation
|
|
156
|
+
return {
|
|
157
|
+
customJwtAuthorizer: {
|
|
158
|
+
discoveryUrl: this.discoveryUrl,
|
|
159
|
+
allowedClients: [this.clientId],
|
|
160
|
+
allowedAudience: this.allowedAudience,
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1hdXRob3JpemVyLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJydW50aW1lLWF1dGhvcml6ZXItY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0M7QUFFcEMsNkRBQXVEO0FBRXZEOzs7R0FHRztBQUNILE1BQXNCLDhCQUE4Qjs7SUFDbEQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsUUFBUTtRQUNwQixPQUFPLElBQUksMEJBQTBCLEVBQUUsQ0FBQztLQUN6QztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FDcEIsWUFBb0IsRUFDcEIsY0FBeUIsRUFDekIsZUFBMEI7UUFFMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDakcsQ0FBQztRQUNELE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0tBQ3RGO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLFlBQVksQ0FDeEIsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBZSxFQUNmLGVBQTBCO1FBRTFCLE9BQU8sSUFBSSw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztLQUMxRjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FDdEIsWUFBb0IsRUFDcEIsUUFBZ0IsRUFDaEIsZUFBMEI7UUFFMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsbUNBQW1DLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDbkcsQ0FBQztRQUNELE9BQU8sSUFBSSw0QkFBNEIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0tBQ2xGOztBQXBFSCx3RUEyRUM7QUFFRDs7R0FFRztBQUNILE1BQU0sMEJBQTJCLFNBQVEsOEJBQThCO0lBQzlELE9BQU87UUFDWiwwRUFBMEU7UUFDMUUsT0FBTyxTQUFTLENBQUM7S0FDbEI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSwwQkFBMkIsU0FBUSw4QkFBOEI7SUFFbEQ7SUFDQTtJQUNBO0lBSG5CLFlBQ21CLFlBQW9CLEVBQ3BCLGNBQXlCLEVBQ3pCLGVBQTBCO1FBRTNDLEtBQUssRUFBRSxDQUFDO1FBSlMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsbUJBQWMsR0FBZCxjQUFjLENBQVc7UUFDekIsb0JBQWUsR0FBZixlQUFlLENBQVc7S0FHNUM7SUFFTSxPQUFPO1FBQ1osT0FBTztZQUNMLG1CQUFtQixFQUFFO2dCQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO2FBQ3RDO1NBQ0YsQ0FBQztLQUNIO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sOEJBQStCLFNBQVEsOEJBQThCO0lBRXREO0lBQ0E7SUFDQTtJQUNBO0lBSm5CLFlBQ21CLFVBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLE1BQWUsRUFDZixlQUEwQjtRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUxTLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2Ysb0JBQWUsR0FBZixlQUFlLENBQVc7S0FHNUM7SUFFTSxPQUFPO1FBQ1osbUZBQW1GO1FBQ25GLHlDQUF5QztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLG1CQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDckUsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLE1BQU0sa0JBQWtCLElBQUksQ0FBQyxVQUFVLG1DQUFtQyxDQUFDO1FBRXZILGlFQUFpRTtRQUNqRSxPQUFPO1lBQ0wsbUJBQW1CLEVBQUU7Z0JBQ25CLFlBQVksRUFBRSxZQUFZO2dCQUMxQixjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMvQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDdEM7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSw0QkFBNkIsU0FBUSw4QkFBOEI7SUFFcEQ7SUFDQTtJQUNBO0lBSG5CLFlBQ21CLFlBQW9CLEVBQ3BCLFFBQWdCLEVBQ2hCLGVBQTBCO1FBRTNDLEtBQUssRUFBRSxDQUFDO1FBSlMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBVztLQUc1QztJQUVNLE9BQU87UUFDWixxREFBcUQ7UUFDckQsT0FBTztZQUNMLG1CQUFtQixFQUFFO2dCQUNuQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQy9CLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTthQUN0QztTQUNGLENBQUM7S0FDSDtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDZm5SdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHJ1bnRpbWUgYXV0aG9yaXplciBjb25maWd1cmF0aW9ucy5cbiAqIFByb3ZpZGVzIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgdG8gY3JlYXRlIGRpZmZlcmVudCBhdXRoZW50aWNhdGlvbiB0eXBlcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBVc2UgSUFNIGF1dGhlbnRpY2F0aW9uIChkZWZhdWx0KS5cbiAgICogUmVxdWlyZXMgQVdTIGNyZWRlbnRpYWxzIHRvIHNpZ24gcmVxdWVzdHMgdXNpbmcgU2lnVjQuXG4gICAqXG4gICAqIEByZXR1cm5zIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiBmb3IgSUFNIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nSUFNKCk6IFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJYW1BdXRob3JpemVyQ29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBjdXN0b20gSldUIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBWYWxpZGF0ZXMgSldUIHRva2VucyBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgT0lEQyBwcm92aWRlci5cbiAgICpcbiAgICogQHBhcmFtIGRpc2NvdmVyeVVybCBUaGUgT0lEQyBkaXNjb3ZlcnkgVVJMIChtdXN0IGVuZCB3aXRoIC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbilcbiAgICogQHBhcmFtIGFsbG93ZWRDbGllbnRzIE9wdGlvbmFsIGFycmF5IG9mIGFsbG93ZWQgY2xpZW50IElEc1xuICAgKiBAcGFyYW0gYWxsb3dlZEF1ZGllbmNlIE9wdGlvbmFsIGFycmF5IG9mIGFsbG93ZWQgYXVkaWVuY2VzXG4gICAqIEByZXR1cm5zIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiBmb3IgSldUIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nSldUKFxuICAgIGRpc2NvdmVyeVVybDogc3RyaW5nLFxuICAgIGFsbG93ZWRDbGllbnRzPzogc3RyaW5nW10sXG4gICAgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW10sXG4gICk6IFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gICAgaWYgKCFkaXNjb3ZlcnlVcmwuZW5kc1dpdGgoJy8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbicpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdKV1QgZGlzY292ZXJ5IFVSTCBtdXN0IGVuZCB3aXRoIC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEp3dEF1dGhvcml6ZXJDb25maWd1cmF0aW9uKGRpc2NvdmVyeVVybCwgYWxsb3dlZENsaWVudHMsIGFsbG93ZWRBdWRpZW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIEFXUyBDb2duaXRvIFVzZXIgUG9vbCBhdXRoZW50aWNhdGlvbi5cbiAgICogVmFsaWRhdGVzIENvZ25pdG8taXNzdWVkIEpXVCB0b2tlbnMuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyUG9vbElkIFRoZSBDb2duaXRvIFVzZXIgUG9vbCBJRCAoZS5nLiwgJ3VzLXdlc3QtMl9BQkMxMjMnKVxuICAgKiBAcGFyYW0gY2xpZW50SWQgVGhlIENvZ25pdG8gQXBwIENsaWVudCBJRFxuICAgKiBAcGFyYW0gcmVnaW9uIE9wdGlvbmFsIEFXUyByZWdpb24gd2hlcmUgdGhlIFVzZXIgUG9vbCBpcyBsb2NhdGVkIChkZWZhdWx0cyB0byBzdGFjayByZWdpb24pXG4gICAqIEBwYXJhbSBhbGxvd2VkQXVkaWVuY2UgT3B0aW9uYWwgYXJyYXkgb2YgYWxsb3dlZCBhdWRpZW5jZXNcbiAgICogQHJldHVybnMgUnVudGltZUF1dGhvcml6ZXJDb25maWd1cmF0aW9uIGZvciBDb2duaXRvIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQ29nbml0byhcbiAgICB1c2VyUG9vbElkOiBzdHJpbmcsXG4gICAgY2xpZW50SWQ6IHN0cmluZyxcbiAgICByZWdpb24/OiBzdHJpbmcsXG4gICAgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW10sXG4gICk6IFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBDb2duaXRvQXV0aG9yaXplckNvbmZpZ3VyYXRpb24odXNlclBvb2xJZCwgY2xpZW50SWQsIHJlZ2lvbiwgYWxsb3dlZEF1ZGllbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgT0F1dGggMi4wIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBTdXBwb3J0cyB2YXJpb3VzIE9BdXRoIHByb3ZpZGVycy5cbiAgICpcbiAgICogQHBhcmFtIGRpc2NvdmVyeVVybCBUaGUgT0lEQyBkaXNjb3ZlcnkgVVJMIChtdXN0IGVuZCB3aXRoIC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbilcbiAgICogQHBhcmFtIGNsaWVudElkIE9BdXRoIGNsaWVudCBJRFxuICAgKiBAcGFyYW0gYWxsb3dlZEF1ZGllbmNlIE9wdGlvbmFsIGFycmF5IG9mIGFsbG93ZWQgYXVkaWVuY2VzXG4gICAqIEByZXR1cm5zIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiBmb3IgT0F1dGggYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdPQXV0aChcbiAgICBkaXNjb3ZlcnlVcmw6IHN0cmluZyxcbiAgICBjbGllbnRJZDogc3RyaW5nLFxuICAgIGFsbG93ZWRBdWRpZW5jZT86IHN0cmluZ1tdLFxuICApOiBSdW50aW1lQXV0aG9yaXplckNvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghZGlzY292ZXJ5VXJsLmVuZHNXaXRoKCcvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24nKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT0F1dGggZGlzY292ZXJ5IFVSTCBtdXN0IGVuZCB3aXRoIC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE9BdXRoQXV0aG9yaXplckNvbmZpZ3VyYXRpb24oZGlzY292ZXJ5VXJsLCBjbGllbnRJZCwgYWxsb3dlZEF1ZGllbmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvbiBmb3IgQ2xvdWRGb3JtYXRpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgX3JlbmRlcigpOiBDZm5SdW50aW1lLkF1dGhvcml6ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSUFNIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvblxuICovXG5jbGFzcyBJYW1BdXRob3JpemVyQ29uZmlndXJhdGlvbiBleHRlbmRzIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gIHB1YmxpYyBfcmVuZGVyKCk6IHVuZGVmaW5lZCB7XG4gICAgLy8gRm9yIElBTSBhdXRoZW50aWNhdGlvbiwgcmV0dXJuIHVuZGVmaW5lZCB0byBsZXQgQVdTIHNlcnZpY2UgdXNlIGRlZmF1bHRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogSldUIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvblxuICovXG5jbGFzcyBKd3RBdXRob3JpemVyQ29uZmlndXJhdGlvbiBleHRlbmRzIFJ1bnRpbWVBdXRob3JpemVyQ29uZmlndXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzY292ZXJ5VXJsOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQ2xpZW50cz86IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW10sXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkF1dGhvcml6ZXJDb25maWd1cmF0aW9uUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21Kd3RBdXRob3JpemVyOiB7XG4gICAgICAgIGRpc2NvdmVyeVVybDogdGhpcy5kaXNjb3ZlcnlVcmwsXG4gICAgICAgIGFsbG93ZWRDbGllbnRzOiB0aGlzLmFsbG93ZWRDbGllbnRzLFxuICAgICAgICBhbGxvd2VkQXVkaWVuY2U6IHRoaXMuYWxsb3dlZEF1ZGllbmNlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29nbml0byBhdXRob3JpemVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuY2xhc3MgQ29nbml0b0F1dGhvcml6ZXJDb25maWd1cmF0aW9uIGV4dGVuZHMgUnVudGltZUF1dGhvcml6ZXJDb25maWd1cmF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUG9vbElkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRJZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEF1ZGllbmNlPzogc3RyaW5nW10sXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX3JlbmRlcigpOiBDZm5SdW50aW1lLkF1dGhvcml6ZXJDb25maWd1cmF0aW9uUHJvcGVydHkge1xuICAgIC8vIElmIHJlZ2lvbiBpcyBub3QgcHJvdmlkZWQsIHVzZSBhIHRva2VuIHRoYXQgd2lsbCBiZSByZXNvbHZlZCB0byB0aGUgc3RhY2sgcmVnaW9uXG4gICAgLy8gVGhpcyB3aWxsIGJlIHJlc29sdmVkIGR1cmluZyBzeW50aGVzaXNcbiAgICBjb25zdCByZWdpb24gPSB0aGlzLnJlZ2lvbiA/PyBUb2tlbi5hc1N0cmluZyh7IFJlZjogJ0FXUzo6UmVnaW9uJyB9KTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmwgPSBgaHR0cHM6Ly9jb2duaXRvLWlkcC4ke3JlZ2lvbn0uYW1hem9uYXdzLmNvbS8ke3RoaXMudXNlclBvb2xJZH0vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gO1xuXG4gICAgLy8gVXNlIEpXVCBmb3JtYXQgZm9yIENvZ25pdG8gKENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgSldUIGZvcm1hdClcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSnd0QXV0aG9yaXplcjoge1xuICAgICAgICBkaXNjb3ZlcnlVcmw6IGRpc2NvdmVyeVVybCxcbiAgICAgICAgYWxsb3dlZENsaWVudHM6IFt0aGlzLmNsaWVudElkXSxcbiAgICAgICAgYWxsb3dlZEF1ZGllbmNlOiB0aGlzLmFsbG93ZWRBdWRpZW5jZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE9BdXRoIGF1dGhvcml6ZXIgY29uZmlndXJhdGlvblxuICovXG5jbGFzcyBPQXV0aEF1dGhvcml6ZXJDb25maWd1cmF0aW9uIGV4dGVuZHMgUnVudGltZUF1dGhvcml6ZXJDb25maWd1cmF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNjb3ZlcnlVcmw6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudElkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkQXVkaWVuY2U/OiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfcmVuZGVyKCk6IENmblJ1bnRpbWUuQXV0aG9yaXplckNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB7XG4gICAgLy8gT0F1dGggaXMgYWxzbyByZXByZXNlbnRlZCBhcyBKV1QgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSnd0QXV0aG9yaXplcjoge1xuICAgICAgICBkaXNjb3ZlcnlVcmw6IHRoaXMuZGlzY292ZXJ5VXJsLFxuICAgICAgICBhbGxvd2VkQ2xpZW50czogW3RoaXMuY2xpZW50SWRdLFxuICAgICAgICBhbGxvd2VkQXVkaWVuY2U6IHRoaXMuYWxsb3dlZEF1ZGllbmNlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|