@aws-cdk/aws-bedrock-agentcore-alpha 2.252.0-alpha.0 → 2.253.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 (61) hide show
  1. package/.jsii +11191 -7249
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +30 -0
  4. package/README.md +422 -0
  5. package/lib/evaluation/custom-evaluator.d.ts +153 -0
  6. package/lib/evaluation/custom-evaluator.js +256 -0
  7. package/lib/evaluation/data-source.d.ts +106 -0
  8. package/lib/evaluation/data-source.js +156 -0
  9. package/lib/evaluation/evaluator-base.d.ts +82 -0
  10. package/lib/evaluation/evaluator-base.js +55 -0
  11. package/lib/evaluation/evaluator-config.d.ts +195 -0
  12. package/lib/evaluation/evaluator-config.js +184 -0
  13. package/lib/evaluation/evaluator.d.ts +68 -0
  14. package/lib/evaluation/evaluator.js +90 -0
  15. package/lib/evaluation/online-evaluation-base.d.ts +96 -0
  16. package/lib/evaluation/online-evaluation-base.js +55 -0
  17. package/lib/evaluation/online-evaluation.d.ts +134 -0
  18. package/lib/evaluation/online-evaluation.js +388 -0
  19. package/lib/evaluation/perms.d.ts +34 -0
  20. package/lib/evaluation/perms.js +53 -0
  21. package/lib/evaluation/types.d.ts +461 -0
  22. package/lib/evaluation/types.js +229 -0
  23. package/lib/evaluation/validation-helpers.d.ts +133 -0
  24. package/lib/evaluation/validation-helpers.js +349 -0
  25. package/lib/gateway/gateway-base.js +1 -1
  26. package/lib/gateway/gateway.js +2 -2
  27. package/lib/gateway/inbound-auth/authorizer.js +4 -4
  28. package/lib/gateway/inbound-auth/custom-claim.js +1 -1
  29. package/lib/gateway/interceptor.js +1 -1
  30. package/lib/gateway/outbound-auth/api-key.js +1 -1
  31. package/lib/gateway/outbound-auth/credential-provider.js +1 -1
  32. package/lib/gateway/protocol.js +2 -2
  33. package/lib/gateway/targets/schema/api-schema.js +4 -4
  34. package/lib/gateway/targets/schema/tool-schema.js +4 -4
  35. package/lib/gateway/targets/target-base.js +1 -1
  36. package/lib/gateway/targets/target-configuration.js +6 -6
  37. package/lib/gateway/targets/target.js +1 -1
  38. package/lib/index.d.ts +9 -0
  39. package/lib/index.js +13 -1
  40. package/lib/memory/memory-strategy.js +1 -1
  41. package/lib/memory/memory.js +2 -2
  42. package/lib/memory/strategies/managed-strategy.js +1 -1
  43. package/lib/memory/strategies/self-managed-strategy.js +8 -5
  44. package/lib/network/network-configuration.js +4 -4
  45. package/lib/policy/policy-base.js +1 -1
  46. package/lib/policy/policy-engine-base.js +1 -1
  47. package/lib/policy/policy-engine.js +1 -1
  48. package/lib/policy/policy-statement.js +5 -5
  49. package/lib/policy/policy-types.js +1 -1
  50. package/lib/policy/policy.js +1 -1
  51. package/lib/runtime/inbound-auth/custom-claim.js +1 -1
  52. package/lib/runtime/inbound-auth/runtime-authorizer-configuration.js +1 -1
  53. package/lib/runtime/observability.js +2 -2
  54. package/lib/runtime/runtime-artifact.js +1 -1
  55. package/lib/runtime/runtime-base.js +1 -1
  56. package/lib/runtime/runtime-endpoint-base.js +1 -1
  57. package/lib/runtime/runtime-endpoint.js +1 -1
  58. package/lib/runtime/runtime.js +1 -1
  59. package/lib/tools/browser.js +2 -2
  60. package/lib/tools/code-interpreter.js +2 -2
  61. package/package.json +10 -9
