@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,66 @@
1
+ import type { PolicyStatement } from './policy-statement';
2
+ /**
3
+ * Validation mode for Cedar policy definitions.
4
+ *
5
+ */
6
+ export declare class PolicyValidationMode {
7
+ /**
8
+ * Fail policy creation if any validation findings are detected.
9
+ * This is the safer default - catches policy errors early.
10
+ */
11
+ static readonly FAIL_ON_ANY_FINDINGS: PolicyValidationMode;
12
+ /**
13
+ * Ignore all validation findings and create the policy anyway.
14
+ * Use with caution - may result in runtime authorization errors.
15
+ */
16
+ static readonly IGNORE_ALL_FINDINGS: PolicyValidationMode;
17
+ /**
18
+ * The string value of the validation mode.
19
+ */
20
+ readonly value: string;
21
+ constructor(value: string);
22
+ }
23
+ /**
24
+ * Options for adding a policy via PolicyEngine.addPolicy()
25
+ */
26
+ export interface AddPolicyOptions {
27
+ /**
28
+ * Cedar policy statement (35-153,600 characters).
29
+ *
30
+ * You must specify either `definition` or `statement`, but not both.
31
+ *
32
+ * @default - Must provide either definition or statement
33
+ */
34
+ readonly definition?: string;
35
+ /**
36
+ * Type-safe Cedar policy statement built using PolicyStatement builder.
37
+ *
38
+ * Use this for a type-safe, form-like API to build Cedar policies without
39
+ * writing raw Cedar syntax. The builder validates at synthesis time.
40
+ *
41
+ * You must specify either `definition` or `statement`, but not both.
42
+ *
43
+ * @default - Must provide either definition or statement
44
+ */
45
+ readonly statement?: PolicyStatement;
46
+ /**
47
+ * The name of the policy.
48
+ * Valid characters: a-z, A-Z, 0-9, _ (underscore)
49
+ * Must start with a letter, 1-48 characters
50
+ *
51
+ * @default - Auto-generated unique name
52
+ */
53
+ readonly policyName?: string;
54
+ /**
55
+ * Optional description for the policy (max 4,096 characters).
56
+ *
57
+ * @default - No description
58
+ */
59
+ readonly description?: string;
60
+ /**
61
+ * Validation mode for the policy.
62
+ *
63
+ * @default PolicyValidationMode.FAIL_ON_ANY_FINDINGS
64
+ */
65
+ readonly validationMode?: PolicyValidationMode;
66
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolicyValidationMode = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ /**
6
+ * Validation mode for Cedar policy definitions.
7
+ *
8
+ */
9
+ class PolicyValidationMode {
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.PolicyValidationMode", version: "2.252.0-alpha.0" };
11
+ /**
12
+ * Fail policy creation if any validation findings are detected.
13
+ * This is the safer default - catches policy errors early.
14
+ */
15
+ static FAIL_ON_ANY_FINDINGS = new PolicyValidationMode('FAIL_ON_ANY_FINDINGS');
16
+ /**
17
+ * Ignore all validation findings and create the policy anyway.
18
+ * Use with caution - may result in runtime authorization errors.
19
+ */
20
+ static IGNORE_ALL_FINDINGS = new PolicyValidationMode('IGNORE_ALL_FINDINGS');
21
+ /**
22
+ * The string value of the validation mode.
23
+ */
24
+ value;
25
+ constructor(value) {
26
+ this.value = value;
27
+ }
28
+ }
29
+ exports.PolicyValidationMode = PolicyValidationMode;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTs7O0dBR0c7QUFDSCxNQUFhLG9CQUFvQjs7SUFDL0I7OztPQUdHO0lBQ0ksTUFBTSxDQUFVLG9CQUFvQixHQUFHLElBQUksb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUUvRjs7O09BR0c7SUFDSSxNQUFNLENBQVUsbUJBQW1CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRTdGOztPQUVHO0lBQ2EsS0FBSyxDQUFTO0lBRTlCLFlBQW1CLEtBQWE7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBcEJILG9EQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi9wb2xpY3ktc3RhdGVtZW50JztcblxuLyoqXG4gKiBWYWxpZGF0aW9uIG1vZGUgZm9yIENlZGFyIHBvbGljeSBkZWZpbml0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBQb2xpY3lWYWxpZGF0aW9uTW9kZSB7XG4gIC8qKlxuICAgKiBGYWlsIHBvbGljeSBjcmVhdGlvbiBpZiBhbnkgdmFsaWRhdGlvbiBmaW5kaW5ncyBhcmUgZGV0ZWN0ZWQuXG4gICAqIFRoaXMgaXMgdGhlIHNhZmVyIGRlZmF1bHQgLSBjYXRjaGVzIHBvbGljeSBlcnJvcnMgZWFybHkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZBSUxfT05fQU5ZX0ZJTkRJTkdTID0gbmV3IFBvbGljeVZhbGlkYXRpb25Nb2RlKCdGQUlMX09OX0FOWV9GSU5ESU5HUycpO1xuXG4gIC8qKlxuICAgKiBJZ25vcmUgYWxsIHZhbGlkYXRpb24gZmluZGluZ3MgYW5kIGNyZWF0ZSB0aGUgcG9saWN5IGFueXdheS5cbiAgICogVXNlIHdpdGggY2F1dGlvbiAtIG1heSByZXN1bHQgaW4gcnVudGltZSBhdXRob3JpemF0aW9uIGVycm9ycy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSUdOT1JFX0FMTF9GSU5ESU5HUyA9IG5ldyBQb2xpY3lWYWxpZGF0aW9uTW9kZSgnSUdOT1JFX0FMTF9GSU5ESU5HUycpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHZhbHVlIG9mIHRoZSB2YWxpZGF0aW9uIG1vZGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIHBvbGljeSB2aWEgUG9saWN5RW5naW5lLmFkZFBvbGljeSgpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUG9saWN5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDZWRhciBwb2xpY3kgc3RhdGVtZW50ICgzNS0xNTMsNjAwIGNoYXJhY3RlcnMpLlxuICAgKlxuICAgKiBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgZGVmaW5pdGlvbmAgb3IgYHN0YXRlbWVudGAsIGJ1dCBub3QgYm90aC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBNdXN0IHByb3ZpZGUgZWl0aGVyIGRlZmluaXRpb24gb3Igc3RhdGVtZW50XG4gICAqL1xuICByZWFkb25seSBkZWZpbml0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlLXNhZmUgQ2VkYXIgcG9saWN5IHN0YXRlbWVudCBidWlsdCB1c2luZyBQb2xpY3lTdGF0ZW1lbnQgYnVpbGRlci5cbiAgICpcbiAgICogVXNlIHRoaXMgZm9yIGEgdHlwZS1zYWZlLCBmb3JtLWxpa2UgQVBJIHRvIGJ1aWxkIENlZGFyIHBvbGljaWVzIHdpdGhvdXRcbiAgICogd3JpdGluZyByYXcgQ2VkYXIgc3ludGF4LiBUaGUgYnVpbGRlciB2YWxpZGF0ZXMgYXQgc3ludGhlc2lzIHRpbWUuXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBkZWZpbml0aW9uYCBvciBgc3RhdGVtZW50YCwgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE11c3QgcHJvdmlkZSBlaXRoZXIgZGVmaW5pdGlvbiBvciBzdGF0ZW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlbWVudD86IFBvbGljeVN0YXRlbWVudDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICogVmFsaWQgY2hhcmFjdGVyczogYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSlcbiAgICogTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCAxLTQ4IGNoYXJhY3RlcnNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvLWdlbmVyYXRlZCB1bmlxdWUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBwb2xpY3kgKG1heCA0LDA5NiBjaGFyYWN0ZXJzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gbW9kZSBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgUG9saWN5VmFsaWRhdGlvbk1vZGUuRkFJTF9PTl9BTllfRklORElOR1NcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRpb25Nb2RlPzogUG9saWN5VmFsaWRhdGlvbk1vZGU7XG59XG4iXX0=
@@ -0,0 +1,127 @@
1
+ import * as iam from 'aws-cdk-lib/aws-iam';
2
+ import type { Construct } from 'constructs';
3
+ import type { IPolicy, PolicyAttributes } from './policy-base';
4
+ import { PolicyBase } from './policy-base';
5
+ import type { IPolicyEngine } from './policy-engine-base';
6
+ import type { PolicyStatement } from './policy-statement';
7
+ import { PolicyValidationMode } from './policy-types';
8
+ /**
9
+ * Properties for creating a Policy resource
10
+ */
11
+ export interface PolicyProps {
12
+ /**
13
+ * The name of the policy.
14
+ * Valid characters: a-z, A-Z, 0-9, _ (underscore)
15
+ * Must start with a letter, 1-48 characters
16
+ * Pattern: ^[A-Za-z][A-Za-z0-9_]*$
17
+ *
18
+ * @default - Auto-generated unique name
19
+ */
20
+ readonly policyName?: string;
21
+ /**
22
+ * The policy engine this policy belongs to.
23
+ * [disable-awslint:prefer-ref-interface]
24
+ */
25
+ readonly policyEngine: IPolicyEngine;
26
+ /**
27
+ * Cedar policy statement.
28
+ * The authorization policy written in Cedar policy language.
29
+ *
30
+ * Cedar supports permit and forbid rules with conditions.
31
+ * The statement will be wrapped in a PolicyDefinition structure internally.
32
+ *
33
+ * Pass the raw Cedar statement as a string. For example:
34
+ * - "permit(principal, action, resource);"
35
+ * - "permit(principal in Group::\"Admins\", action == Action::\"InvokeModel\", resource) when { context.environment == \"production\" };"
36
+ *
37
+ * You must specify either `definition` or `statement`, but not both.
38
+ *
39
+ * @default - Must provide either definition or statement
40
+ */
41
+ readonly definition?: string;
42
+ /**
43
+ * Type-safe Cedar policy statement built using PolicyStatement builder.
44
+ *
45
+ * Use this for a type-safe, form-like API to build Cedar policies without
46
+ * writing raw Cedar syntax. The builder validates at synthesis time.
47
+ *
48
+ * You must specify either `definition` or `statement`, but not both.
49
+ *
50
+ * @default - Must provide either definition or statement
51
+ */
52
+ readonly statement?: PolicyStatement;
53
+ /**
54
+ * Optional description for the policy.
55
+ * Maximum length of 4096.
56
+ * @default - No description
57
+ */
58
+ readonly description?: string;
59
+ /**
60
+ * Validation mode for the policy.
61
+ * Controls how Cedar analyzer validation findings are handled.
62
+ *
63
+ * @default PolicyValidationMode.FAIL_ON_ANY_FINDINGS
64
+ */
65
+ readonly validationMode?: PolicyValidationMode;
66
+ }
67
+ /**
68
+ * Individual Cedar policy defining what agents can access.
69
+ * Policies use Cedar language to specify precise access control rules
70
+ * that are evaluated deterministically by the PolicyEngine.
71
+ *
72
+ * @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy.html
73
+ * @resource AWS::BedrockAgentCore::Policy
74
+ */
75
+ export declare class Policy extends PolicyBase {
76
+ /** Uniquely identifies this class. */
77
+ static readonly PROPERTY_INJECTION_ID: string;
78
+ /**
79
+ * Creates a Policy reference from an existing policy's attributes.
80
+ *
81
+ * @param scope - The construct scope
82
+ * @param id - Identifier of the construct
83
+ * @param attrs - Attributes of the existing policy
84
+ * @returns An IPolicy reference to the existing policy
85
+ */
86
+ static fromPolicyAttributes(scope: Construct, id: string, attrs: PolicyAttributes): IPolicy;
87
+ /**
88
+ * The ARN of the policy resource.
89
+ * @attribute
90
+ */
91
+ readonly policyArn: string;
92
+ /**
93
+ * The name of the policy.
94
+ *
95
+ * [disable-awslint:attribute-tag]
96
+ */
97
+ readonly policyName: string;
98
+ /**
99
+ * The ID of the policy.
100
+ * @attribute
101
+ */
102
+ readonly policyId: string;
103
+ /**
104
+ * The policy engine this policy belongs to.
105
+ *
106
+ * [disable-awslint:attribute-tag]
107
+ */
108
+ readonly policyEngine: IPolicyEngine;
109
+ /**
110
+ * The Cedar policy definition.
111
+ */
112
+ readonly definition: string;
113
+ /**
114
+ * The description of the policy.
115
+ */
116
+ readonly description?: string;
117
+ /**
118
+ * The validation mode for the policy.
119
+ */
120
+ readonly validationMode?: PolicyValidationMode;
121
+ /**
122
+ * The principal to grant permissions to.
123
+ */
124
+ readonly grantPrincipal: iam.IPrincipal;
125
+ private readonly __resource;
126
+ constructor(scope: Construct, id: string, props: PolicyProps);
127
+ }
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.Policy = void 0;
38
+ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
39
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
41
+ const aws_bedrockagentcore_1 = require("aws-cdk-lib/aws-bedrockagentcore");
42
+ const iam = require("aws-cdk-lib/aws-iam");
43
+ const errors_1 = require("aws-cdk-lib/core/lib/errors");
44
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
45
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
46
+ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
47
+ const policy_base_1 = require("./policy-base");
48
+ const policy_types_1 = require("./policy-types");
49
+ const validation_helpers_1 = require("./validation-helpers");
50
+ /**
51
+ * Individual Cedar policy defining what agents can access.
52
+ * Policies use Cedar language to specify precise access control rules
53
+ * that are evaluated deterministically by the PolicyEngine.
54
+ *
55
+ * @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/policy.html
56
+ * @resource AWS::BedrockAgentCore::Policy
57
+ */
58
+ let Policy = (() => {
59
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
60
+ let _classDescriptor;
61
+ let _classExtraInitializers = [];
62
+ let _classThis;
63
+ let _classSuper = policy_base_1.PolicyBase;
64
+ var Policy = class extends _classSuper {
65
+ static { _classThis = this; }
66
+ static {
67
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
68
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
69
+ Policy = _classThis = _classDescriptor.value;
70
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
71
+ }
72
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Policy", version: "2.252.0-alpha.0" };
73
+ /** Uniquely identifies this class. */
74
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Policy';
75
+ /**
76
+ * Creates a Policy reference from an existing policy's attributes.
77
+ *
78
+ * @param scope - The construct scope
79
+ * @param id - Identifier of the construct
80
+ * @param attrs - Attributes of the existing policy
81
+ * @returns An IPolicy reference to the existing policy
82
+ */
83
+ static fromPolicyAttributes(scope, id, attrs) {
84
+ try {
85
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_PolicyAttributes(attrs);
86
+ }
87
+ catch (error) {
88
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
89
+ Error.captureStackTrace(error, this.fromPolicyAttributes);
90
+ }
91
+ throw error;
92
+ }
93
+ class Import extends policy_base_1.PolicyBase {
94
+ policyArn = attrs.policyArn;
95
+ policyId = aws_cdk_lib_1.Arn.split(attrs.policyArn, aws_cdk_lib_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName;
96
+ policyName = this.policyId;
97
+ description = undefined;
98
+ validationMode = undefined;
99
+ policyEngine = attrs.policyEngine;
100
+ grantPrincipal = new iam.UnknownPrincipal({ resource: this });
101
+ }
102
+ return new Import(scope, id);
103
+ }
104
+ // ------------------------------------------------------
105
+ // Attributes
106
+ // ------------------------------------------------------
107
+ /**
108
+ * The ARN of the policy resource.
109
+ * @attribute
110
+ */
111
+ policyArn;
112
+ /**
113
+ * The name of the policy.
114
+ *
115
+ * [disable-awslint:attribute-tag]
116
+ */
117
+ policyName;
118
+ /**
119
+ * The ID of the policy.
120
+ * @attribute
121
+ */
122
+ policyId;
123
+ /**
124
+ * The policy engine this policy belongs to.
125
+ *
126
+ * [disable-awslint:attribute-tag]
127
+ */
128
+ policyEngine;
129
+ /**
130
+ * The Cedar policy definition.
131
+ */
132
+ definition;
133
+ /**
134
+ * The description of the policy.
135
+ */
136
+ description;
137
+ /**
138
+ * The validation mode for the policy.
139
+ */
140
+ validationMode;
141
+ /**
142
+ * The principal to grant permissions to.
143
+ */
144
+ grantPrincipal;
145
+ // ------------------------------------------------------
146
+ // Internal Only
147
+ // ------------------------------------------------------
148
+ __resource;
149
+ // ------------------------------------------------------
150
+ // CONSTRUCTOR
151
+ // ------------------------------------------------------
152
+ constructor(scope, id, props) {
153
+ super(scope, id, {
154
+ // Maximum name length of 48 characters
155
+ physicalName: props?.policyName ??
156
+ aws_cdk_lib_1.Lazy.string({
157
+ produce: () => aws_cdk_lib_1.Names.uniqueResourceName(this, { maxLength: 48 }),
158
+ }),
159
+ });
160
+ try {
161
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_PolicyProps(props);
162
+ }
163
+ catch (error) {
164
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
165
+ Error.captureStackTrace(error, Policy);
166
+ }
167
+ throw error;
168
+ }
169
+ // Enhanced CDK Analytics Telemetry
170
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
171
+ // ------------------------------------------------------
172
+ // Validate definition vs statement
173
+ // ------------------------------------------------------
174
+ if (!props.definition && !props.statement) {
175
+ throw new errors_1.ValidationError((0, helpers_internal_1.lit) `PolicyDefinitionRequired`, `Policy '${this.physicalName}' must specify either 'definition' (raw Cedar string) or 'statement' (PolicyStatement builder), but neither was provided.`, this);
176
+ }
177
+ if (props.definition && props.statement) {
178
+ throw new errors_1.ValidationError((0, helpers_internal_1.lit) `PolicyDefinitionConflict`, `Policy '${this.physicalName}' must specify either 'definition' OR 'statement', but not both. ` +
179
+ 'Use definition for raw Cedar strings, or statement for the type-safe builder.', this);
180
+ }
181
+ // ------------------------------------------------------
182
+ // Set properties and defaults
183
+ // ------------------------------------------------------
184
+ this.policyName = this.physicalName;
185
+ this.policyEngine = props.policyEngine;
186
+ this.definition = props.statement ? props.statement.toCedar() : props.definition;
187
+ this.description = props.description;
188
+ this.validationMode = props.validationMode ?? policy_types_1.PolicyValidationMode.FAIL_ON_ANY_FINDINGS;
189
+ this.grantPrincipal = new iam.ServicePrincipal('bedrock-agentcore.amazonaws.com');
190
+ // ------------------------------------------------------
191
+ // Validations
192
+ // ------------------------------------------------------
193
+ (0, validation_helpers_1.throwIfInvalidPolicyName)(this.policyName, this);
194
+ (0, validation_helpers_1.throwIfInvalidPolicyDefinition)(this.definition, this);
195
+ if (this.description) {
196
+ (0, validation_helpers_1.throwIfInvalidDescription)(this.description, this);
197
+ }
198
+ // ------------------------------------------------------
199
+ // CFN Props
200
+ // ------------------------------------------------------
201
+ const cfnProps = {
202
+ name: this.policyName,
203
+ policyEngineId: this.policyEngine.policyEngineId,
204
+ definition: {
205
+ cedar: {
206
+ statement: this.definition,
207
+ },
208
+ },
209
+ description: this.description,
210
+ validationMode: this.validationMode?.value,
211
+ };
212
+ this.__resource = new aws_bedrockagentcore_1.CfnPolicy(this, 'Resource', cfnProps);
213
+ // Create dependency ONLY on the PolicyEngine's CFN resource to avoid circular dependencies with the PolicyEngine construct
214
+ this.__resource.node.addDependency(this.policyEngine.node.defaultChild);
215
+ this.policyId = this.__resource.attrPolicyId;
216
+ this.policyArn = this.__resource.attrPolicyArn;
217
+ }
218
+ static {
219
+ __runInitializers(_classThis, _classExtraInitializers);
220
+ }
221
+ };
222
+ return Policy = _classThis;
223
+ })();
224
+ exports.Policy = Policy;
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwRDtBQUUxRCwyRUFBNkQ7QUFDN0QsMkNBQTJDO0FBQzNDLHdEQUE4RDtBQUM5RCw0RUFBNEQ7QUFDNUQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUkxRSwrQ0FBMkM7QUFHM0MsaURBQXNEO0FBQ3RELDZEQUEySDtBQW1FM0g7Ozs7Ozs7R0FPRztJQUVVLE1BQU07NEJBRGxCLG9DQUFrQjs7OztzQkFDUyx3QkFBVTtzQkFBbEIsU0FBUSxXQUFVOzs7O1lBQXRDLDZLQXFLQzs7Ozs7UUFwS0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw2Q0FBNkMsQ0FBQztRQUVyRzs7Ozs7OztXQU9HO1FBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCOzs7Ozs7Ozs7O1lBQ3RGLE1BQU0sTUFBTyxTQUFRLHdCQUFVO2dCQUNiLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUM1QixRQUFRLEdBQUcsaUJBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBYSxDQUFDO2dCQUNuRixVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsV0FBVyxHQUFHLFNBQVMsQ0FBQztnQkFDeEIsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDM0IsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQy9FO1lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFB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QUMsQ0FBQztZQUNwRCxDQUFDO1lBRUQseURBQXlEO1lBQ3pELFlBQVk7WUFDWix5REFBeUQ7WUFDekQsTUFBTSxRQUFRLEdBQW1CO2dCQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ3JCLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWM7Z0JBQ2hELFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUU7d0JBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO3FCQUMzQjtpQkFDRjtnQkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUs7YUFDM0MsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQ0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFNUQsMkhBQTJIO1lBQzNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsQ0FBQztZQUV6RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7U0FDaEQ7O1lBcEtVLHVEQUFNOzs7OztBQUFOLHdCQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuLCBBcm5Gb3JtYXQsIExhenksIE5hbWVzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5Qb2xpY3lQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCB7IENmblBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1iZWRyb2NrYWdlbnRjb3JlJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2Vycm9ycyc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG4vLyBJbnRlcm5hbCBpbXBvcnRzXG5pbXBvcnQgdHlwZSB7IElQb2xpY3ksIFBvbGljeUF0dHJpYnV0ZXMgfSBmcm9tICcuL3BvbGljeS1iYXNlJztcbmltcG9ydCB7IFBvbGljeUJhc2UgfSBmcm9tICcuL3BvbGljeS1iYXNlJztcbmltcG9ydCB0eXBlIHsgSVBvbGljeUVuZ2luZSB9IGZyb20gJy4vcG9saWN5LWVuZ2luZS1iYXNlJztcbmltcG9ydCB0eXBlIHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi9wb2xpY3ktc3RhdGVtZW50JztcbmltcG9ydCB7IFBvbGljeVZhbGlkYXRpb25Nb2RlIH0gZnJvbSAnLi9wb2xpY3ktdHlwZXMnO1xuaW1wb3J0IHsgdGhyb3dJZkludmFsaWRQb2xpY3lOYW1lLCB0aHJvd0lmSW52YWxpZERlc2NyaXB0aW9uLCB0aHJvd0lmSW52YWxpZFBvbGljeURlZmluaXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBQb2xpY3kgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xpY3lQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKiBWYWxpZCBjaGFyYWN0ZXJzOiBhLXosIEEtWiwgMC05LCBfICh1bmRlcnNjb3JlKVxuICAgKiBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIDEtNDggY2hhcmFjdGVyc1xuICAgKiBQYXR0ZXJuOiBeW0EtWmEtel1bQS1aYS16MC05X10qJFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG8tZ2VuZXJhdGVkIHVuaXF1ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBwb2xpY3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9saWN5IGVuZ2luZSB0aGlzIHBvbGljeSBiZWxvbmdzIHRvLlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OnByZWZlci1yZWYtaW50ZXJmYWNlXVxuICAgKi9cbiAgcmVhZG9ubHkgcG9saWN5RW5naW5lOiBJUG9saWN5RW5naW5lO1xuXG4gIC8qKlxuICAgKiBDZWRhciBwb2xpY3kgc3RhdGVtZW50LlxuICAgKiBUaGUgYXV0aG9yaXphdGlvbiBwb2xpY3kgd3JpdHRlbiBpbiBDZWRhciBwb2xpY3kgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIENlZGFyIHN1cHBvcnRzIHBlcm1pdCBhbmQgZm9yYmlkIHJ1bGVzIHdpdGggY29uZGl0aW9ucy5cbiAgICogVGhlIHN0YXRlbWVudCB3aWxsIGJlIHdyYXBwZWQgaW4gYSBQb2xpY3lEZWZpbml0aW9uIHN0cnVjdHVyZSBpbnRlcm5hbGx5LlxuICAgKlxuICAgKiBQYXNzIHRoZSByYXcgQ2VkYXIgc3RhdGVtZW50IGFzIGEgc3RyaW5nLiBGb3IgZXhhbXBsZTpcbiAgICogLSBcInBlcm1pdChwcmluY2lwYWwsIGFjdGlvbiwgcmVzb3VyY2UpO1wiXG4gICAqIC0gXCJwZXJtaXQocHJpbmNpcGFsIGluIEdyb3VwOjpcXFwiQWRtaW5zXFxcIiwgYWN0aW9uID09IEFjdGlvbjo6XFxcIkludm9rZU1vZGVsXFxcIiwgcmVzb3VyY2UpIHdoZW4geyBjb250ZXh0LmVudmlyb25tZW50ID09IFxcXCJwcm9kdWN0aW9uXFxcIiB9O1wiXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGBkZWZpbml0aW9uYCBvciBgc3RhdGVtZW50YCwgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE11c3QgcHJvdmlkZSBlaXRoZXIgZGVmaW5pdGlvbiBvciBzdGF0ZW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUtc2FmZSBDZWRhciBwb2xpY3kgc3RhdGVtZW50IGJ1aWx0IHVzaW5nIFBvbGljeVN0YXRlbWVudCBidWlsZGVyLlxuICAgKlxuICAgKiBVc2UgdGhpcyBmb3IgYSB0eXBlLXNhZmUsIGZvcm0tbGlrZSBBUEkgdG8gYnVpbGQgQ2VkYXIgcG9saWNpZXMgd2l0aG91dFxuICAgKiB3cml0aW5nIHJhdyBDZWRhciBzeW50YXguIFRoZSBidWlsZGVyIHZhbGlkYXRlcyBhdCBzeW50aGVzaXMgdGltZS5cbiAgICpcbiAgICogWW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgYGRlZmluaXRpb25gIG9yIGBzdGF0ZW1lbnRgLCBidXQgbm90IGJvdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTXVzdCBwcm92aWRlIGVpdGhlciBkZWZpbml0aW9uIG9yIHN0YXRlbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVtZW50PzogUG9saWN5U3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkZXNjcmlwdGlvbiBmb3IgdGhlIHBvbGljeS5cbiAgICogTWF4aW11bSBsZW5ndGggb2YgNDA5Ni5cbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRpb24gbW9kZSBmb3IgdGhlIHBvbGljeS5cbiAgICogQ29udHJvbHMgaG93IENlZGFyIGFuYWx5emVyIHZhbGlkYXRpb24gZmluZGluZ3MgYXJlIGhhbmRsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFBvbGljeVZhbGlkYXRpb25Nb2RlLkZBSUxfT05fQU5ZX0ZJTkRJTkdTXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0aW9uTW9kZT86IFBvbGljeVZhbGlkYXRpb25Nb2RlO1xufVxuXG4vKipcbiAqIEluZGl2aWR1YWwgQ2VkYXIgcG9saWN5IGRlZmluaW5nIHdoYXQgYWdlbnRzIGNhbiBhY2Nlc3MuXG4gKiBQb2xpY2llcyB1c2UgQ2VkYXIgbGFuZ3VhZ2UgdG8gc3BlY2lmeSBwcmVjaXNlIGFjY2VzcyBjb250cm9sIHJ1bGVzXG4gKiB0aGF0IGFyZSBldmFsdWF0ZWQgZGV0ZXJtaW5pc3RpY2FsbHkgYnkgdGhlIFBvbGljeUVuZ2luZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvcG9saWN5Lmh0bWxcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlBvbGljeVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgUG9saWN5IGV4dGVuZHMgUG9saWN5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLlBvbGljeSc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBQb2xpY3kgcmVmZXJlbmNlIGZyb20gYW4gZXhpc3RpbmcgcG9saWN5J3MgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgLSBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIC0gQXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgcG9saWN5XG4gICAqIEByZXR1cm5zIEFuIElQb2xpY3kgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyBwb2xpY3lcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBvbGljeUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFBvbGljeUF0dHJpYnV0ZXMpOiBJUG9saWN5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lBcm4gPSBhdHRycy5wb2xpY3lBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5SWQgPSBBcm4uc3BsaXQoYXR0cnMucG9saWN5QXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lOYW1lID0gdGhpcy5wb2xpY3lJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSB2YWxpZGF0aW9uTW9kZSA9IHVuZGVmaW5lZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwb2xpY3lFbmdpbmUgPSBhdHRycy5wb2xpY3lFbmdpbmU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWwgPSBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEF0dHJpYnV0ZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHBvbGljeSByZXNvdXJjZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50OmF0dHJpYnV0ZS10YWddXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHBvbGljeS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvbGljeUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgZW5naW5lIHRoaXMgcG9saWN5IGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6YXR0cmlidXRlLXRhZ11cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwb2xpY3lFbmdpbmU6IElQb2xpY3lFbmdpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBDZWRhciBwb2xpY3kgZGVmaW5pdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZWZpbml0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsaWRhdGlvbiBtb2RlIGZvciB0aGUgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbGlkYXRpb25Nb2RlPzogUG9saWN5VmFsaWRhdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG8uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBJbnRlcm5hbCBPbmx5XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcml2YXRlIHJlYWRvbmx5IF9fcmVzb3VyY2U6IENmblBvbGljeTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQ09OU1RSVUNUT1JcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLy8gTWF4aW11bSBuYW1lIGxlbmd0aCBvZiA0OCBjaGFyYWN0ZXJzXG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzPy5wb2xpY3lOYW1lID8/XG4gICAgICAgIExhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDQ4IH0pLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGUgZGVmaW5pdGlvbiB2cyBzdGF0ZW1lbnRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBpZiAoIXByb3BzLmRlZmluaXRpb24gJiYgIXByb3BzLnN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFBvbGljeURlZmluaXRpb25SZXF1aXJlZGAsXG4gICAgICAgIGBQb2xpY3kgJyR7dGhpcy5waHlzaWNhbE5hbWV9JyBtdXN0IHNwZWNpZnkgZWl0aGVyICdkZWZpbml0aW9uJyAocmF3IENlZGFyIHN0cmluZykgb3IgJ3N0YXRlbWVudCcgKFBvbGljeVN0YXRlbWVudCBidWlsZGVyKSwgYnV0IG5laXRoZXIgd2FzIHByb3ZpZGVkLmAsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5kZWZpbml0aW9uICYmIHByb3BzLnN0YXRlbWVudCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgbGl0YFBvbGljeURlZmluaXRpb25Db25mbGljdGAsXG4gICAgICAgIGBQb2xpY3kgJyR7dGhpcy5waHlzaWNhbE5hbWV9JyBtdXN0IHNwZWNpZnkgZWl0aGVyICdkZWZpbml0aW9uJyBPUiAnc3RhdGVtZW50JywgYnV0IG5vdCBib3RoLiBgICtcbiAgICAgICAgJ1VzZSBkZWZpbml0aW9uIGZvciByYXcgQ2VkYXIgc3RyaW5ncywgb3Igc3RhdGVtZW50IGZvciB0aGUgdHlwZS1zYWZlIGJ1aWxkZXIuJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2V0IHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5wb2xpY3lOYW1lID0gdGhpcy5waHlzaWNhbE5hbWU7XG4gICAgdGhpcy5wb2xpY3lFbmdpbmUgPSBwcm9wcy5wb2xpY3lFbmdpbmU7XG5cbiAgICB0aGlzLmRlZmluaXRpb24gPSBwcm9wcy5zdGF0ZW1lbnQgPyBwcm9wcy5zdGF0ZW1lbnQudG9DZWRhcigpIDogcHJvcHMuZGVmaW5pdGlvbiE7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy52YWxpZGF0aW9uTW9kZSA9IHByb3BzLnZhbGlkYXRpb25Nb2RlID8/IFBvbGljeVZhbGlkYXRpb25Nb2RlLkZBSUxfT05fQU5ZX0ZJTkRJTkdTO1xuXG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGlvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHRocm93SWZJbnZhbGlkUG9saWN5TmFtZSh0aGlzLnBvbGljeU5hbWUsIHRoaXMpO1xuXG4gICAgdGhyb3dJZkludmFsaWRQb2xpY3lEZWZpbml0aW9uKHRoaXMuZGVmaW5pdGlvbiwgdGhpcyk7XG5cbiAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhyb3dJZkludmFsaWREZXNjcmlwdGlvbih0aGlzLmRlc2NyaXB0aW9uLCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDRk4gUHJvcHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjZm5Qcm9wczogQ2ZuUG9saWN5UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLnBvbGljeU5hbWUsXG4gICAgICBwb2xpY3lFbmdpbmVJZDogdGhpcy5wb2xpY3lFbmdpbmUucG9saWN5RW5naW5lSWQsXG4gICAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGNlZGFyOiB7XG4gICAgICAgICAgc3RhdGVtZW50OiB0aGlzLmRlZmluaXRpb24sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICB2YWxpZGF0aW9uTW9kZTogdGhpcy52YWxpZGF0aW9uTW9kZT8udmFsdWUsXG4gICAgfTtcblxuICAgIHRoaXMuX19yZXNvdXJjZSA9IG5ldyBDZm5Qb2xpY3kodGhpcywgJ1Jlc291cmNlJywgY2ZuUHJvcHMpO1xuXG4gICAgLy8gQ3JlYXRlIGRlcGVuZGVuY3kgT05MWSBvbiB0aGUgUG9saWN5RW5naW5lJ3MgQ0ZOIHJlc291cmNlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIHRoZSBQb2xpY3lFbmdpbmUgY29uc3RydWN0XG4gICAgdGhpcy5fX3Jlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLnBvbGljeUVuZ2luZS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgdGhpcy5wb2xpY3lJZCA9IHRoaXMuX19yZXNvdXJjZS5hdHRyUG9saWN5SWQ7XG4gICAgdGhpcy5wb2xpY3lBcm4gPSB0aGlzLl9fcmVzb3VyY2UuYXR0clBvbGljeUFybjtcbiAgfVxufVxuXG4iXX0=
@@ -0,0 +1,139 @@
1
+ import type { IConstruct } from 'constructs';
2
+ /**
3
+ * Validation constants for PolicyEngine
4
+ */
5
+ export declare const POLICY_ENGINE_NAME_MIN_LENGTH = 1;
6
+ export declare const POLICY_ENGINE_NAME_MAX_LENGTH = 48;
7
+ export declare const POLICY_ENGINE_NAME_PATTERN: RegExp;
8
+ /**
9
+ * Validation constants for Policy
10
+ */
11
+ export declare const POLICY_NAME_MIN_LENGTH = 1;
12
+ export declare const POLICY_NAME_MAX_LENGTH = 48;
13
+ export declare const POLICY_NAME_PATTERN: RegExp;
14
+ /**
15
+ * Validation constants for Cedar policy definitions
16
+ */
17
+ export declare const POLICY_DEFINITION_MIN_LENGTH = 35;
18
+ export declare const POLICY_DEFINITION_MAX_LENGTH = 153600;
19
+ /**
20
+ * Validation constants for descriptions
21
+ */
22
+ export declare const DESCRIPTION_MAX_LENGTH = 4096;
23
+ /**
24
+ * Validation constants for tags
25
+ */
26
+ export declare const MAX_TAGS = 50;
27
+ export declare const TAG_KEY_MIN_LENGTH = 1;
28
+ export declare const TAG_KEY_MAX_LENGTH = 128;
29
+ export declare const TAG_VALUE_MAX_LENGTH = 256;
30
+ export declare const TAG_KEY_PATTERN: RegExp;
31
+ export declare const TAG_VALUE_PATTERN: RegExp;
32
+ /**
33
+ * Validates a policy engine name.
34
+ * Names must:
35
+ * - Start with a letter (a-z, A-Z)
36
+ * - Contain only letters, numbers, and underscores
37
+ * - Be between 1 and 48 characters
38
+ *
39
+ * @param name - The policy engine name to validate
40
+ * @param scope - The construct scope for error reporting (optional)
41
+ * @returns Array of validation error messages, empty if valid
42
+ */
43
+ export declare function validatePolicyEngineName(name: string, scope?: IConstruct): string[];
44
+ /**
45
+ * Validates a policy name.
46
+ * Names must:
47
+ * - Start with a letter (a-z, A-Z)
48
+ * - Contain only letters, numbers, and underscores
49
+ * - Be between 1 and 48 characters
50
+ *
51
+ * @param name - The policy name to validate
52
+ * @param scope - The construct scope for error reporting (optional)
53
+ * @returns Array of validation error messages, empty if valid
54
+ */
55
+ export declare function validatePolicyName(name: string, scope?: IConstruct): string[];
56
+ /**
57
+ * Validates a Cedar policy definition string.
58
+ * Definitions must be between 35 and 153,600 characters.
59
+ *
60
+ * @param definition - The Cedar policy definition to validate
61
+ * @param scope - The construct scope for error reporting (optional)
62
+ * @returns Array of validation error messages, empty if valid
63
+ */
64
+ export declare function validatePolicyDefinition(definition: string, scope?: IConstruct): string[];
65
+ /**
66
+ * Validates a description string.
67
+ * Descriptions must not exceed 4,096 characters.
68
+ *
69
+ * @param description - The description to validate
70
+ * @param scope - The construct scope for error reporting (optional)
71
+ * @returns Array of validation error messages, empty if valid
72
+ */
73
+ export declare function validateDescription(description: string, scope?: IConstruct): string[];
74
+ /**
75
+ * Validates a policy engine name and throws if invalid.
76
+ *
77
+ * @param name - The policy engine name to validate
78
+ * @param scope - The construct scope for error reporting (optional)
79
+ * @returns The validated name
80
+ * @throws ValidationError if validation fails
81
+ */
82
+ export declare function throwIfInvalidPolicyEngineName(name: string, scope?: IConstruct): string;
83
+ /**
84
+ * Validates a policy name and throws if invalid.
85
+ *
86
+ * @param name - The policy name to validate
87
+ * @param scope - The construct scope for error reporting (optional)
88
+ * @returns The validated name
89
+ * @throws ValidationError if validation fails
90
+ */
91
+ export declare function throwIfInvalidPolicyName(name: string, scope?: IConstruct): string;
92
+ /**
93
+ * Validates a policy definition and throws if invalid.
94
+ *
95
+ * @param definition - The Cedar policy definition to validate
96
+ * @param scope - The construct scope for error reporting (optional)
97
+ * @returns The validated definition
98
+ * @throws ValidationError if validation fails
99
+ */
100
+ export declare function throwIfInvalidPolicyDefinition(definition: string, scope?: IConstruct): string;
101
+ /**
102
+ * Validates a description and throws if invalid.
103
+ *
104
+ * @param description - The description to validate
105
+ * @param scope - The construct scope for error reporting (optional)
106
+ * @returns The validated description
107
+ * @throws ValidationError if validation fails
108
+ */
109
+ export declare function throwIfInvalidDescription(description: string, scope?: IConstruct): string;
110
+ /**
111
+ * Validates tags for a PolicyEngine.
112
+ * Tags must:
113
+ * - Not exceed 50 tags
114
+ * - Have keys between 1 and 128 characters
115
+ * - Have values between 0 and 256 characters
116
+ * - Match allowed character patterns
117
+ *
118
+ * @param tags - The tags object to validate
119
+ * @param resourceName - The name of the resource being tagged (for error messages)
120
+ * @param scope - The construct scope for error reporting (optional)
121
+ * @returns Array of validation error messages, empty if valid
122
+ */
123
+ export declare function validateTags(tags: {
124
+ [key: string]: string;
125
+ }, resourceName: string, _scope?: IConstruct): string[];
126
+ /**
127
+ * Validates tags and throws if invalid.
128
+ *
129
+ * @param tags - The tags object to validate
130
+ * @param resourceName - The name of the resource being tagged (for error messages)
131
+ * @param scope - The construct scope for error reporting (optional)
132
+ * @returns The validated tags
133
+ * @throws ValidationError if validation fails
134
+ */
135
+ export declare function throwIfInvalidTags(tags: {
136
+ [key: string]: string;
137
+ }, resourceName: string, scope?: IConstruct): {
138
+ [key: string]: string;
139
+ };