@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.
Files changed (43) hide show
  1. package/.eslintrc.js +4 -0
  2. package/.jsii +12000 -0
  3. package/.jsii.tabl.json.gz +0 -0
  4. package/.warnings.jsii.js +183 -0
  5. package/LICENSE +201 -0
  6. package/NOTICE +2 -0
  7. package/README.md +796 -0
  8. package/agentcore/index.d.ts +11 -0
  9. package/agentcore/index.js +36 -0
  10. package/agentcore/network/network-configuration.d.ts +152 -0
  11. package/agentcore/network/network-configuration.js +234 -0
  12. package/agentcore/runtime/perms.d.ts +67 -0
  13. package/agentcore/runtime/perms.js +101 -0
  14. package/agentcore/runtime/runtime-artifact.d.ts +42 -0
  15. package/agentcore/runtime/runtime-artifact.js +90 -0
  16. package/agentcore/runtime/runtime-authorizer-configuration.d.ts +62 -0
  17. package/agentcore/runtime/runtime-authorizer-configuration.js +165 -0
  18. package/agentcore/runtime/runtime-base.d.ts +309 -0
  19. package/agentcore/runtime/runtime-base.js +207 -0
  20. package/agentcore/runtime/runtime-endpoint-base.d.ts +130 -0
  21. package/agentcore/runtime/runtime-endpoint-base.js +31 -0
  22. package/agentcore/runtime/runtime-endpoint.d.ts +182 -0
  23. package/agentcore/runtime/runtime-endpoint.js +372 -0
  24. package/agentcore/runtime/runtime.d.ts +230 -0
  25. package/agentcore/runtime/runtime.js +590 -0
  26. package/agentcore/runtime/types.d.ts +16 -0
  27. package/agentcore/runtime/types.js +21 -0
  28. package/agentcore/runtime/validation-helpers.d.ts +37 -0
  29. package/agentcore/runtime/validation-helpers.js +85 -0
  30. package/agentcore/tools/browser.d.ts +519 -0
  31. package/agentcore/tools/browser.js +641 -0
  32. package/agentcore/tools/code-interpreter.d.ts +447 -0
  33. package/agentcore/tools/code-interpreter.js +553 -0
  34. package/agentcore/tools/perms.d.ts +74 -0
  35. package/agentcore/tools/perms.js +122 -0
  36. package/agentcore/tools/validation-helpers.d.ts +37 -0
  37. package/agentcore/tools/validation-helpers.js +85 -0
  38. package/jest.config.js +2 -0
  39. package/lib/index.d.ts +1 -0
  40. package/lib/index.js +22 -0
  41. package/package.json +122 -0
  42. package/rosetta/_generated.ts-fixture +6 -0
  43. 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=