@@ -0,0 +1,256 @@
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.Evaluator = void 0;
38
+ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
39
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
+ /**
41
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
42
+ *
43
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
44
+ * with the License. A copy of the License is located at
45
+ *
46
+ * http://www.apache.org/licenses/LICENSE-2.0
47
+ *
48
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
49
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
50
+ * and limitations under the License.
51
+ */
52
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
53
+ const bedrockagentcore = require("aws-cdk-lib/aws-bedrockagentcore");
54
+ const iam = require("aws-cdk-lib/aws-iam");
55
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
56
+ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
57
+ const evaluator_base_1 = require("./evaluator-base");
58
+ const validation_helpers_1 = require("./validation-helpers");
59
+ /**
60
+ * A custom evaluator for Amazon Bedrock AgentCore.
61
+ *
62
+ * Custom evaluators enable you to define evaluation logic tailored to your specific
63
+ * use cases. Supports two evaluation strategies:
64
+ * - **LLM-as-a-Judge**: Uses a foundation model with custom instructions and a rating scale.
65
+ * - **Code-based**: Uses a Lambda function for custom evaluation logic.
66
+ *
67
+ * Custom evaluators are used with `OnlineEvaluationConfig` via `EvaluatorReference.custom()`.
68
+ *
69
+ * @resource AWS::BedrockAgentCore::Evaluator
70
+ *
71
+ * @example
72
+ * // Create a custom LLM-as-a-Judge evaluator
73
+ * const evaluator = new agentcore.Evaluator(this, 'MyEvaluator', {
74
+ * evaluatorName: 'my_custom_evaluator',
75
+ * level: agentcore.EvaluationLevel.SESSION,
76
+ * evaluatorConfig: agentcore.EvaluatorConfig.llmAsAJudge({
77
+ * instructions: 'Evaluate whether the agent response is helpful and accurate.',
78
+ * modelId: 'us.anthropic.claude-sonnet-4-6',
79
+ * ratingScale: agentcore.EvaluatorRatingScale.categorical([
80
+ * { label: 'Good', definition: 'The response is helpful and accurate.' },
81
+ * { label: 'Bad', definition: 'The response is not helpful or contains errors.' },
82
+ * ]),
83
+ * }),
84
+ * });
85
+ *
86
+ * // Use the custom evaluator in an online evaluation configuration
87
+ * new agentcore.OnlineEvaluationConfig(this, 'MyEvaluation', {
88
+ * onlineEvaluationConfigName: 'my_evaluation',
89
+ * evaluators: [
90
+ * agentcore.EvaluatorReference.builtin(agentcore.BuiltinEvaluator.HELPFULNESS),
91
+ * agentcore.EvaluatorReference.custom(evaluator),
92
+ * ],
93
+ * dataSource: agentcore.DataSourceConfig.fromCloudWatchLogs({
94
+ * logGroupNames: ['/aws/bedrock-agentcore/my-agent'],
95
+ * serviceNames: ['my-agent.default'],
96
+ * }),
97
+ * });
98
+ */
99
+ let Evaluator = (() => {
100
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
101
+ let _classDescriptor;
102
+ let _classExtraInitializers = [];
103
+ let _classThis;
104
+ let _classSuper = evaluator_base_1.EvaluatorBase;
105
+ var Evaluator = class extends _classSuper {
106
+ static { _classThis = this; }
107
+ static {
108
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
109
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
110
+ Evaluator = _classThis = _classDescriptor.value;
111
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
112
+ }
113
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Evaluator", version: "2.253.0-alpha.0" };
114
+ /** Uniquely identifies this class. */
115
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Evaluator';
116
+ /**
117
+ * Import an existing Evaluator by its ID.
118
+ *
119
+ * @param scope - The construct scope
120
+ * @param id - Construct identifier
121
+ * @param evaluatorId - The evaluator ID to import
122
+ * @returns An IEvaluator reference
123
+ */
124
+ static fromEvaluatorId(scope, id, evaluatorId) {
125
+ const stack = aws_cdk_lib_1.Stack.of(scope);
126
+ const evaluatorArn = aws_cdk_lib_1.Arn.format({
127
+ service: 'bedrock-agentcore',
128
+ resource: 'evaluator',
129
+ resourceName: evaluatorId,
130
+ }, stack);
131
+ return Evaluator.fromEvaluatorAttributes(scope, id, {
132
+ evaluatorArn,
133
+ evaluatorId,
134
+ });
135
+ }
136
+ /**
137
+ * Import an existing Evaluator by its ARN.
138
+ *
139
+ * @param scope - The construct scope
140
+ * @param id - Construct identifier
141
+ * @param evaluatorArn - The evaluator ARN to import
142
+ * @returns An IEvaluator reference
143
+ */
144
+ static fromEvaluatorArn(scope, id, evaluatorArn) {
145
+ const arnParts = aws_cdk_lib_1.Arn.split(evaluatorArn, aws_cdk_lib_1.ArnFormat.SLASH_RESOURCE_NAME);
146
+ const evaluatorId = arnParts.resourceName;
147
+ return Evaluator.fromEvaluatorAttributes(scope, id, {
148
+ evaluatorArn,
149
+ evaluatorId,
150
+ });
151
+ }
152
+ /**
153
+ * Import an existing Evaluator from its attributes.
154
+ *
155
+ * @param scope - The construct scope
156
+ * @param id - Construct identifier
157
+ * @param attrs - The evaluator attributes
158
+ * @returns An IEvaluator reference
159
+ */
160
+ static fromEvaluatorAttributes(scope, id, attrs) {
161
+ try {
162
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_EvaluatorAttributes(attrs);
163
+ }
164
+ catch (error) {
165
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
166
+ Error.captureStackTrace(error, this.fromEvaluatorAttributes);
167
+ }
168
+ throw error;
169
+ }
170
+ class Import extends evaluator_base_1.EvaluatorBase {
171
+ evaluatorArn = attrs.evaluatorArn;
172
+ evaluatorId = attrs.evaluatorId;
173
+ evaluatorName = attrs.evaluatorName ?? attrs.evaluatorId;
174
+ status = undefined;
175
+ createdAt = undefined;
176
+ updatedAt = undefined;
177
+ }
178
+ return new Import(scope, id);
179
+ }
180
+ /**
181
+ * The ARN of the evaluator.
182
+ * @attribute
183
+ */
184
+ evaluatorArn;
185
+ /**
186
+ * The unique identifier of the evaluator.
187
+ * @attribute
188
+ */
189
+ evaluatorId;
190
+ /**
191
+ * The name of the evaluator.
192
+ * @attribute
193
+ */
194
+ evaluatorName;
195
+ /**
196
+ * The lifecycle status of the evaluator.
197
+ * @attribute
198
+ */
199
+ status;
200
+ /**
201
+ * The timestamp when the evaluator was created.
202
+ * @attribute
203
+ */
204
+ createdAt;
205
+ /**
206
+ * The timestamp when the evaluator was last updated.
207
+ * @attribute
208
+ */
209
+ updatedAt;
210
+ constructor(scope, id, props) {
211
+ super(scope, id, {
212
+ physicalName: props.evaluatorName,
213
+ });
214
+ try {
215
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_EvaluatorProps(props);
216
+ }
217
+ catch (error) {
218
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
219
+ Error.captureStackTrace(error, Evaluator);
220
+ }
221
+ throw error;
222
+ }
223
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
224
+ (0, validation_helpers_1.throwIfInvalid)(validation_helpers_1.validateEvaluatorName, props.evaluatorName, this);
225
+ (0, validation_helpers_1.throwIfInvalid)(validation_helpers_1.validateDescription, props.description, this);
226
+ this.evaluatorName = this.physicalName;
227
+ const resource = new bedrockagentcore.CfnEvaluator(this, 'Resource', {
228
+ evaluatorName: this.physicalName,
229
+ evaluatorConfig: props.evaluatorConfig._bind(),
230
+ level: props.level.value,
231
+ description: props.description,
232
+ });
233
+ // If code-based, grant the bedrock-agentcore service permission to invoke
234
+ // the Lambda function, scoped to this specific evaluator for confused deputy prevention.
235
+ if (props.evaluatorConfig.lambdaFunction) {
236
+ const stack = aws_cdk_lib_1.Stack.of(this);
237
+ props.evaluatorConfig.lambdaFunction.addPermission('BedrockAgentCoreEvaluatorInvoke', {
238
+ principal: new iam.ServicePrincipal('bedrock-agentcore.amazonaws.com'),
239
+ sourceAccount: stack.account,
240
+ sourceArn: resource.attrEvaluatorArn,
241
+ });
242
+ }
243
+ this.evaluatorArn = resource.attrEvaluatorArn;
244
+ this.evaluatorId = resource.attrEvaluatorId;
245
+ this.status = resource.attrStatus;
246
+ this.createdAt = resource.attrCreatedAt;
247
+ this.updatedAt = resource.attrUpdatedAt;
248
+ }
249
+ static {
250
+ __runInitializers(_classThis, _classExtraInitializers);
251
+ }
252
+ };
253
+ return Evaluator = _classThis;
254
+ })();
255
+ exports.Evaluator = Evaluator;
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWV2YWx1YXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImN1c3RvbS1ldmFsdWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCw2Q0FBb0Q7QUFDcEQscUVBQXFFO0FBQ3JFLDJDQUEyQztBQUMzQyw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBRTFFLHFEQUFrRTtBQUdsRSw2REFJOEI7QUF5QzlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q0c7SUFFVSxTQUFTOzRCQURyQixvQ0FBa0I7Ozs7c0JBQ1ksOEJBQWE7eUJBQXJCLFNBQVEsV0FBYTs7OztZQUE1Qyw2S0F5SkM7Ozs7O1FBeEpDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQzFDLGdEQUFnRCxDQUFDO1FBRW5EOzs7Ozs7O1dBT0c7UUFDSSxNQUFNLENBQUMsZUFBZSxDQUMzQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsV0FBbUI7WUFFbkIsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsTUFBTSxZQUFZLEdBQUcsaUJBQUcsQ0FBQyxNQUFNLENBQzdCO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFFBQVEsRUFBRSxXQUFXO2dCQUNyQixZQUFZLEVBQUUsV0FBVzthQUMxQixFQUNELEtBQUssQ0FDTixDQUFDO1lBRUYsT0FBTyxTQUFTLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDbEQsWUFBWTtnQkFDWixXQUFXO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7UUFFRDs7Ozs7OztXQU9HO1FBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUM1QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsWUFBb0I7WUFFcEIsTUFBTSxRQUFRLEdBQUcsaUJB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QUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO1NBQ3pDOztZQXhKVSx1REFBUzs7Ozs7QUFBVCw4QkFBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEFybiwgQXJuRm9ybWF0LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHR5cGUgSUV2YWx1YXRvciwgRXZhbHVhdG9yQmFzZSB9IGZyb20gJy4vZXZhbHVhdG9yLWJhc2UnO1xuaW1wb3J0IHR5cGUgeyBFdmFsdWF0b3JDb25maWcgfSBmcm9tICcuL2V2YWx1YXRvci1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBFdmFsdWF0aW9uTGV2ZWwsIEV2YWx1YXRvckF0dHJpYnV0ZXMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIHRocm93SWZJbnZhbGlkLFxuICB2YWxpZGF0ZURlc2NyaXB0aW9uLFxuICB2YWxpZGF0ZUV2YWx1YXRvck5hbWUsXG59IGZyb20gJy4vdmFsaWRhdGlvbi1oZWxwZXJzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBFdmFsdWF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdG9yUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV2YWx1YXRvci5cbiAgICpcbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHlvdXIgYWNjb3VudC4gVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSkuXG4gICAqIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIGJlIHVwIHRvIDQ4IGNoYXJhY3RlcnMgbG9uZy5cbiAgICpcbiAgICogQHBhdHRlcm4gXlthLXpBLVpdW2EtekEtWjAtOV9dezAsNDd9JFxuICAgKi9cbiAgcmVhZG9ubHkgZXZhbHVhdG9yTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IHRoZSBldmFsdWF0b3IgYXNzZXNzZXMgYWdlbnQgcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIFVzZSBgRXZhbHVhdG9yQ29uZmlnLmxsbUFzQUp1ZGdlKClgIGZvciBtb2RlbC1iYXNlZCBldmFsdWF0aW9uIG9yXG4gICAqIGBFdmFsdWF0b3JDb25maWcuY29kZUJhc2VkKClgIGZvciBMYW1iZGEtYmFzZWQgZXZhbHVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRvckNvbmZpZzogRXZhbHVhdG9yQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgbGV2ZWwgYXQgd2hpY2ggdGhlIGV2YWx1YXRvciBhc3Nlc3NlcyBhZ2VudCBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogRGV0ZXJtaW5lcyB3aGF0IGdyYW51bGFyaXR5IG9mIGRhdGEgdGhlIGV2YWx1YXRvciBvcGVyYXRlcyBvbjpcbiAgICogdG9vbCBjYWxsLCB0cmFjZSAoc2luZ2xlIHJlcXVlc3QtcmVzcG9uc2UpLCBvciBzZXNzaW9uIChmdWxsIGNvbnZlcnNhdGlvbikuXG4gICAqL1xuICByZWFkb25seSBsZXZlbDogRXZhbHVhdGlvbkxldmVsO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGV2YWx1YXRvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKiBAbWF4TGVuZ3RoIDIwMFxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjdXN0b20gZXZhbHVhdG9yIGZvciBBbWF6b24gQmVkcm9jayBBZ2VudENvcmUuXG4gKlxuICogQ3VzdG9tIGV2YWx1YXRvcnMgZW5hYmxlIHlvdSB0byBkZWZpbmUgZXZhbHVhdGlvbiBsb2dpYyB0YWlsb3JlZCB0byB5b3VyIHNwZWNpZmljXG4gKiB1c2UgY2FzZXMuIFN1cHBvcnRzIHR3byBldmFsdWF0aW9uIHN0cmF0ZWdpZXM6XG4gKiAtICoqTExNLWFzLWEtSnVkZ2UqKjogVXNlcyBhIGZvdW5kYXRpb24gbW9kZWwgd2l0aCBjdXN0b20gaW5zdHJ1Y3Rpb25zIGFuZCBhIHJhdGluZyBzY2FsZS5cbiAqIC0gKipDb2RlLWJhc2VkKio6IFVzZXMgYSBMYW1iZGEgZnVuY3Rpb24gZm9yIGN1c3RvbSBldmFsdWF0aW9uIGxvZ2ljLlxuICpcbiAqIEN1c3RvbSBldmFsdWF0b3JzIGFyZSB1c2VkIHdpdGggYE9ubGluZUV2YWx1YXRpb25Db25maWdgIHZpYSBgRXZhbHVhdG9yUmVmZXJlbmNlLmN1c3RvbSgpYC5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpFdmFsdWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgY3VzdG9tIExMTS1hcy1hLUp1ZGdlIGV2YWx1YXRvclxuICogY29uc3QgZXZhbHVhdG9yID0gbmV3IGFnZW50Y29yZS5FdmFsdWF0b3IodGhpcywgJ015RXZhbHVhdG9yJywge1xuICogICBldmFsdWF0b3JOYW1lOiAnbXlfY3VzdG9tX2V2YWx1YXRvcicsXG4gKiAgIGxldmVsOiBhZ2VudGNvcmUuRXZhbHVhdGlvbkxldmVsLlNFU1NJT04sXG4gKiAgIGV2YWx1YXRvckNvbmZpZzogYWdlbnRjb3JlLkV2YWx1YXRvckNvbmZpZy5sbG1Bc0FKdWRnZSh7XG4gKiAgICAgaW5zdHJ1Y3Rpb25zOiAnRXZhbHVhdGUgd2hldGhlciB0aGUgYWdlbnQgcmVzcG9uc2UgaXMgaGVscGZ1bCBhbmQgYWNjdXJhdGUuJyxcbiAqICAgICBtb2RlbElkOiAndXMuYW50aHJvcGljLmNsYXVkZS1zb25uZXQtNC02JyxcbiAqICAgICByYXRpbmdTY2FsZTogYWdlbnRjb3JlLkV2YWx1YXRvclJhdGluZ1NjYWxlLmNhdGVnb3JpY2FsKFtcbiAqICAgICAgIHsgbGFiZWw6ICdHb29kJywgZGVmaW5pdGlvbjogJ1RoZSByZXNwb25zZSBpcyBoZWxwZnVsIGFuZCBhY2N1cmF0ZS4nIH0sXG4gKiAgICAgICB7IGxhYmVsOiAnQmFkJywgZGVmaW5pdGlvbjogJ1RoZSByZXNwb25zZSBpcyBub3QgaGVscGZ1bCBvciBjb250YWlucyBlcnJvcnMuJyB9LFxuICogICAgIF0pLFxuICogICB9KSxcbiAqIH0pO1xuICpcbiAqIC8vIFVzZSB0aGUgY3VzdG9tIGV2YWx1YXRvciBpbiBhbiBvbmxpbmUgZXZhbHVhdGlvbiBjb25maWd1cmF0aW9uXG4gKiBuZXcgYWdlbnRjb3JlLk9ubGluZUV2YWx1YXRpb25Db25maWcodGhpcywgJ015RXZhbHVhdGlvbicsIHtcbiAqICAgb25saW5lRXZhbHVhdGlvbkNvbmZpZ05hbWU6ICdteV9ldmFsdWF0aW9uJyxcbiAqICAgZXZhbHVhdG9yczogW1xuICogICAgIGFnZW50Y29yZS5FdmFsdWF0b3JSZWZlcmVuY2UuYnVpbHRpbihhZ2VudGNvcmUuQnVpbHRpbkV2YWx1YXRvci5IRUxQRlVMTkVTUyksXG4gKiAgICAgYWdlbnRjb3JlLkV2YWx1YXRvclJlZmVyZW5jZS5jdXN0b20oZXZhbHVhdG9yKSxcbiAqICAgXSxcbiAqICAgZGF0YVNvdXJjZTogYWdlbnRjb3JlLkRhdGFTb3VyY2VDb25maWcuZnJvbUNsb3VkV2F0Y2hMb2dzKHtcbiAqICAgICBsb2dHcm91cE5hbWVzOiBbJy9hd3MvYmVkcm9jay1hZ2VudGNvcmUvbXktYWdlbnQnXSxcbiAqICAgICBzZXJ2aWNlTmFtZXM6IFsnbXktYWdlbnQuZGVmYXVsdCddLFxuICogICB9KSxcbiAqIH0pO1xuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPVxuICAgICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuRXZhbHVhdG9yJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEV2YWx1YXRvciBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIC0gQ29uc3RydWN0IGlkZW50aWZpZXJcbiAgICogQHBhcmFtIGV2YWx1YXRvcklkIC0gVGhlIGV2YWx1YXRvciBJRCB0byBpbXBvcnRcbiAgICogQHJldHVybnMgQW4gSUV2YWx1YXRvciByZWZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2YWx1YXRvcklkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBldmFsdWF0b3JJZDogc3RyaW5nLFxuICApOiBJRXZhbHVhdG9yIHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBldmFsdWF0b3JBcm4gPSBBcm4uZm9ybWF0KFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlOiAnYmVkcm9jay1hZ2VudGNvcmUnLFxuICAgICAgICByZXNvdXJjZTogJ2V2YWx1YXRvcicsXG4gICAgICAgIHJlc291cmNlTmFtZTogZXZhbHVhdG9ySWQsXG4gICAgICB9LFxuICAgICAgc3RhY2ssXG4gICAgKTtcblxuICAgIHJldHVybiBFdmFsdWF0b3IuZnJvbUV2YWx1YXRvckF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICBldmFsdWF0b3JBcm4sXG4gICAgICBldmFsdWF0b3JJZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgRXZhbHVhdG9yIGJ5IGl0cyBBUk4uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIC0gQ29uc3RydWN0IGlkZW50aWZpZXJcbiAgICogQHBhcmFtIGV2YWx1YXRvckFybiAtIFRoZSBldmFsdWF0b3IgQVJOIHRvIGltcG9ydFxuICAgKiBAcmV0dXJucyBBbiBJRXZhbHVhdG9yIHJlZmVyZW5jZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRXZhbHVhdG9yQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBldmFsdWF0b3JBcm46IHN0cmluZyxcbiAgKTogSUV2YWx1YXRvciB7XG4gICAgY29uc3QgYXJuUGFydHMgPSBBcm4uc3BsaXQoZXZhbHVhdG9yQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSk7XG4gICAgY29uc3QgZXZhbHVhdG9ySWQgPSBhcm5QYXJ0cy5yZXNvdXJjZU5hbWUhO1xuXG4gICAgcmV0dXJuIEV2YWx1YXRvci5mcm9tRXZhbHVhdG9yQXR0cmlidXRlcyhzY29wZSwgaWQsIHtcbiAgICAgIGV2YWx1YXRvckFybixcbiAgICAgIGV2YWx1YXRvcklkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBFdmFsdWF0b3IgZnJvbSBpdHMgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgLSBDb25zdHJ1Y3QgaWRlbnRpZmllclxuICAgKiBAcGFyYW0gYXR0cnMgLSBUaGUgZXZhbHVhdG9yIGF0dHJpYnV0ZXNcbiAgICogQHJldHVybnMgQW4gSUV2YWx1YXRvciByZWZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2YWx1YXRvckF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBFdmFsdWF0b3JBdHRyaWJ1dGVzLFxuICApOiBJRXZhbHVhdG9yIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBFdmFsdWF0b3JCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmFsdWF0b3JBcm4gPSBhdHRycy5ldmFsdWF0b3JBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZXZhbHVhdG9ySWQgPSBhdHRycy5ldmFsdWF0b3JJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmFsdWF0b3JOYW1lID0gYXR0cnMuZXZhbHVhdG9yTmFtZSA/PyBhdHRycy5ldmFsdWF0b3JJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGV2YWx1YXRvci5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2YWx1YXRvckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGV2YWx1YXRvci5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV2YWx1YXRvcklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBldmFsdWF0b3IuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBldmFsdWF0b3JOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgc3RhdHVzIG9mIHRoZSBldmFsdWF0b3IuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lc3RhbXAgd2hlbiB0aGUgZXZhbHVhdG9yIHdhcyBjcmVhdGVkLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZXN0YW1wIHdoZW4gdGhlIGV2YWx1YXRvciB3YXMgbGFzdCB1cGRhdGVkLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmFsdWF0b3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5ldmFsdWF0b3JOYW1lLFxuICAgIH0pO1xuXG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhyb3dJZkludmFsaWQodmFsaWRhdGVFdmFsdWF0b3JOYW1lLCBwcm9wcy5ldmFsdWF0b3JOYW1lLCB0aGlzKTtcbiAgICB0aHJvd0lmSW52YWxpZCh2YWxpZGF0ZURlc2NyaXB0aW9uLCBwcm9wcy5kZXNjcmlwdGlvbiwgdGhpcyk7XG5cbiAgICB0aGlzLmV2YWx1YXRvck5hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGJlZHJvY2thZ2VudGNvcmUuQ2ZuRXZhbHVhdG9yKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGV2YWx1YXRvck5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgZXZhbHVhdG9yQ29uZmlnOiBwcm9wcy5ldmFsdWF0b3JDb25maWcuX2JpbmQoKSxcbiAgICAgIGxldmVsOiBwcm9wcy5sZXZlbC52YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICB9KTtcblxuICAgIC8vIElmIGNvZGUtYmFzZWQsIGdyYW50IHRoZSBiZWRyb2NrLWFnZW50Y29yZSBzZXJ2aWNlIHBlcm1pc3Npb24gdG8gaW52b2tlXG4gICAgLy8gdGhlIExhbWJkYSBmdW5jdGlvbiwgc2NvcGVkIHRvIHRoaXMgc3BlY2lmaWMgZXZhbHVhdG9yIGZvciBjb25mdXNlZCBkZXB1dHkgcHJldmVudGlvbi5cbiAgICBpZiAocHJvcHMuZXZhbHVhdG9yQ29uZmlnLmxhbWJkYUZ1bmN0aW9uKSB7XG4gICAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgICAgcHJvcHMuZXZhbHVhdG9yQ29uZmlnLmxhbWJkYUZ1bmN0aW9uLmFkZFBlcm1pc3Npb24oJ0JlZHJvY2tBZ2VudENvcmVFdmFsdWF0b3JJbnZva2UnLCB7XG4gICAgICAgIHByaW5jaXBhbDogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdiZWRyb2NrLWFnZW50Y29yZS5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIHNvdXJjZUFjY291bnQ6IHN0YWNrLmFjY291bnQsXG4gICAgICAgIHNvdXJjZUFybjogcmVzb3VyY2UuYXR0ckV2YWx1YXRvckFybixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZXZhbHVhdG9yQXJuID0gcmVzb3VyY2UuYXR0ckV2YWx1YXRvckFybjtcbiAgICB0aGlzLmV2YWx1YXRvcklkID0gcmVzb3VyY2UuYXR0ckV2YWx1YXRvcklkO1xuICAgIHRoaXMuc3RhdHVzID0gcmVzb3VyY2UuYXR0clN0YXR1cztcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHJlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy51cGRhdGVkQXQgPSByZXNvdXJjZS5hdHRyVXBkYXRlZEF0O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,106 @@
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 type { CloudWatchLogsDataSourceConfig, DataSourceConfigBindResult } from './types';
14
+ import type { IBedrockAgentRuntime } from '../runtime/runtime-base';
15
+ import type { IRuntimeEndpoint } from '../runtime/runtime-endpoint-base';
16
+ /**
17
+ * Configuration for the data source used in online evaluation.
18
+ *
19
+ * Use the static factory methods to create data source configurations:
20
+ * - `DataSourceConfig.fromAgentRuntimeEndpoint()` for AgentCore Runtime (recommended)
21
+ * - `DataSourceConfig.fromAgentRuntimeEndpointName()` for AgentCore Runtime using endpoint name string
22
+ * - `DataSourceConfig.fromCloudWatchLogs()` for external agents or custom log groups
23
+ *
24
+ * @example
25
+ * // AgentCore Runtime with default endpoint
26
+ * declare const runtime: agentcore.Runtime;
27
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime);
28
+ *
29
+ * @example
30
+ * // AgentCore Runtime with specific endpoint
31
+ * declare const runtime: agentcore.Runtime;
32
+ * const endpoint = runtime.addEndpoint('PROD');
33
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime, endpoint);
34
+ *
35
+ * @example
36
+ * // CloudWatch Logs data source (for external agents)
37
+ * const dataSource = agentcore.DataSourceConfig.fromCloudWatchLogs({
38
+ * logGroupNames: ['/aws/my-external-agent/logs'],
39
+ * serviceNames: ['my-external-agent'],
40
+ * });
41
+ */
42
+ export declare class DataSourceConfig {
43
+ /**
44
+ * Creates a CloudWatch Logs data source configuration.
45
+ *
46
+ * Use this when your agent traces are stored in CloudWatch Logs,
47
+ * such as for external agents or when you need to specify log groups directly.
48
+ *
49
+ * @param config - The CloudWatch Logs data source configuration
50
+ * @returns A DataSourceConfig instance
51
+ *
52
+ * @example
53
+ * const dataSource = agentcore.DataSourceConfig.fromCloudWatchLogs({
54
+ * logGroupNames: ['/aws/bedrock-agentcore/runtimes/myRuntime-abc123-DEFAULT'],
55
+ * serviceNames: ['myRuntime.DEFAULT'],
56
+ * });
57
+ */
58
+ static fromCloudWatchLogs(config: CloudWatchLogsDataSourceConfig): DataSourceConfig;
59
+ /**
60
+ * Creates a data source configuration from an AgentCore Runtime and optional endpoint.
61
+ *
62
+ * This is the recommended way to configure evaluation for AgentCore Runtime agents.
63
+ * It automatically derives the CloudWatch log group and service name from the runtime and endpoint.
64
+ *
65
+ * @param runtime - The AgentCore Runtime construct
66
+ * @param endpoint - The RuntimeEndpoint construct. Defaults to 'DEFAULT' endpoint if not provided.
67
+ * @returns A DataSourceConfig instance
68
+ *
69
+ * @example
70
+ * // Using default endpoint
71
+ * declare const runtime: agentcore.Runtime;
72
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime);
73
+ *
74
+ * @example
75
+ * // Using a specific endpoint
76
+ * declare const runtime: agentcore.Runtime;
77
+ * const endpoint = runtime.addEndpoint('PROD');
78
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime, endpoint);
79
+ */
80
+ static fromAgentRuntimeEndpoint(runtime: IBedrockAgentRuntime, endpoint?: IRuntimeEndpoint): DataSourceConfig;
81
+ /**
82
+ * Creates a data source configuration from an AgentCore Runtime and an endpoint name string.
83
+ *
84
+ * Use this method when you want to reference an endpoint by name without
85
+ * having a construct reference. For construct references, prefer `fromAgentRuntimeEndpoint()`.
86
+ *
87
+ * @param runtime - The AgentCore Runtime construct
88
+ * @param endpointName - The name of the runtime endpoint
89
+ * @returns A DataSourceConfig instance
90
+ *
91
+ * @example
92
+ * declare const runtime: agentcore.Runtime;
93
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpointName(runtime, 'PROD');
94
+ */
95
+ static fromAgentRuntimeEndpointName(runtime: IBedrockAgentRuntime, endpointName: string): DataSourceConfig;
96
+ private static buildFromRuntime;
97
+ /**
98
+ * The CloudWatch Logs configuration.
99
+ */
100
+ readonly cloudWatchLogsConfig: CloudWatchLogsDataSourceConfig;
101
+ private constructor();
102
+ /**
103
+ * Binds the data source configuration to produce the L1 property.
104
+ */
105
+ bind(): DataSourceConfigBindResult;
106
+ }
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataSourceConfig = void 0;
4
+ const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const validation_helpers_1 = require("./validation-helpers");
7
+ /**
8
+ * Configuration for the data source used in online evaluation.
9
+ *
10
+ * Use the static factory methods to create data source configurations:
11
+ * - `DataSourceConfig.fromAgentRuntimeEndpoint()` for AgentCore Runtime (recommended)
12
+ * - `DataSourceConfig.fromAgentRuntimeEndpointName()` for AgentCore Runtime using endpoint name string
13
+ * - `DataSourceConfig.fromCloudWatchLogs()` for external agents or custom log groups
14
+ *
15
+ * @example
16
+ * // AgentCore Runtime with default endpoint
17
+ * declare const runtime: agentcore.Runtime;
18
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime);
19
+ *
20
+ * @example
21
+ * // AgentCore Runtime with specific endpoint
22
+ * declare const runtime: agentcore.Runtime;
23
+ * const endpoint = runtime.addEndpoint('PROD');
24
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime, endpoint);
25
+ *
26
+ * @example
27
+ * // CloudWatch Logs data source (for external agents)
28
+ * const dataSource = agentcore.DataSourceConfig.fromCloudWatchLogs({
29
+ * logGroupNames: ['/aws/my-external-agent/logs'],
30
+ * serviceNames: ['my-external-agent'],
31
+ * });
32
+ */
33
+ class DataSourceConfig {
34
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.DataSourceConfig", version: "2.253.0-alpha.0" };
35
+ /**
36
+ * Creates a CloudWatch Logs data source configuration.
37
+ *
38
+ * Use this when your agent traces are stored in CloudWatch Logs,
39
+ * such as for external agents or when you need to specify log groups directly.
40
+ *
41
+ * @param config - The CloudWatch Logs data source configuration
42
+ * @returns A DataSourceConfig instance
43
+ *
44
+ * @example
45
+ * const dataSource = agentcore.DataSourceConfig.fromCloudWatchLogs({
46
+ * logGroupNames: ['/aws/bedrock-agentcore/runtimes/myRuntime-abc123-DEFAULT'],
47
+ * serviceNames: ['myRuntime.DEFAULT'],
48
+ * });
49
+ */
50
+ static fromCloudWatchLogs(config) {
51
+ try {
52
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_CloudWatchLogsDataSourceConfig(config);
53
+ }
54
+ catch (error) {
55
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
56
+ Error.captureStackTrace(error, this.fromCloudWatchLogs);
57
+ }
58
+ throw error;
59
+ }
60
+ (0, validation_helpers_1.throwIfInvalid)(validation_helpers_1.validateLogGroupNames, config.logGroupNames);
61
+ (0, validation_helpers_1.throwIfInvalid)(validation_helpers_1.validateServiceNames, config.serviceNames);
62
+ return new DataSourceConfig({
63
+ logGroupNames: config.logGroupNames,
64
+ serviceNames: config.serviceNames,
65
+ });
66
+ }
67
+ /**
68
+ * Creates a data source configuration from an AgentCore Runtime and optional endpoint.
69
+ *
70
+ * This is the recommended way to configure evaluation for AgentCore Runtime agents.
71
+ * It automatically derives the CloudWatch log group and service name from the runtime and endpoint.
72
+ *
73
+ * @param runtime - The AgentCore Runtime construct
74
+ * @param endpoint - The RuntimeEndpoint construct. Defaults to 'DEFAULT' endpoint if not provided.
75
+ * @returns A DataSourceConfig instance
76
+ *
77
+ * @example
78
+ * // Using default endpoint
79
+ * declare const runtime: agentcore.Runtime;
80
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime);
81
+ *
82
+ * @example
83
+ * // Using a specific endpoint
84
+ * declare const runtime: agentcore.Runtime;
85
+ * const endpoint = runtime.addEndpoint('PROD');
86
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpoint(runtime, endpoint);
87
+ */
88
+ static fromAgentRuntimeEndpoint(runtime, endpoint) {
89
+ try {
90
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_IBedrockAgentRuntime(runtime);
91
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_IRuntimeEndpoint(endpoint);
92
+ }
93
+ catch (error) {
94
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
95
+ Error.captureStackTrace(error, this.fromAgentRuntimeEndpoint);
96
+ }
97
+ throw error;
98
+ }
99
+ const endpointName = endpoint?.endpointName ?? 'DEFAULT';
100
+ return DataSourceConfig.buildFromRuntime(runtime, endpointName);
101
+ }
102
+ /**
103
+ * Creates a data source configuration from an AgentCore Runtime and an endpoint name string.
104
+ *
105
+ * Use this method when you want to reference an endpoint by name without
106
+ * having a construct reference. For construct references, prefer `fromAgentRuntimeEndpoint()`.
107
+ *
108
+ * @param runtime - The AgentCore Runtime construct
109
+ * @param endpointName - The name of the runtime endpoint
110
+ * @returns A DataSourceConfig instance
111
+ *
112
+ * @example
113
+ * declare const runtime: agentcore.Runtime;
114
+ * const dataSource = agentcore.DataSourceConfig.fromAgentRuntimeEndpointName(runtime, 'PROD');
115
+ */
116
+ static fromAgentRuntimeEndpointName(runtime, endpointName) {
117
+ try {
118
+ jsiiDeprecationWarnings._aws_cdk_aws_bedrock_agentcore_alpha_IBedrockAgentRuntime(runtime);
119
+ }
120
+ catch (error) {
121
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
122
+ Error.captureStackTrace(error, this.fromAgentRuntimeEndpointName);
123
+ }
124
+ throw error;
125
+ }
126
+ return DataSourceConfig.buildFromRuntime(runtime, endpointName);
127
+ }
128
+ static buildFromRuntime(runtime, endpointName) {
129
+ const logGroupName = `/aws/bedrock-agentcore/runtimes/${runtime.agentRuntimeId}-${endpointName}`;
130
+ const serviceName = `${runtime.agentRuntimeName}.${endpointName}`;
131
+ return new DataSourceConfig({
132
+ logGroupNames: [logGroupName],
133
+ serviceNames: [serviceName],
134
+ });
135
+ }
136
+ /**
137
+ * The CloudWatch Logs configuration.
138
+ */
139
+ cloudWatchLogsConfig;
140
+ constructor(config) {
141
+ this.cloudWatchLogsConfig = config;
142
+ }
143
+ /**
144
+ * Binds the data source configuration to produce the L1 property.
145
+ */
146
+ bind() {
147
+ return {
148
+ cloudWatchLogs: {
149
+ logGroupNames: this.cloudWatchLogsConfig.logGroupNames,
150
+ serviceNames: this.cloudWatchLogsConfig.serviceNames,
151
+ },
152
+ };
153
+ }
154
+ }
155
+ exports.DataSourceConfig = DataSourceConfig;
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLDZEQUFtRztBQUluRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsZ0JBQWdCOztJQUMzQjs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFzQzs7Ozs7Ozs7OztRQUNyRSxJQUFBLG1DQUFjLEVBQUMsMENBQXFCLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELElBQUEsbUNBQWMsRUFBQyx5Q0FBb0IsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQzFCLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDbEMsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQ3BDLE9BQTZCLEVBQzdCLFFBQTJCOzs7Ozs7Ozs7OztRQUUzQixNQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsWUFBWSxJQUFJLFNBQVMsQ0FBQztRQUV6RCxPQUFPLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztLQUNqRTtJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSSxNQUFNLENBQUMsNEJBQTRCLENBQ3hDLE9BQTZCLEVBQzdCLFlBQW9COzs7Ozs7Ozs7O1FBRXBCLE9BQU8sZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0tBQ2pFO0lBRU8sTUFBTSxDQUFDLGdCQUFnQixDQUM3QixPQUE2QixFQUM3QixZQUFvQjtRQUVwQixNQUFNLFlBQVksR0FBRyxtQ0FBbUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRyxNQUFNLFdBQVcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsRSxPQUFPLElBQUksZ0JBQWdCLENBQUM7WUFDMUIsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQzdCLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUM1QixDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ2Esb0JBQW9CLENBQWlDO0lBRXJFLFlBQW9CLE1BQXNDO1FBQ3hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7S0FDcEM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDVCxPQUFPO1lBQ0wsY0FBYyxFQUFFO2dCQUNkLGFBQWEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYTtnQkFDdEQsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZO2FBQ3JEO1NBQ0YsQ0FBQztLQUNIOztBQTVHSCw0Q0E2R0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENsb3VkV2F0Y2hMb2dzRGF0YVNvdXJjZUNvbmZpZywgRGF0YVNvdXJjZUNvbmZpZ0JpbmRSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHRocm93SWZJbnZhbGlkLCB2YWxpZGF0ZUxvZ0dyb3VwTmFtZXMsIHZhbGlkYXRlU2VydmljZU5hbWVzIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuaW1wb3J0IHR5cGUgeyBJQmVkcm9ja0FnZW50UnVudGltZSB9IGZyb20gJy4uL3J1bnRpbWUvcnVudGltZS1iYXNlJztcbmltcG9ydCB0eXBlIHsgSVJ1bnRpbWVFbmRwb2ludCB9IGZyb20gJy4uL3J1bnRpbWUvcnVudGltZS1lbmRwb2ludC1iYXNlJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciB0aGUgZGF0YSBzb3VyY2UgdXNlZCBpbiBvbmxpbmUgZXZhbHVhdGlvbi5cbiAqXG4gKiBVc2UgdGhlIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgdG8gY3JlYXRlIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb25zOlxuICogLSBgRGF0YVNvdXJjZUNvbmZpZy5mcm9tQWdlbnRSdW50aW1lRW5kcG9pbnQoKWAgZm9yIEFnZW50Q29yZSBSdW50aW1lIChyZWNvbW1lbmRlZClcbiAqIC0gYERhdGFTb3VyY2VDb25maWcuZnJvbUFnZW50UnVudGltZUVuZHBvaW50TmFtZSgpYCBmb3IgQWdlbnRDb3JlIFJ1bnRpbWUgdXNpbmcgZW5kcG9pbnQgbmFtZSBzdHJpbmdcbiAqIC0gYERhdGFTb3VyY2VDb25maWcuZnJvbUNsb3VkV2F0Y2hMb2dzKClgIGZvciBleHRlcm5hbCBhZ2VudHMgb3IgY3VzdG9tIGxvZyBncm91cHNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWdlbnRDb3JlIFJ1bnRpbWUgd2l0aCBkZWZhdWx0IGVuZHBvaW50XG4gKiBkZWNsYXJlIGNvbnN0IHJ1bnRpbWU6IGFnZW50Y29yZS5SdW50aW1lO1xuICogY29uc3QgZGF0YVNvdXJjZSA9IGFnZW50Y29yZS5EYXRhU291cmNlQ29uZmlnLmZyb21BZ2VudFJ1bnRpbWVFbmRwb2ludChydW50aW1lKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWdlbnRDb3JlIFJ1bnRpbWUgd2l0aCBzcGVjaWZpYyBlbmRwb2ludFxuICogZGVjbGFyZSBjb25zdCBydW50aW1lOiBhZ2VudGNvcmUuUnVudGltZTtcbiAqIGNvbnN0IGVuZHBvaW50ID0gcnVudGltZS5hZGRFbmRwb2ludCgnUFJPRCcpO1xuICogY29uc3QgZGF0YVNvdXJjZSA9IGFnZW50Y29yZS5EYXRhU291cmNlQ29uZmlnLmZyb21BZ2VudFJ1bnRpbWVFbmRwb2ludChydW50aW1lLCBlbmRwb2ludCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENsb3VkV2F0Y2ggTG9ncyBkYXRhIHNvdXJjZSAoZm9yIGV4dGVybmFsIGFnZW50cylcbiAqIGNvbnN0IGRhdGFTb3VyY2UgPSBhZ2VudGNvcmUuRGF0YVNvdXJjZUNvbmZpZy5mcm9tQ2xvdWRXYXRjaExvZ3Moe1xuICogICBsb2dHcm91cE5hbWVzOiBbJy9hd3MvbXktZXh0ZXJuYWwtYWdlbnQvbG9ncyddLFxuICogICBzZXJ2aWNlTmFtZXM6IFsnbXktZXh0ZXJuYWwtYWdlbnQnXSxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgQ2xvdWRXYXRjaCBMb2dzIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFVzZSB0aGlzIHdoZW4geW91ciBhZ2VudCB0cmFjZXMgYXJlIHN0b3JlZCBpbiBDbG91ZFdhdGNoIExvZ3MsXG4gICAqIHN1Y2ggYXMgZm9yIGV4dGVybmFsIGFnZW50cyBvciB3aGVuIHlvdSBuZWVkIHRvIHNwZWNpZnkgbG9nIGdyb3VwcyBkaXJlY3RseS5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBDbG91ZFdhdGNoIExvZ3MgZGF0YSBzb3VyY2UgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBBIERhdGFTb3VyY2VDb25maWcgaW5zdGFuY2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgZGF0YVNvdXJjZSA9IGFnZW50Y29yZS5EYXRhU291cmNlQ29uZmlnLmZyb21DbG91ZFdhdGNoTG9ncyh7XG4gICAqICAgbG9nR3JvdXBOYW1lczogWycvYXdzL2JlZHJvY2stYWdlbnRjb3JlL3J1bnRpbWVzL215UnVudGltZS1hYmMxMjMtREVGQVVMVCddLFxuICAgKiAgIHNlcnZpY2VOYW1lczogWydteVJ1bnRpbWUuREVGQVVMVCddLFxuICAgKiB9KTtcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNsb3VkV2F0Y2hMb2dzKGNvbmZpZzogQ2xvdWRXYXRjaExvZ3NEYXRhU291cmNlQ29uZmlnKTogRGF0YVNvdXJjZUNvbmZpZyB7XG4gICAgdGhyb3dJZkludmFsaWQodmFsaWRhdGVMb2dHcm91cE5hbWVzLCBjb25maWcubG9nR3JvdXBOYW1lcyk7XG4gICAgdGhyb3dJZkludmFsaWQodmFsaWRhdGVTZXJ2aWNlTmFtZXMsIGNvbmZpZy5zZXJ2aWNlTmFtZXMpO1xuICAgIHJldHVybiBuZXcgRGF0YVNvdXJjZUNvbmZpZyh7XG4gICAgICBsb2dHcm91cE5hbWVzOiBjb25maWcubG9nR3JvdXBOYW1lcyxcbiAgICAgIHNlcnZpY2VOYW1lczogY29uZmlnLnNlcnZpY2VOYW1lcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGF0YSBzb3VyY2UgY29uZmlndXJhdGlvbiBmcm9tIGFuIEFnZW50Q29yZSBSdW50aW1lIGFuZCBvcHRpb25hbCBlbmRwb2ludC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGNvbmZpZ3VyZSBldmFsdWF0aW9uIGZvciBBZ2VudENvcmUgUnVudGltZSBhZ2VudHMuXG4gICAqIEl0IGF1dG9tYXRpY2FsbHkgZGVyaXZlcyB0aGUgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgYW5kIHNlcnZpY2UgbmFtZSBmcm9tIHRoZSBydW50aW1lIGFuZCBlbmRwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIHJ1bnRpbWUgLSBUaGUgQWdlbnRDb3JlIFJ1bnRpbWUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBlbmRwb2ludCAtIFRoZSBSdW50aW1lRW5kcG9pbnQgY29uc3RydWN0LiBEZWZhdWx0cyB0byAnREVGQVVMVCcgZW5kcG9pbnQgaWYgbm90IHByb3ZpZGVkLlxuICAgKiBAcmV0dXJucyBBIERhdGFTb3VyY2VDb25maWcgaW5zdGFuY2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gVXNpbmcgZGVmYXVsdCBlbmRwb2ludFxuICAgKiBkZWNsYXJlIGNvbnN0IHJ1bnRpbWU6IGFnZW50Y29yZS5SdW50aW1lO1xuICAgKiBjb25zdCBkYXRhU291cmNlID0gYWdlbnRjb3JlLkRhdGFTb3VyY2VDb25maWcuZnJvbUFnZW50UnVudGltZUVuZHBvaW50KHJ1bnRpbWUpO1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBVc2luZyBhIHNwZWNpZmljIGVuZHBvaW50XG4gICAqIGRlY2xhcmUgY29uc3QgcnVudGltZTogYWdlbnRjb3JlLlJ1bnRpbWU7XG4gICAqIGNvbnN0IGVuZHBvaW50ID0gcnVudGltZS5hZGRFbmRwb2ludCgnUFJPRCcpO1xuICAgKiBjb25zdCBkYXRhU291cmNlID0gYWdlbnRjb3JlLkRhdGFTb3VyY2VDb25maWcuZnJvbUFnZW50UnVudGltZUVuZHBvaW50KHJ1bnRpbWUsIGVuZHBvaW50KTtcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFnZW50UnVudGltZUVuZHBvaW50KFxuICAgIHJ1bnRpbWU6IElCZWRyb2NrQWdlbnRSdW50aW1lLFxuICAgIGVuZHBvaW50PzogSVJ1bnRpbWVFbmRwb2ludCxcbiAgKTogRGF0YVNvdXJjZUNvbmZpZyB7XG4gICAgY29uc3QgZW5kcG9pbnROYW1lID0gZW5kcG9pbnQ/LmVuZHBvaW50TmFtZSA/PyAnREVGQVVMVCc7XG5cbiAgICByZXR1cm4gRGF0YVNvdXJjZUNvbmZpZy5idWlsZEZyb21SdW50aW1lKHJ1bnRpbWUsIGVuZHBvaW50TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZnJvbSBhbiBBZ2VudENvcmUgUnVudGltZSBhbmQgYW4gZW5kcG9pbnQgbmFtZSBzdHJpbmcuXG4gICAqXG4gICAqIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHlvdSB3YW50IHRvIHJlZmVyZW5jZSBhbiBlbmRwb2ludCBieSBuYW1lIHdpdGhvdXRcbiAgICogaGF2aW5nIGEgY29uc3RydWN0IHJlZmVyZW5jZS4gRm9yIGNvbnN0cnVjdCByZWZlcmVuY2VzLCBwcmVmZXIgYGZyb21BZ2VudFJ1bnRpbWVFbmRwb2ludCgpYC5cbiAgICpcbiAgICogQHBhcmFtIHJ1bnRpbWUgLSBUaGUgQWdlbnRDb3JlIFJ1bnRpbWUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBlbmRwb2ludE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcnVudGltZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBIERhdGFTb3VyY2VDb25maWcgaW5zdGFuY2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBydW50aW1lOiBhZ2VudGNvcmUuUnVudGltZTtcbiAgICogY29uc3QgZGF0YVNvdXJjZSA9IGFnZW50Y29yZS5EYXRhU291cmNlQ29uZmlnLmZyb21BZ2VudFJ1bnRpbWVFbmRwb2ludE5hbWUocnVudGltZSwgJ1BST0QnKTtcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFnZW50UnVudGltZUVuZHBvaW50TmFtZShcbiAgICBydW50aW1lOiBJQmVkcm9ja0FnZW50UnVudGltZSxcbiAgICBlbmRwb2ludE5hbWU6IHN0cmluZyxcbiAgKTogRGF0YVNvdXJjZUNvbmZpZyB7XG4gICAgcmV0dXJuIERhdGFTb3VyY2VDb25maWcuYnVpbGRGcm9tUnVudGltZShydW50aW1lLCBlbmRwb2ludE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRGcm9tUnVudGltZShcbiAgICBydW50aW1lOiBJQmVkcm9ja0FnZW50UnVudGltZSxcbiAgICBlbmRwb2ludE5hbWU6IHN0cmluZyxcbiAgKTogRGF0YVNvdXJjZUNvbmZpZyB7XG4gICAgY29uc3QgbG9nR3JvdXBOYW1lID0gYC9hd3MvYmVkcm9jay1hZ2VudGNvcmUvcnVudGltZXMvJHtydW50aW1lLmFnZW50UnVudGltZUlkfS0ke2VuZHBvaW50TmFtZX1gO1xuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gYCR7cnVudGltZS5hZ2VudFJ1bnRpbWVOYW1lfS4ke2VuZHBvaW50TmFtZX1gO1xuXG4gICAgcmV0dXJuIG5ldyBEYXRhU291cmNlQ29uZmlnKHtcbiAgICAgIGxvZ0dyb3VwTmFtZXM6IFtsb2dHcm91cE5hbWVdLFxuICAgICAgc2VydmljZU5hbWVzOiBbc2VydmljZU5hbWVdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBDbG91ZFdhdGNoIExvZ3MgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbG91ZFdhdGNoTG9nc0NvbmZpZzogQ2xvdWRXYXRjaExvZ3NEYXRhU291cmNlQ29uZmlnO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoY29uZmlnOiBDbG91ZFdhdGNoTG9nc0RhdGFTb3VyY2VDb25maWcpIHtcbiAgICB0aGlzLmNsb3VkV2F0Y2hMb2dzQ29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoZSBkYXRhIHNvdXJjZSBjb25maWd1cmF0aW9uIHRvIHByb2R1Y2UgdGhlIEwxIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIGJpbmQoKTogRGF0YVNvdXJjZUNvbmZpZ0JpbmRSZXN1bHQge1xuICAgIHJldHVybiB7XG4gICAgICBjbG91ZFdhdGNoTG9nczoge1xuICAgICAgICBsb2dHcm91cE5hbWVzOiB0aGlzLmNsb3VkV2F0Y2hMb2dzQ29uZmlnLmxvZ0dyb3VwTmFtZXMsXG4gICAgICAgIHNlcnZpY2VOYW1lczogdGhpcy5jbG91ZFdhdGNoTG9nc0NvbmZpZy5zZXJ2aWNlTmFtZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,82 @@
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 { Resource, type IResource, type ResourceProps } from 'aws-cdk-lib';
14
+ import type { IEvaluatorRef, EvaluatorReference as L1EvaluatorReference } from 'aws-cdk-lib/aws-bedrockagentcore';
15
+ import * as iam from 'aws-cdk-lib/aws-iam';
16
+ import type { Construct } from 'constructs';
17
+ /**
18
+ * Interface for Evaluator resources.
19
+ */
20
+ export interface IEvaluator extends IResource, IEvaluatorRef {
21
+ /**
22
+ * The ARN of the evaluator.
23
+ * @attribute
24
+ */
25
+ readonly evaluatorArn: string;
26
+ /**
27
+ * The unique identifier of the evaluator.
28
+ * @attribute
29
+ */
30
+ readonly evaluatorId: string;
31
+ /**
32
+ * The name of the evaluator.
33
+ * @attribute
34
+ */
35
+ readonly evaluatorName: string;
36
+ /**
37
+ * The lifecycle status of the evaluator (CREATING, ACTIVE, FAILED, DELETING).
38
+ * @attribute
39
+ */
40
+ readonly status?: string;
41
+ /**
42
+ * The timestamp when the evaluator was created.
43
+ * @attribute
44
+ */
45
+ readonly createdAt?: string;
46
+ /**
47
+ * The timestamp when the evaluator was last updated.
48
+ * @attribute
49
+ */
50
+ readonly updatedAt?: string;
51
+ /**
52
+ * Grant the given principal identity permissions to perform actions on this evaluator.
53
+ */
54
+ grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
55
+ }
56
+ /**
57
+ * Abstract base class for Evaluator.
58
+ * Contains methods and attributes valid for evaluators either created with CDK or imported.
59
+ */
60
+ export declare abstract class EvaluatorBase extends Resource implements IEvaluator {
61
+ abstract readonly evaluatorArn: string;
62
+ abstract readonly evaluatorId: string;
63
+ abstract readonly evaluatorName: string;
64
+ abstract readonly status?: string;
65
+ abstract readonly createdAt?: string;
66
+ abstract readonly updatedAt?: string;
67
+ constructor(scope: Construct, id: string, props?: ResourceProps);
68
+ /**
69
+ * A reference to this Evaluator resource.
70
+ */
71
+ get evaluatorRef(): L1EvaluatorReference;
72
+ /**
73
+ * Grants IAM actions to the IAM Principal.
74
+ *
75
+ * [disable-awslint:no-grants]
76
+ *
77
+ * @param grantee - The IAM principal to grant permissions to
78
+ * @param actions - The actions to grant
79
+ * @returns An IAM Grant object representing the granted permissions
80
+ */
81
+ grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
82
+ }