From c75d3ae83e986568169d824e4a4d5a583e1d99c1 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 7 Apr 2025 17:16:09 -0400 Subject: [PATCH 01/39] feat(bedrockl2):adding bedrock l2 construct features --- .../@aws-cdk/aws-bedrock-alpha/.gitignore | 4 + .../@aws-cdk/aws-bedrock-alpha/.jsiirc.json | 13 + packages/@aws-cdk/aws-bedrock-alpha/LICENSE | 201 +++++ packages/@aws-cdk/aws-bedrock-alpha/NOTICE | 2 + packages/@aws-cdk/aws-bedrock-alpha/README.md | 92 ++ .../bedrock/agents/action-group.ts | 214 +++++ .../bedrock/agents/agent-alias.ts | 263 ++++++ .../bedrock/agents/agent-collaborator.ts | 168 ++++ .../aws-bedrock-alpha/bedrock/agents/agent.ts | 759 +++++++++++++++++ .../bedrock/agents/api-executor.ts | 64 ++ .../bedrock/agents/api-schema.ts | 111 +++ .../bedrock/agents/memory.ts | 106 +++ .../bedrock/agents/orchestration-executor.ts | 49 ++ .../bedrock/agents/orchestration.ts | 39 + .../bedrock/agents/prompt-override.ts | 300 +++++++ .../bedrock/agents/validation-helpers.ts | 122 +++ .../bedrock/data-sources/base-data-source.ts | 263 ++++++ .../bedrock/data-sources/chunking.ts | 184 ++++ .../data-sources/confluence-data-source.ts | 239 ++++++ .../data-sources/context-enrichment.ts | 92 ++ .../data-sources/custom-data-source.ts | 111 +++ .../data-sources/custom-transformation.ts | 117 +++ .../data-sources/default-parsing-prompt.ts | 67 ++ .../bedrock/data-sources/parsing.ts | 115 +++ .../bedrock/data-sources/s3-data-source.ts | 131 +++ .../data-sources/salesforce-data-source.ts | 213 +++++ .../data-sources/sharepoint-data-source.ts | 233 ++++++ .../data-sources/web-crawler-data-source.ts | 217 +++++ .../bedrock/guardrails/guardrail-filters.ts | 517 ++++++++++++ .../bedrock/guardrails/guardrail-version.ts | 148 ++++ .../bedrock/guardrails/guardrails.ts | 791 ++++++++++++++++++ .../aws-bedrock-alpha/bedrock/index.ts | 67 ++ .../application-inference-profile.ts | 209 +++++ .../bedrock/inference-profiles/common.ts | 88 ++ .../cross-region-inference-profile.ts | 159 ++++ .../default-prompt-routers.ts | 125 +++ .../knowledge-bases/kendra-knowledge-base.ts | 199 +++++ .../kendra-knowledgebase/gen-ai-index.ts | 299 +++++++ .../kendra-knowledgebase/index.ts | 14 + .../bedrock/knowledge-bases/knowledge-base.ts | 224 +++++ .../knowledge-bases/vector-knowledge-base.ts | 765 +++++++++++++++++ .../analysis-plugins.ts | 82 ++ .../vectorstore-knowledgebases/index.ts | 16 + .../opensearch-collection.ts | 508 +++++++++++ .../opensearch-vector-index.ts | 326 ++++++++ .../aws-bedrock-alpha/bedrock/models.ts | 438 ++++++++++ .../bedrock/prompts/prompt-variant.ts | 294 +++++++ .../bedrock/prompts/prompt-version.ts | 79 ++ .../bedrock/prompts/prompt.ts | 290 +++++++ .../@aws-cdk/aws-bedrock-alpha/jest.config.js | 2 + .../@aws-cdk/aws-bedrock-alpha/lib/index.ts | 7 + .../@aws-cdk/aws-bedrock-alpha/package.json | 92 ++ .../rosetta/default.ts-fixture | 11 + .../ExampleResourceIntegTestStack.assets.json | 19 + ...xampleResourceIntegTestStack.template.json | 70 ++ .../cdk.out | 1 + .../integ.json | 14 + .../manifest.json | 76 ++ .../tree.json | 106 +++ .../@aws-cdk/aws-bedrock-alpha/tsconfig.json | 49 ++ 60 files changed, 10574 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.gitignore create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/LICENSE create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/NOTICE create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/README.md create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/jest.config.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/package.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.gitignore b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore new file mode 100644 index 0000000000000..e7f1f66e4f9e9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore @@ -0,0 +1,4 @@ +*.js +!jest.config.js +*.d.ts +node_modules \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json b/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json new file mode 100644 index 0000000000000..b615d5b2e797c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json @@ -0,0 +1,13 @@ +{ + "targets": { + "java": { + "package": "software.amazon.awscdk.services.bedrock" + }, + "dotnet": { + "package": "Amazon.CDK.AWS.Bedrock" + }, + "python": { + "module": "aws_cdk.aws_bedrock" + } + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/LICENSE b/packages/@aws-cdk/aws-bedrock-alpha/LICENSE new file mode 100644 index 0000000000000..5ccf0c6780bab --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/NOTICE b/packages/@aws-cdk/aws-bedrock-alpha/NOTICE new file mode 100644 index 0000000000000..cd0946c1cf193 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md new file mode 100644 index 0000000000000..441e0a75bec6e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -0,0 +1,92 @@ +# An example Construct Library module + + + +--- + +![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) + +> The APIs of higher level constructs in this module are experimental and under active development. They are subject to non-backward compatible changes or removal in any future version. These are not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be announced in the release notes. This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. + +--- + + + +This package contains an example CDK construct library +for an imaginary resource called ExampleResource. +Its target audience are construct library authors - +both when contributing to the core CDK codebase, +or when writing your own construct library. + +Even though different construct libraries model vastly different services, +a large percentage of the structure of the construct libraries +(what we often call Layer 2 constructs, or L2s for short) +is actually strikingly similar between all of them. +This module hopes to present a skeleton of that structure, +that you can literally copy&paste to your own construct library, +and then edit to suit your needs. +It also attempts to explain the elements of that skeleton as best as it can, +through inline comments on the code itself. + +## Using when contributing to the CDK codebase + +If you're creating a completely new module, +feel free to copy&paste this entire directory, +and then edit the `package.json` and `README.md` +files as necessary (see the "Package structure" section below). +Make sure to remove the `"private": true` line from `package.json` +after copying, as otherwise your package will not be published! + +If you're contributing a new resource to an existing package, +feel free to copy&paste the following files, +instead of the entire package: + +* [`lib/example-resource.ts`](lib/example-resource.ts) +* [`lib/private/example-resource-common.ts`](lib/private/example-resource-common.ts) +* [`test/example-resource.test.ts`](test/example-resource.test.ts) +* [`test/integ.example-resource.ts`](test/integ.example-resource.ts) +* [`test/integ.example-resource.expected.json`](test/integ.example-resource.expected.json) + +And proceed to edit and rename them from there. + +## Using for your own construct libraries + +Feel free to use this package as the basis of your own construct library; +note, however, that you will have to change a few things in `package.json` to get it to build: + +* Remove the `"private": true` flag if you intend to publish your package to npmjs.org + (see https://docs.npmjs.com/files/package.json#private for details). +* Remove the `devDependencies` on `cdk-build-tools`, `cdk-integ-tools` and `pkglint`. +* Remove the `lint`, `integ`, `pkglint`, `package`, `build+test+package`, `awslint`, and `compat` entries in the `scripts` section. +* The `build` script should be just `tsc`, `watch` just `tsc -w`, and `test` just `jest`. +* Finally, the `awscdkio` key should be completely removed. + +You will also have to get rid of the integration test files, +[`test/integ.example-resource.ts`](test/integ.example-resource.ts) and +[`test/integ.example-resource.expected.json`](test/integ.example-resource.expected.json), +as those styles of integration tests are not available outside the CDK main repo. + +## Code structure + +The code structure is explained through inline comments in the files themselves. +Probably [`lib/example-resource.ts`](lib/example-resource.ts) is a good place to start reading. + +### Tests + +The package contains examples of unit tests in the [`test/example-resource.test.ts`](test/example-resource.test.ts) +file. + +It also contains an example integration test in [`test/integ.example-resource.ts`](test/integ.example-resource.ts). +For more information on CDK integ tests, see the +[main `Contributing.md` file](../../../CONTRIBUTING.md#integration-tests). + +## Package structure + +The package uses the standard build and test tools available in the CDK repo. +Even though it's not published, +it also uses [JSII](https://github.com/aws/jsii), +the technology that allows CDK logic to be written once, +but used from multiple programming languages. +Its configuration lives the `jsii` key in `package.json`. +It's mainly used as a validation tool in this package, +as JSII places some constraints on the TypeScript code that you can write. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts new file mode 100644 index 0000000000000..edb927b3b7147 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts @@ -0,0 +1,214 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import { ActionGroupExecutor } from './api-executor'; +import { ApiSchema } from './api-schema'; + +/****************************************************************************** + * Signatures + *****************************************************************************/ +/** + * AWS Defined signatures for enabling certain capabilities in your agent. + */ +export class ParentActionGroupSignature { + /** + * Signature that allows your agent to request the user for additional information when trying to complete a task. + */ + public static readonly USER_INPUT = new ParentActionGroupSignature('AMAZON.UserInput'); + /** + * Signature that allows your agent to generate, run, and troubleshoot code when trying to complete a task. + */ + public static readonly CODE_INTERPRETER = new ParentActionGroupSignature('AMAZON.CodeInterpreter'); + /** + * Constructor should be used as a temporary solution when a new signature is supported + * but its implementation in CDK hasn't been added yet. + */ + constructor(public readonly value: string) {} + public toString() { + return this.value; + } +} +/****************************************************************************** + * PROPS - Action Group Class + *****************************************************************************/ +export interface AgentActionGroupProps { + /** + * The name of the action group. + */ + readonly name: string; + + /** + * A description of the action group. + * + * @default - No description + */ + readonly description?: string; + + /** + * The API Schema + * + * @default - No API Schema + */ + readonly apiSchema?: ApiSchema; + + /** + * The action group executor. + * + * @default - No executor + */ + readonly executor?: ActionGroupExecutor; + + /** + * Specifies whether the action group is available for the agent to invoke or + * not when sending an InvokeAgent request. + * + * @default true + */ + readonly enabled?: boolean; + + /** + * Specifies whether to delete the resource even if it's in use. + * + * @default false + */ + readonly forceDelete?: boolean; + + /** + * Defines functions that each define parameters that the agent needs to invoke from the user. + * NO L2 yet as this doesn't make much sense IMHO + */ + readonly functionSchema?: CfnAgent.FunctionSchemaProperty; + + /** + * The AWS Defined signature for enabling certain capabilities in your agent. + * When this property is specified, you must leave the description, apiSchema, + * and actionGroupExecutor fields blank for this action group + */ + readonly parentActionGroupSignature?: ParentActionGroupSignature; +} + +/****************************************************************************** + * DEF - Action Group Class + *****************************************************************************/ + +export class AgentActionGroup { + // ------------------------------------------------------ + // Static Constructors + // ------------------------------------------------------ + /** + * Defines an action group that allows your agent to request the user for + * additional information when trying to complete a task. + * @param enabled Specifies whether the action group is available for the agent + */ + public static userInput(enabled: boolean): AgentActionGroup { + return new AgentActionGroup({ + name: 'UserInputAction', + enabled: enabled, + parentActionGroupSignature: ParentActionGroupSignature.USER_INPUT, + }); + } + + /** + * Defines an action group that allows your agent to request the user for + * additional information when trying to complete a task. + * @param enabled Specifies whether the action group is available for the agent + */ + public static codeInterpreter(enabled: boolean): AgentActionGroup { + return new AgentActionGroup({ + name: 'CodeInterpreterAction', + enabled: enabled, + parentActionGroupSignature: ParentActionGroupSignature.CODE_INTERPRETER, + }); + } + + // ------------------------------------------------------ + // Attributes + // ------------------------------------------------------ + /** + * The name of the action group. + */ + public readonly name: string; + /** + * A description of the action group. + */ + public readonly description?: string; + /** + * Whether this action group is available for the agent to invoke or not. + */ + public readonly enabled: boolean; + /** + * The api schema for this action group (if defined). + */ + public readonly apiSchema?: ApiSchema; + /** + * The action group executor for this action group (if defined). + */ + public readonly executor?: ActionGroupExecutor; + /** + * Whether to delete the resource even if it's in use. + */ + public readonly forceDelete?: boolean; + /** + * The function schema for this action group (if defined). + */ + public readonly functionSchema?: CfnAgent.FunctionSchemaProperty; + /** + * The AWS Defined signature (if defined). + */ + public readonly parentActionGroupSignature?: ParentActionGroupSignature; + + public constructor(props: AgentActionGroupProps) { + // Validate Props + this.validateProps(props); + + // ------------------------------------------------------ + // Set attributes or defaults + // ------------------------------------------------------ + this.name = props.name; + this.description = props.description; + this.apiSchema = props.apiSchema; + this.executor = props.executor; + this.enabled = props.enabled ?? true; + this.forceDelete = props.forceDelete ?? false; + this.functionSchema = props.functionSchema; + this.parentActionGroupSignature = props.parentActionGroupSignature; + } + + private validateProps(props: AgentActionGroupProps) { + if (props.parentActionGroupSignature && (props.description || props.apiSchema || props.executor)) { + throw new Error( + 'When parentActionGroupSignature is specified, you must leave the description, ' + + 'apiSchema, and actionGroupExecutor fields blank for this action group', + ); + } + } + + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.AgentActionGroupProperty { + return { + actionGroupExecutor: this.executor?._render(), + actionGroupName: this.name, + actionGroupState: this.enabled ? 'ENABLED' : 'DISABLED', + apiSchema: this.apiSchema?._render(), + description: this.description, + functionSchema: this.functionSchema, + parentActionGroupSignature: this.parentActionGroupSignature?.toString(), + skipResourceInUseCheckOnDelete: this.forceDelete, + }; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts new file mode 100644 index 0000000000000..580f66cf25471 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts @@ -0,0 +1,263 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { ArnFormat, aws_bedrock as bedrock, IResource, Resource, Stack } from 'aws-cdk-lib'; +import * as events from 'aws-cdk-lib/aws-events'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; +import { Construct } from 'constructs'; +import { IAgent } from './agent'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents an Agent Alias, either created with CDK or imported. + */ +export interface IAgentAlias extends IResource { + /** + * The unique identifier of the agent alias. + * @example `TCLCITFZTN` + */ + readonly aliasId: string; + /** + * The ARN of the agent alias. + * @example `arn:aws:bedrock:us-east-1:123456789012:agent-alias/DNCJJYQKSU/TCLCITFZTN` + */ + readonly aliasArn: string; + /** + * The underlying agent for this alias. + */ + readonly agent: IAgent; + + /** + * Grant the given principal identity permissions to perform actions on this agent alias. + */ + grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant; + + /** + * Grant the given identity permissions to invoke the agent alias. + */ + grantInvoke(grantee: iam.IGrantable): iam.Grant; + + /** + * Grant the given identity permissions to get the agent alias. + */ + grantGet(grantee: iam.IGrantable): iam.Grant; + + /** + * Define an EventBridge rule that triggers when something happens to this agent alias + * + * Requires that there exists at least one CloudTrail Trail in your account + * that captures the event. This method will not create the Trail. + * + * @param id The id of the rule + * @param options Options for adding the rule + */ + onCloudTrailEvent(id: string, options?: events.OnEventOptions): events.Rule; +} + +/****************************************************************************** + * ABSTRACT BASE CLASS + *****************************************************************************/ +/** + * Abstract base class for an Agent. + * Contains methods and attributes valid for Agents either created with CDK or imported. + */ +export abstract class AgentAliasBase extends Resource implements IAgentAlias { + public abstract readonly aliasId: string; + public abstract readonly aliasArn: string; + public abstract readonly agent: IAgent; + + /** + * Grant the given principal identity permissions to perform actions on this agent alias. + */ + public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { + return iam.Grant.addToPrincipal({ + grantee, + actions, + resourceArns: [this.aliasArn], + scope: this, + }); + } + + /** + * Grant the given identity permissions to invoke the agent alias. + */ + public grantInvoke(grantee: iam.IGrantable): iam.Grant { + return this.grant(grantee, 'bedrock:InvokeAgent'); + } + + /** + * Grant the given identity permissions to get the agent alias. + */ + public grantGet(grantee: iam.IGrantable): iam.Grant { + return this.grant(grantee, 'bedrock:GetAgentAlias'); + } + + /** + * Define an EventBridge rule that triggers when something happens to this agent alias + * + * Requires that there exists at least one CloudTrail Trail in your account + * that captures the event. This method will not create the Trail. + * + * @param id The id of the rule + * @param options Options for adding the rule + */ + public onCloudTrailEvent(id: string, options: events.OnEventOptions = {}): events.Rule { + const rule = new events.Rule(this, id, options); + rule.addTarget(options.target); + rule.addEventPattern({ + source: ['aws.bedrock'], + detailType: ['AWS API Call via CloudTrail'], + detail: { + requestParameters: { + agentAliasId: [this.aliasId], + }, + }, + }); + return rule; + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a CDK-Managed Agent Alias. + */ +export interface AgentAliasProps { + /** + * The name for the agent alias. + * + * @default - "latest-{hash}" + */ + readonly aliasName?: string; + /** + * The version of the agent to associate with the agent alias. + * + * @default - Creates a new version of the agent. + */ + readonly agentVersion?: string; + /** + * The agent associated to this alias. + */ + readonly agent: IAgent; + /** + * Description for the agent alias. + */ + readonly description?: string; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Attributes needed to create an import + */ +export interface AgentAliasAttributes { + /** + * The Id of the agent alias. + */ + readonly aliasId: string; + /** + * The name of the agent alias. + */ + readonly aliasName?: string; + /** + * The underlying agent for this alias. + */ + readonly agent: IAgent; + /** + * The agent version for this alias. + */ + readonly agentVersion: string; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create an Agent Alias with CDK. + * @cloudformationResource AWS::Bedrock::AgentAlias + */ +export class AgentAlias extends AgentAliasBase { + // ------------------------------------------------------ + // Imports + // ------------------------------------------------------ + /** + * Brings an Agent Alias from an existing one created outside of CDK. + */ + public static fromAttributes( + scope: Construct, + id: string, + attrs: AgentAliasAttributes, + ): IAgentAlias { + class Import extends AgentAliasBase { + public readonly agent = attrs.agent; + public readonly aliasId = attrs.aliasId; + public readonly aliasName = attrs.aliasName; + public readonly aliasArn = Stack.of(scope).formatArn({ + resource: 'agent-alias', + service: 'bedrock', + resourceName: `${attrs.agent.agentId}/${attrs.aliasId}`, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + } + return new Import(scope, id); + } + + // ---------------------------------------- + // Inherited Attributes + // ---------------------------------------- + public readonly agent: IAgent; + public readonly aliasId: string; + public readonly aliasArn: string; + public readonly aliasName: string; + + // ------------------------------------------------------ + // CONSTRUCTOR + // ------------------------------------------------------ + constructor(scope: Construct, id: string, props: AgentAliasProps) { + super(scope, id); + + // Compute hash from agent, to recreate the resource when agent has changed + const hash = md5hash(props.agent.agentId + props.agentVersion + props.agent.lastUpdated); + + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + // see https://github.com/awslabs/generative-ai-cdk-constructs/issues/947 + this.aliasName = props.aliasName ?? `latest-${hash}`; + this.agent = props.agent; + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + const alias = new bedrock.CfnAgentAlias(this, `MyCfnAgentAlias+${hash}`, { + agentAliasName: this.aliasName, + agentId: this.agent.agentId, + description: props.description, + routingConfiguration: props.agentVersion + ? [ + { + agentVersion: props.agentVersion, + }, + ] + : undefined, + }); + + this.aliasId = alias.attrAgentAliasId; + this.aliasArn = alias.attrAgentAliasArn; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts new file mode 100644 index 0000000000000..5421781c647f9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -0,0 +1,168 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; +import { IAgentAlias } from './agent-alias'; + +/** + * Enum for collaborator's relay conversation history types. + */ +export enum AgentCollaboratorType { + /** + * Supervisor agent. + */ + SUPERVISOR = 'SUPERVISOR', + + /** + * Disabling collaboration. + */ + DISABLED = 'DISABLED', + + /** + * Supervisor router. + */ + SUPERVISOR_ROUTER = 'SUPERVISOR_ROUTER' +} + +/** + * Enum for collaborator's relay conversation history types. + */ +export enum RelayConversationHistoryType { + /** + * Sending to the collaborator. + */ + TO_COLLABORATOR = 'TO_COLLABORATOR', + + /** + * Disabling relay of conversation history to the collaborator. + */ + DISABLED = 'DISABLED' +} + +/****************************************************************************** + * PROPS - Agent Collaborator Class + *****************************************************************************/ +export interface AgentCollaboratorProps { + /** + * Descriptor for the collaborating agent. + * This cannot be the TSTALIASID (`agent.testAlias`). + */ + readonly agentAlias: IAgentAlias; + + /** + * Instructions on how this agent should collaborate with the main agent. + */ + readonly collaborationInstruction: string; + + /** + * A friendly name for the collaborator. + */ + readonly collaboratorName: string; + + /** + * Whether to relay conversation history to this collaborator. + * + * @default - undefined (uses service default) + */ + readonly relayConversationHistory?: boolean; +} + +/****************************************************************************** + * DEF - Agent Collaborator Class + *****************************************************************************/ + +export class AgentCollaborator { + // ------------------------------------------------------ + // Attributes + // ------------------------------------------------------ + public readonly agentAlias: IAgentAlias; + + /** + * Instructions on how this agent should collaborate with the main agent. + */ + public readonly collaborationInstruction: string; + + /** + * A friendly name for the collaborator. + */ + public readonly collaboratorName: string; + + /** + * Whether to relay conversation history to this collaborator. + * + * @default - undefined (uses service default) + */ + public readonly relayConversationHistory?: boolean; + + + public constructor(props: AgentCollaboratorProps) { + // Validate Props + this.validateProps(props); + + // ------------------------------------------------------ + // Set attributes or defaults + // ------------------------------------------------------ + this.agentAlias = props.agentAlias; + this.collaborationInstruction = props.collaborationInstruction; + this.collaboratorName = props.collaboratorName; + this.relayConversationHistory = props.relayConversationHistory; + } + + private validateProps(props: AgentCollaboratorProps) { + // Validate required properties + if (!props.agentAlias) { + throw new Error('agentAlias is required for AgentCollaborator'); + } + if (props.agentAlias.aliasId === 'TSTALIASID') { + throw new Error('Agent cannot collaborate with TSTALIASID alias of another agent. Use a different alias to collaborate with.'); + } + + if (!props.collaborationInstruction || props.collaborationInstruction.trim() === '') { + throw new Error('collaborationInstruction is required and cannot be empty for AgentCollaborator'); + } + + if (!props.collaboratorName || props.collaboratorName.trim() === '') { + throw new Error('collaboratorName is required and cannot be empty for AgentCollaborator'); + } + } + + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.AgentCollaboratorProperty { + return { + agentDescriptor: { + aliasArn: this.agentAlias.aliasArn, + }, + collaborationInstruction: this.collaborationInstruction, + collaboratorName: this.collaboratorName, + relayConversationHistory: this.relayConversationHistory ? RelayConversationHistoryType.TO_COLLABORATOR : RelayConversationHistoryType.DISABLED, + }; + } + + /** + * Grants the specified principal permissions to get the agent alias and invoke the agent + * from this collaborator. + * + * @param grantee The principal to grant permissions to + * @returns The Grant object + */ + public grant(grantee: IGrantable): Grant { + const grant1 = this.agentAlias.grantInvoke(grantee); + const combinedGrant = grant1.combine(this.agentAlias.grantGet(grantee)); + return combinedGrant; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts new file mode 100644 index 0000000000000..2b15265c9276f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -0,0 +1,759 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Arn, ArnFormat, Duration, IResource, Lazy, Resource, Stack } from 'aws-cdk-lib'; +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as kms from 'aws-cdk-lib/aws-kms'; +import { Construct } from 'constructs'; +// Internal Libs +import { AgentActionGroup } from './action-group'; +import { AgentAlias, IAgentAlias } from './agent-alias'; +import { AgentCollaborator, AgentCollaboratorType } from './agent-collaborator'; +import { PromptOverrideConfiguration } from './prompt-override'; +import * as validation from './validation-helpers'; +import { IGuardrail } from '../guardrails/guardrails'; +import { IKnowledgeBase } from '../knowledge-bases/knowledge-base'; +import { IInvokable } from '../models'; +import { Memory } from './memory'; +import { OrchestrationType, CustomOrchestration } from './orchestration'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents an Agent, either created with CDK or imported. + */ +export interface IAgent extends IResource { + /** + * The ARN of the agent. + * @example "arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO" + * @attribute + */ + readonly agentArn: string; + /** + * The ID of the Agent. + * @example "OKDSJOGKMO" + * @attribute + */ + readonly agentId: string; + /** + * The IAM role associated to the agent. + */ + readonly role: iam.IRole; + /** + * Optional KMS encryption key associated with this agent + */ + readonly kmsKey?: kms.IKey; + /** + * When this agent was last updated. + */ + readonly lastUpdated?: string; +} +/****************************************************************************** + * ABSTRACT BASE CLASS + *****************************************************************************/ +/** + * Abstract base class for an Agent. + * Contains methods and attributes valid for Agents either created with CDK or imported. + */ +export abstract class AgentBase extends Resource implements IAgent { + public abstract readonly agentArn: string; + public abstract readonly agentId: string; + public abstract readonly role: iam.IRole; + public abstract readonly kmsKey?: kms.IKey; + public abstract readonly lastUpdated?: string; + public abstract agentVersion: string; +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a CDK managed Bedrock Agent. + */ +export interface AgentProps { + /** + * The name of the agent. + * + * @default - A name is generated by CDK. + */ + readonly name?: string; + /** + * The instruction used by the agent. This determines how the agent will perform his task. + * This instruction must have a minimum of 40 characters. + */ + readonly instruction: string; + /** + * The foundation model used for orchestration by the agent. + */ + readonly foundationModel: IInvokable; + /** + * The existing IAM Role for the agent to use. + * Ensure the role has a trust policy that allows the Bedrock service to assume the role. + * + * @default - A new role is created for you. + */ + readonly existingRole?: iam.IRole; + /** + * Specifies whether to automatically update the `DRAFT` version of the agent after + * making changes to the agent. The `DRAFT` version can be continually iterated + * upon during internal development. + * + * @default - false + */ + readonly shouldPrepareAgent?: boolean; + /** + * How long sessions should be kept open for the agent. If no conversation occurs + * during this time, the session expires and Amazon Bedrock deletes any data + * provided before the timeout. + * + * @default - 1 hour + */ + readonly idleSessionTTL?: Duration; + /** + * The KMS key of the agent if custom encryption is configured. + * + * @default - An AWS managed key is used. + */ + readonly kmsKey?: kms.IKey; + /** + * A description of the agent. + * + * @default - No description is provided. + */ + readonly description?: string; + /** + * The KnowledgeBases associated with the agent. + */ + readonly knowledgeBases?: IKnowledgeBase[]; + /** + * The Action Groups associated with the agent. + */ + readonly actionGroups?: AgentActionGroup[]; + /** + * The guardrail that will be associated with the agent. + */ + readonly guardrail?: IGuardrail; + /** + * Overrides some prompt templates in different parts of an agent sequence configuration. + * + * @default - No overrides are provided. + */ + readonly promptOverrideConfiguration?: PromptOverrideConfiguration; + /** + * Select whether the agent can prompt additional information from the user when it does not have + * enough information to respond to an utterance + * + * @default - false + */ + readonly userInputEnabled?: boolean; + /** + * Select whether the agent can generate, run, and troubleshoot code when trying to complete a task + * + * @default - false + */ + readonly codeInterpreterEnabled?: boolean; + /** + * Whether to delete the resource even if it's in use. + * + * @default - true + */ + readonly forceDelete?: boolean; + /** + * The type and configuration of the memory to maintain context across multiple sessions and recall past interactions. + * This can be useful for maintaining continuity in multi-turn conversations and recalling user preferences + * or past interactions. + * + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html + * @default - No memory will be used. Agents will retain context from the current session only. + */ + readonly memory?: Memory; + /** + * The collaboration type for the agent. + * + * @default - No collaboration (AgentCollaboratorType.DISABLED). + */ + readonly agentCollaboration?: AgentCollaboratorType; + /** + * Collaborators that this agent will work with. + * + * @default - No collaborators. + */ + readonly agentCollaborators?: AgentCollaborator[]; + /** + * Details of custom orchestration for the agent. + * + * @default - Standard orchestration. + */ + readonly customOrchestration?: CustomOrchestration; + /** + * The type of orchestration to use for the agent. + * + * @default - STANDARD + */ + readonly orchestrationType?: OrchestrationType; +} +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Attributes for specifying an imported Bedrock Agent. + */ +export interface AgentAttributes { + /** + * The ARN of the agent. + * @example "arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO" + * @attribute + */ + readonly agentArn: string; + /** + * The ARN of the IAM role associated to the agent. + * @example "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + * @attribute + */ + readonly roleArn: string; + /** + * Optional KMS encryption key associated with this agent + */ + readonly kmsKeyArn?: string; + /** + * When this agent was last updated. + */ + readonly lastUpdated?: string; + /** + * The agent version. If no explicit versions have been created, + * leave this empty to use the DRAFT version. Otherwise, use the + * version number (e.g. 1). + */ + readonly agentVersion?: string; +} +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create (or import) an Agent with CDK. + * @cloudformationResource AWS::Bedrock::Agent + */ +export class Agent extends AgentBase { + /** + * Static Method for importing an existing Bedrock Agent. + */ + public static fromAgentAttrs(scope: Construct, id: string, attrs: AgentAttributes): IAgent { + class Import extends AgentBase { + public readonly agentArn = attrs.agentArn; + public readonly agentId = Arn.split(attrs.agentArn, ArnFormat.SLASH_RESOURCE_NAME).resourceName!; + public readonly role = iam.Role.fromRoleArn(scope, `${id}Role`, attrs.roleArn); + public readonly kmsKey = attrs.kmsKeyArn ? kms.Key.fromKeyArn(scope, `${id}Key`, attrs.kmsKeyArn) : undefined; + public readonly lastUpdated = attrs.lastUpdated; + public readonly agentVersion = attrs.agentVersion ?? 'DRAFT'; + } + + // Return new Agent + return new Import(scope, id); + } + // ------------------------------------------------------ + // Base attributes + // ------------------------------------------------------ + /** + * The unique identifier for the agent + */ + public readonly agentId: string; + /** + * The ARN of the agent. + */ + public readonly agentArn: string; + /** + * The version of the agent. + */ + public agentVersion: string; + /** + * The IAM role associated to the agent. + */ + public readonly role: iam.IRole; + /** + * Optional KMS encryption key associated with this agent + */ + public readonly kmsKey?: kms.IKey; + /** + * When this agent was last updated. + */ + public readonly lastUpdated?: string; + // ------------------------------------------------------ + // CDK-only attributes + // ------------------------------------------------------ + /** + * The name of the agent. + */ + public readonly name: string; + /** + * Whether the agent will automatically update the DRAFT version of the agent after + * making changes to the agent. + */ + public readonly shouldPrepareAgent: boolean; + /** + * How long sessions should be kept open for the agent. + */ + public readonly idleSessionTTL: Duration; + /** + * The foundation model used for orchestration by the agent. + */ + public readonly foundationModel: IInvokable; + /** + * The default test alias for this agent. This corresponds to the test alias + * (`TSTALIASID`) that points to the working (`DRAFT`) version. + */ + public readonly testAlias: IAgentAlias; + /** + * Whether the agent can prompt additional information from the user when it does not have + * enough information to respond to an utterance + */ + public readonly userInputEnabled: boolean; + /** + * Whether the agent can generate, run, and troubleshoot code when trying to complete a task. + */ + public readonly codeInterpreterEnabled: boolean; + /** + * Whether the resource will be deleted even if it's in use. + */ + public readonly forceDelete: boolean; + /** + * Agent collaboration type. + */ + public readonly agentCollaboration?: AgentCollaboratorType; + /** + * Agent collaborators. + */ + public readonly agentCollaborators?: AgentCollaborator[]; + /** + * Custom orchestration configuration. + */ + public readonly customOrchestration?: CustomOrchestration; + /** + * The type of orchestration for the agent. + */ + public readonly orchestrationType?: OrchestrationType; + // ------------------------------------------------------ + // CDK-only attributes (optional) + // ------------------------------------------------------ + /** + * The description for the agent. + */ + public readonly description?: string; + /** + * The instruction used by the agent. This determines how the agent will perform his task. + */ + public readonly instruction?: string; + /** + * Overrides some prompt templates in different parts of an agent sequence configuration. + * + * @default - No overrides are provided. + */ + readonly promptOverrideConfiguration?: PromptOverrideConfiguration; + /** + * The memory configuration for the agent. + */ + public readonly memory?: Memory; + // ------------------------------------------------------ + // Lazy Attributes + // ------------------------------------------------------ + /** + * The action groups associated with the agent. + */ + public actionGroups: AgentActionGroup[]; + /** + * The KnowledgeBases associated with the agent. + */ + public knowledgeBases: IKnowledgeBase[]; + /** + * The guardrail associated with the agent. + */ + public guardrail?: IGuardrail; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The L1 representation of the agent + */ + private readonly __resource: bedrock.CfnAgent; + + // ------------------------------------------------------ + // CONSTRUCTOR + // ------------------------------------------------------ + constructor(scope: Construct, id: string, props: AgentProps) { + super(scope, id); + + // ------------------------------------------------------ + // Set properties and defaults + // ------------------------------------------------------ + this.name = + props.name ?? this.generatePhysicalName() + '-bedrock-agent'; + this.idleSessionTTL = props.idleSessionTTL ?? Duration.hours(1); + this.shouldPrepareAgent = props.shouldPrepareAgent ?? false; + this.userInputEnabled = props.userInputEnabled ?? false; + this.codeInterpreterEnabled = props.codeInterpreterEnabled ?? false; + this.foundationModel = props.foundationModel; + this.forceDelete = props.forceDelete ?? false; + + // Optional + this.description = props.description; + this.instruction = props.instruction; + this.promptOverrideConfiguration = props.promptOverrideConfiguration; + this.kmsKey = props.kmsKey; + this.memory = props.memory; + this.agentCollaboration = props.agentCollaboration; + this.customOrchestration = props.customOrchestration; + this.orchestrationType = props.orchestrationType; + + // ------------------------------------------------------ + // Role + // ------------------------------------------------------ + // If existing role is provided, use it. + if (props.existingRole) { + this.role = props.existingRole; + // Otherwise, create a new one + } else { + this.role = new iam.Role(this, 'Role', { + // generate a role name + roleName: this.generatePhysicalName() + 'bedrockagentrole', + // ensure the role has a trust policy that allows the Bedrock service to assume the role + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com').withConditions({ + StringEquals: { + 'aws:SourceAccount': Stack.of(this).account, + }, + ArnLike: { + 'aws:SourceArn': Stack.of(this).formatArn({ + service: 'bedrock', + resource: 'agent', + resourceName: '*', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }), + }, + }), + }); + } + // ------------------------------------------------------ + // Set Lazy Props initial values + // ------------------------------------------------------ + this.knowledgeBases = []; + this.actionGroups = []; + this.agentCollaborators = []; + // Add Default Action Groups + this.addActionGroup(AgentActionGroup.userInput(this.userInputEnabled)); + this.addActionGroup(AgentActionGroup.codeInterpreter(this.codeInterpreterEnabled)); + + // Add specified elems through methods to handle permissions + // this needs to happen after role creation / assignment + props.knowledgeBases?.forEach(kb => { + this.addKnowledgeBase(kb); + }); + props.actionGroups?.forEach(ag => { + this.addActionGroup(ag); + }); + props.agentCollaborators?.forEach(ac => { + this.addAgentCollaborator(ac); + }); + if (props.guardrail) { + this.addGuardrail(props.guardrail); + } + + // Grant permissions for custom orchestration if provided + if (this.customOrchestration?.executor?.lambdaFunction) { + this.customOrchestration.executor.lambdaFunction.grantInvoke(this.role); + this.customOrchestration.executor.lambdaFunction.addPermission(`OrchestrationLambdaInvocationPolicy-${this.node.addr.slice(0, 16)}`, { + principal: new iam.ServicePrincipal('bedrock.amazonaws.com'), + sourceArn: Lazy.string({ produce: () => this.agentArn }), + sourceAccount: Stack.of(this).account, + }); + } + + // ------------------------------------------------------ + // Set Lazy Validations + // ------------------------------------------------------ + this.node.addValidation({ + validate: () => this.validateKnowledgeBaseAssocations(), + }); + + // ------------------------------------------------------ + // CFN Props - With Lazy support + // ------------------------------------------------------ + const cfnProps: bedrock.CfnAgentProps = { + actionGroups: Lazy.any({ produce: () => this.renderActionGroups() }, { omitEmptyArray: true }), + agentName: this.name, + agentResourceRoleArn: this.role.roleArn, + autoPrepare: this.shouldPrepareAgent, + customerEncryptionKeyArn: props.kmsKey?.keyArn, + description: props.description, + foundationModel: this.foundationModel.invokableArn, + guardrailConfiguration: Lazy.any({ produce: () => this.renderGuardrail() }), + idleSessionTtlInSeconds: this.idleSessionTTL.toSeconds(), + instruction: props.instruction, + knowledgeBases: Lazy.any({ produce: () => this.renderKnowledgeBases() }, { omitEmptyArray: true }), + memoryConfiguration: props.memory, + promptOverrideConfiguration: this.promptOverrideConfiguration?._render(), + skipResourceInUseCheckOnDelete: this.forceDelete, + agentCollaboration: this.agentCollaboration, + agentCollaborators: Lazy.any({ produce: () => this.renderAgentCollaborators() }, { omitEmptyArray: true }), + customOrchestration: this.renderCustomOrchestration(), + orchestrationType: this.orchestrationType, + }; + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new bedrock.CfnAgent(this, 'AgentResource', cfnProps); + + this.agentId = this.__resource.attrAgentId; + this.agentArn = this.__resource.attrAgentArn; + this.agentVersion = this.__resource.attrAgentVersion; + this.lastUpdated = this.__resource.attrUpdatedAt; + + // Add explicit dependency between the agent resource and the agent's role default policy + // See https://github.com/awslabs/generative-ai-cdk-constructs/issues/899 + if (!props.existingRole) { + // add the appropriate permissions to use the FM + const grant = this.foundationModel.grantInvoke(this.role); + grant.applyBefore(this.__resource); + } + + this.testAlias = AgentAlias.fromAttributes(this, 'DefaultAlias', { + aliasId: 'TSTALIASID', + aliasName: 'AgentTestAlias', + agentVersion: 'DRAFT', + agent: this, + }); + } + + // ------------------------------------------------------ + // HELPER METHODS - addX() + // ------------------------------------------------------ + /** + * Add knowledge base to the agent. + */ + public addKnowledgeBase(knowledgeBase: IKnowledgeBase) { + // Do some checks + validation.throwIfInvalid(this.validateKnowledgeBase, knowledgeBase); + // Add it to the array + this.knowledgeBases.push(knowledgeBase); + // Add the appropriate Permissions to query the Knowledge Base + knowledgeBase.grantQuery(this.role); + } + + /** + * Add guardrail to the agent. + */ + public addGuardrail(guardrail: IGuardrail) { + // Do some checks + validation.throwIfInvalid(this.validateGuardrail, guardrail); + // Add it to the construct + this.guardrail = guardrail; + // Handle permissions + guardrail.grantApply(this.role); + } + + /** + * Add an action group to the agent. + */ + public addActionGroup(actionGroup: AgentActionGroup) { + // Do some checks + validation.throwIfInvalid(this.validateActionGroup, actionGroup); + // Add it to the array + this.actionGroups.push(actionGroup); + // Handle permissions to invoke the lambda function + actionGroup.executor?.lambdaFunction?.grantInvoke(this.role); + actionGroup.executor?.lambdaFunction?.addPermission(`LambdaInvocationPolicy-${this.node.addr.slice(0, 16)}`, { + principal: new iam.ServicePrincipal('bedrock.amazonaws.com'), + sourceArn: this.agentArn, + sourceAccount: Stack.of(this).account, + }); + } + + /** + * Add an agent collaborator to the agent. + */ + public addAgentCollaborator(agentCollaborator: AgentCollaborator) { + this.agentCollaborators?.push(agentCollaborator); + agentCollaborator.grant(this.role); + } + + /** + * Add multiple action groups to the agent. + */ + public addActionGroups(...actionGroups: AgentActionGroup[]) { + actionGroups.forEach(ag => this.addActionGroup(ag)); + } + + // ------------------------------------------------------ + // Lazy Renderers + // ------------------------------------------------------ + /** + * Render the guardrail configuration. + * + * @internal This is an internal core function and should not be called directly. + */ + private renderGuardrail(): bedrock.CfnAgent.GuardrailConfigurationProperty | undefined { + return this.guardrail + ? { + guardrailIdentifier: this.guardrail.guardrailId, + guardrailVersion: this.guardrail.guardrailVersion, + } + : undefined; + } + + /** + * Render the knowledge base associations. + * + * @internal This is an internal core function and should not be called directly. + */ + private renderKnowledgeBases(): bedrock.CfnAgent.AgentKnowledgeBaseProperty[] { + const knowledgeBaseAssociationsCfn: bedrock.CfnAgent.AgentKnowledgeBaseProperty[] = []; + // Build the associations in the CFN format + this.knowledgeBases.forEach(kb => { + knowledgeBaseAssociationsCfn.push({ + knowledgeBaseId: kb.knowledgeBaseId, + knowledgeBaseState: 'ENABLED', + // at least one is defined as it has been validated when adding the kb + description: kb.instruction ?? kb.description!, + }); + }); + return knowledgeBaseAssociationsCfn; + } + + /** + * Render the action groups + * + * @internal This is an internal core function and should not be called directly. + */ + private renderActionGroups(): bedrock.CfnAgent.AgentActionGroupProperty[] { + const actionGroupsCfn: bedrock.CfnAgent.AgentActionGroupProperty[] = []; + // Build the associations in the CFN format + this.actionGroups.forEach(ag => { + actionGroupsCfn.push(ag._render()); + }); + return actionGroupsCfn; + } + + /** + * Render the agent collaborators. + * + * @internal This is an internal core function and should not be called directly. + */ + private renderAgentCollaborators(): bedrock.CfnAgent.AgentCollaboratorProperty[] | undefined { + if (!this.agentCollaborators || this.agentCollaborators.length === 0) { + return undefined; + } + + const agentCollaboratorsCfn: bedrock.CfnAgent.AgentCollaboratorProperty[] = []; + + this.agentCollaborators.forEach(ac => { + agentCollaboratorsCfn.push(ac._render()); + }); + return agentCollaboratorsCfn; + } + + /** + * Render the custom orchestration. + * + * @internal This is an internal core function and should not be called directly. + */ + private renderCustomOrchestration(): bedrock.CfnAgent.CustomOrchestrationProperty | undefined { + if (!this.customOrchestration) { + return undefined; + } + + return { + executor: { + lambda: this.customOrchestration.executor.lambdaFunction.functionArn, + }, + }; + } + + // ------------------------------------------------------ + // Validators + // ------------------------------------------------------ + /** + * Checks if the KB Association is valid + * + * @internal This is an internal core function and should not be called directly. + */ + private validateKnowledgeBase = (knowledgeBase: IKnowledgeBase): string[] => { + const MAX_LENGTH = 200; + const description = knowledgeBase.instruction ?? knowledgeBase.description; + const errors: string[] = []; + // If at least one of the previous has been defined + if (description) { + errors.push( + ...validation.validateStringFieldLength({ + value: description, + fieldName: 'description', + minLength: 0, + maxLength: MAX_LENGTH, + }), + ); + } else { + errors.push( + 'If instructionForAgents is not provided, the description property of the KnowledgeBase ' + + `${knowledgeBase.knowledgeBaseId} must be provided.`, + ); + } + return errors; + }; + /** + * Checks if the KB Associations are valid + * + * @internal This is an internal core function and should not be called directly. + */ + private validateKnowledgeBaseAssocations = (): string[] => { + const MAX_KB_ASSOCIATIONS = 10; + const errors: string[] = []; + if (this.knowledgeBases.length > MAX_KB_ASSOCIATIONS) { + errors.push(`The maximum number of knowledge bases associations is ${MAX_KB_ASSOCIATIONS}.`); + } + for (const kb of this.knowledgeBases) { + this.validateKnowledgeBase(kb); + } + return errors; + }; + /** + * Checks if the Guardrail is valid + * + * @internal This is an internal core function and should not be called directly. + */ + private validateGuardrail = (guardrail: IGuardrail): string[] => { + const errors: string[] = []; + if (this.guardrail) { + errors.push( + `Cannot add Guardrail ${guardrail.guardrailId}. ` + + `Guardrail ${this.guardrail.guardrailId} has already been specified for this agent.`, + ); + } + errors.push(...validation.validateFieldPattern(guardrail.guardrailVersion, 'version', /^(([0-9]{1,8})|(DRAFT))$/)); + return errors; + }; + /** + * Check if the action group is valid + */ + private validateActionGroup = (actionGroup: AgentActionGroup) => { + console.log('Validating action group: ', actionGroup.name); + let errors: string[] = []; + // Find if there is a conflicting action group name + if (this.actionGroups?.find(ag => ag.name === actionGroup.name)) { + errors.push(`An action group with name: ${actionGroup.name} has already been defined`); + } + return errors; + }; + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts new file mode 100644 index 0000000000000..9ace7a0f6640d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts @@ -0,0 +1,64 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import { IFunction } from 'aws-cdk-lib/aws-lambda'; + +/****************************************************************************** + * Action Group Executor + *****************************************************************************/ +/** + * Defines how fulfillment of the action group is handled after the necessary + * information has been elicited from the user. + * Valid executors are: + * - Lambda function + * - Return Control + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/action-handle.html + */ +export class ActionGroupExecutor { + /** + * Returns the action group invocation results directly in the InvokeAgent response. + * The information and parameters can be sent to your own systems to yield results. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-returncontrol.html + */ + public static readonly RETURN_CONTROL = new ActionGroupExecutor(undefined, 'RETURN_CONTROL'); + + /** + * Defines an action group with a Lambda function containing the business logic. + * @param lambdaFunction - Lambda function to be called by the action group. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html + */ + public static fromlambdaFunction(lambdaFunction: IFunction): ActionGroupExecutor { + return new ActionGroupExecutor(lambdaFunction, undefined); + } + + public readonly lambdaFunction?: IFunction; + public readonly customControl?: string; + + private constructor(lambdaFunction?: IFunction, customControl?: string) { + this.lambdaFunction = lambdaFunction; + this.customControl = customControl; + } + + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public _render(): bedrock.CfnAgent.ActionGroupExecutorProperty { + return { + customControl: this.customControl, + lambda: this.lambdaFunction?.functionArn, + }; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts new file mode 100644 index 0000000000000..2a7d737356292 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -0,0 +1,111 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as fs from 'fs'; +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import { IBucket, Location } from 'aws-cdk-lib/aws-s3'; + +/****************************************************************************** + * API SCHEMA CLASS + *****************************************************************************/ +/** + * Represents the concept of an API Schema for a Bedrock Agent Action Group. + */ +export abstract class ApiSchema { + /** + * Creates an API Schema from a local file. + * @param path - the path to the local file containing the OpenAPI schema for the action group + */ + public static fromLocalAsset(path: string): InlineApiSchema { + return new InlineApiSchema(fs.readFileSync(path, 'utf8')); + } + + /** + * Creates an API Schema from an inline string. + * @param schema - the JSON or YAML payload defining the OpenAPI schema for the action group + */ + public static fromInline(schema: string): InlineApiSchema { + return new InlineApiSchema(schema); + } + + /** + * Creates an API Schema from an S3 File + * @param bucket - the bucket containing the local file containing the OpenAPI schema for the action group + * @param objectKey - object key in the bucket + */ + public static fromS3File(bucket: IBucket, objectKey: string): S3ApiSchema { + return new S3ApiSchema({ + bucketName: bucket.bucketName, + objectKey: objectKey, + }); + } + + public readonly s3File?: Location; + public readonly inlineSchema?: string; + + /** + * Constructor accessible only to extending classes. + */ + protected constructor(s3File?: Location, inlineSchema?: string) { + this.s3File = s3File; + this.inlineSchema = inlineSchema; + } + + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public abstract _render(): CfnAgent.APISchemaProperty; +} + +// ------------------------------------------------------ +// Inline Definition +// ------------------------------------------------------ +export class InlineApiSchema extends ApiSchema { + constructor(private readonly schema: string) { + super(undefined, schema); + } + + /** + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.APISchemaProperty { + return { + payload: this.schema, + }; + } +} + +// ------------------------------------------------------ +// S3 File +// ------------------------------------------------------ +/** + * Class to define an API Schema from an S3 object. + */ +export class S3ApiSchema extends ApiSchema { + constructor(private readonly location: Location) { + super(location, undefined); + } + /** + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.APISchemaProperty { + return { + s3: { + s3BucketName: this.location.bucketName, + s3ObjectKey: this.location.objectKey, + }, + }; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts new file mode 100644 index 0000000000000..f02ebc08c7cad --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts @@ -0,0 +1,106 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import * as validation from './validation-helpers'; +/** + * Memory options for agent conversational context retention. + * Memory enables agents to maintain context across multiple sessions and recall past interactions. + * By default, agents retain context from the current session only. + */ +enum MemoryType { + /** + * Your agent uses memory summarization to enhance accuracy using + * advanced prompt templates in Amazon Bedrock to call the foundation model with guidelines + * to summarize all your sessions. You can optionally modify the default prompt template + * or provide your own custom parser to parse model output. + * + * Since the summarization process takes place in an asynchronous flow after a session ends, + * logs for any failures in summarization due to overridden template or parser will be + * published to your AWS accounts. For more information on enabling the logging, see + * Enable memory summarization log delivery. + */ + SESSION_SUMMARY = 'SESSION_SUMMARY', +} + +/** + * Properties for SessionSummaryConfiguration. + */ +export interface SessionSummaryMemoryProps { + /** + * Duration in days for which session summaries are retained (1-365) + * @default 30 + */ + readonly memoryDurationDays?: number; + + /** + * Maximum number of recent session summaries to include (min 1) + * @default 20 + */ + readonly maxRecentSessions?: number; +} + +/** + * Memory class for managing Bedrock Agent memory configurations. Enables conversational context retention + * across multiple sessions through session identifiers. Memory context is stored with unique + * memory IDs per user, allowing access to conversation history and summaries. Supports viewing + * stored sessions and clearing memory. + * + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html + */ +export class Memory { + /** + * Returns session summary memory with default configuration. + * @default memoryDurationDays=30, maxRecentSessions=20 + */ + public static readonly SESSION_SUMMARY = Memory.sessionSummary({ memoryDurationDays: 30, maxRecentSessions: 20 }); + + /** + * Creates a session summary memory with custom configuration. + * @param props Optional memory configuration properties + * @returns Memory configuration object + */ + public static sessionSummary(props: SessionSummaryMemoryProps): CfnAgent.MemoryConfigurationProperty { + // Do some checks + validation.throwIfInvalid(this.validateSessionSummaryMemoryProps, props); + + return { + enabledMemoryTypes: [MemoryType.SESSION_SUMMARY], + storageDays: props?.memoryDurationDays ?? 30, + sessionSummaryConfiguration: { + maxRecentSessions: props?.maxRecentSessions ?? 20, + }, + }; + } + + /** + * Validate at synth time the configuration. + */ + private static validateSessionSummaryMemoryProps(props: SessionSummaryMemoryProps): string[] { + let errors: string[] = []; + + // Validate storage days is between 0 and 365 + if (props.memoryDurationDays !== undefined) { + if (props.memoryDurationDays < 1 || props.memoryDurationDays > 365) { + errors.push('memoryDurationDays must be between 1 and 365'); + } + } + if (props.maxRecentSessions !== undefined) { + if (props.maxRecentSessions < 1) { + errors.push('maxRecentSessions must be greater than 0'); + } + } + + return errors; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts new file mode 100644 index 0000000000000..84c08bcb31244 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts @@ -0,0 +1,49 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import { IFunction } from 'aws-cdk-lib/aws-lambda'; + +/****************************************************************************** + * Orchestration Executor + *****************************************************************************/ +/** + * Contains details about the Lambda function containing the orchestration logic carried + * out upon invoking the custom orchestration. + */ +export class OrchestrationExecutor { + /** + * Defines an orchestration executor with a Lambda function containing the business logic. + * @param lambdaFunction - Lambda function to be called by the orchestration. + */ + public static fromlambdaFunction(lambdaFunction: IFunction): OrchestrationExecutor { + return new OrchestrationExecutor(lambdaFunction); + } + + public readonly lambdaFunction: IFunction; + + private constructor(lambdaFunction: IFunction) { + this.lambdaFunction = lambdaFunction; + } + + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public _render(): bedrock.CfnAgent.OrchestrationExecutorProperty { + return { + lambda: this.lambdaFunction?.functionArn, + }; + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts new file mode 100644 index 0000000000000..222e176930e1d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts @@ -0,0 +1,39 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { OrchestrationExecutor } from './orchestration-executor'; + +/** + * Configuration for custom orchestration of the agent. + */ +export interface CustomOrchestration { + /** + * The Lambda function to use for custom orchestration. + */ + readonly executor: OrchestrationExecutor; +} + +/** + * Enum for orchestration types available for agents. + */ +export enum OrchestrationType { + /** + * Default orchestration by the agent. + */ + DEFAULT = 'DEFAULT', + + /** + * Custom orchestration using Lambda. + */ + CUSTOM_ORCHESTRATION = 'CUSTOM_ORCHESTRATION' +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts new file mode 100644 index 0000000000000..4acec8ab0fd0f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -0,0 +1,300 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import { IFunction } from 'aws-cdk-lib/aws-lambda'; +import * as validation from './validation-helpers'; +import { IInvokable } from '../models'; + +/** + * The step in the agent sequence that this prompt configuration applies to. + */ +export enum AgentStepType { + PRE_PROCESSING = 'PRE_PROCESSING', + ORCHESTRATION = 'ORCHESTRATION', + POST_PROCESSING = 'POST_PROCESSING', + ROUTING_CLASSIFIER = 'ROUTING_CLASSIFIER', + MEMORY_SUMMARIZATION = 'MEMORY_SUMMARIZATION', + KNOWLEDGE_BASE_RESPONSE_GENERATION = 'KNOWLEDGE_BASE_RESPONSE_GENERATION', +} + +/** + * LLM inference configuration + */ +export interface InferenceConfiguration { + /** + * The likelihood of the model selecting higher-probability options while + * generating a response. A lower value makes the model more likely to choose + * higher-probability options, while a higher value makes the model more + * likely to choose lower-probability options. + * + * Floating point + * + * min 0 + * max 1 + */ + readonly temperature: number; + /** + * While generating a response, the model determines the probability of the + * following token at each point of generation. The value that you set for + * Top P determines the number of most-likely candidates from which the model + * chooses the next token in the sequence. For example, if you set topP to + * 80, the model only selects the next token from the top 80% of the + * probability distribution of next tokens. + * + * Floating point + * + * min 0 + * max 1 + */ + readonly topP: number; + /** + * While generating a response, the model determines the probability of the + * following token at each point of generation. The value that you set for + * topK is the number of most-likely candidates from which the model chooses + * the next token in the sequence. For example, if you set topK to 50, the + * model selects the next token from among the top 50 most likely choices. + * + * Integer + * + * min 0 + * max 500 + */ + readonly topK: number; + /** + * A list of stop sequences. A stop sequence is a sequence of characters that + * causes the model to stop generating the response. + * + * length 0-4 + */ + readonly stopSequences: string[]; + /** + * The maximum number of tokens to generate in the response. + * + * Integer + * + * min 0 + * max 4096 + */ + readonly maximumLength: number; +} + +/** + * Contains configurations to override a prompt template in one part of an agent sequence. + */ +export interface PromptStepConfiguration { + /** + * The step in the agent sequence where to set a specific prompt configuration. + */ + readonly stepType: AgentStepType; + /** + * Whether to enable or skip this step in the agent sequence. + * @default - The default state for each step type is as follows. + * + * PRE_PROCESSING – ENABLED + * ORCHESTRATION – ENABLED + * KNOWLEDGE_BASE_RESPONSE_GENERATION – ENABLED + * POST_PROCESSING – DISABLED + */ + readonly stepEnabled?: boolean; + /** + * The custom prompt template to be used. + * + * @default - The default prompt template will be used. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-placeholders.html + */ + readonly customPromptTemplate?: string; + /** + * The inference configuration parameters to use. + */ + readonly inferenceConfig?: InferenceConfiguration; + /** + * The foundation model to use for this specific prompt step. + * This allows using different models for different steps in the agent sequence. + * + * @default - The agent's default foundation model will be used. + */ + readonly foundationModel?: IInvokable; +} + +export interface PromptStepConfigurationCustomParser extends PromptStepConfiguration { + /** + * Whether to use the custom Lambda parser defined for the sequence. + * + * @default - false + */ + readonly useCustomParser?: boolean; +} + +export interface CustomParserProps { + /* + * Lambda function to use as custom parser + */ + readonly parser?: IFunction; + /* + * prompt step configurations. At least one of the steps must make use of the custom parser. + */ + readonly steps?: PromptStepConfigurationCustomParser[]; +} + +export class PromptOverrideConfiguration { + public static fromSteps(steps?: PromptStepConfiguration[]): PromptOverrideConfiguration { + // Create new object + return new PromptOverrideConfiguration({ steps }); + } + /** + * Creates a PromptOverrideConfiguration with a custom Lambda parser function. + * @param props Configuration including: + * - `parser`: Lambda function to use as custom parser + * - `steps`: prompt step configurations. At least one of the steps must make use of the custom parser. + */ + public static withCustomParser(props: CustomParserProps): PromptOverrideConfiguration { + // Create new object + return new PromptOverrideConfiguration(props); + } + + /** + * The custom Lambda parser function to use. + * The Lambda parser processes and interprets the raw foundation model output. + * It receives an input event with: + * - messageVersion: Version of message format (1.0) + * - agent: Info about the agent (name, id, alias, version) + * - invokeModelRawResponse: Raw model output to parse + * - promptType: Type of prompt being parsed + * - overrideType: Type of override (OUTPUT_PARSER) + * + * The Lambda must return a response that the agent uses for next actions. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/lambda-parser.html + */ + readonly parser?: IFunction; + + /** + * The prompt configurations to override the prompt templates in the agent sequence. + * + * @default - No prompt configuration will be overridden. + */ + readonly steps?: PromptStepConfigurationCustomParser[]; + + /** + * Create a new PromptOverrideConfiguration. + * + * @internal - This is marked as private so end users leverage it only through static methods + */ + private constructor(props: CustomParserProps) { + // Validate props + validation.throwIfInvalid(this.validateSteps, props.steps); + if (props.parser) { + validation.throwIfInvalid(this.validateCustomParser, props.steps); + } + this.parser = props.parser; + this.steps = props.steps; + } + + /** + * Format as CfnAgent.PromptOverrideConfigurationProperty + * + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.PromptOverrideConfigurationProperty { + return { + overrideLambda: this.parser?.functionArn, + promptConfigurations: + this.steps?.map(step => ({ + // prettier-ignore + promptType: step.stepType, + /** Maps stepEnabled (true → 'ENABLED', false → 'DISABLED', undefined → undefined (uses CFN DEFAULT)) */ + promptState: step?.stepEnabled === undefined ? undefined : step.stepEnabled ? 'ENABLED' : 'DISABLED', + /** Maps stepEnabled (true → 'OVERRIDDEN', false → 'DEFAULT', undefined → undefined (uses CFN DEFAULT)) */ + // prettier-ignore + parserMode: + step?.useCustomParser === undefined + ? undefined + : step?.useCustomParser ? 'OVERRIDDEN' : 'DEFAULT', + // Use custom prompt template if provided, otherwise use default + // prettier-ignore + promptCreationMode: step?.customPromptTemplate === undefined + ? undefined + : step?.customPromptTemplate ? 'OVERRIDDEN' : 'DEFAULT', + basePromptTemplate: step.customPromptTemplate, + inferenceConfiguration: step.inferenceConfig, + // Include foundation model if provided + foundationModel: step.foundationModel?.invokableArn, + })) || [], + }; + } + + private validateInferenceConfig = (config?: InferenceConfiguration): string[] => { + const errors: string[] = []; + + if (config) { + if (config.temperature < 0 || config.temperature > 1) { + errors.push('Temperature must be between 0 and 1'); + } + if (config.topP < 0 || config.topP > 1) { + errors.push('TopP must be between 0 and 1'); + } + if (config.topK < 0 || config.topK > 500) { + errors.push('TopK must be between 0 and 500'); + } + if (config.stopSequences.length > 4) { + errors.push('Maximum 4 stop sequences allowed'); + } + if (config.maximumLength < 0 || config.maximumLength > 4096) { + errors.push('MaximumLength must be between 0 and 4096'); + } + } + + return errors; + }; + + private validateSteps = (steps?: PromptStepConfiguration[]): string[] => { + const errors: string[] = []; + + if (!steps || steps.length === 0) { + errors.push('Steps array cannot be empty'); + } + + // Validate each step's inference config + steps?.forEach(step => { + const inferenceErrors = this.validateInferenceConfig(step.inferenceConfig); + if (inferenceErrors.length > 0) { + errors.push(`Step ${step.stepType}: ${inferenceErrors.join(', ')}`); + } + + // Validate foundationModel if provided + if (step.foundationModel !== undefined) { + if (!step.foundationModel.invokableArn) { + errors.push(`Step ${step.stepType}: Foundation model must be a valid IInvokable with an invokableArn`); + } + // Only allow foundation model override for ROUTING_CLASSIFIER + if (step.stepType !== AgentStepType.ROUTING_CLASSIFIER) { + errors.push(`Step ${step.stepType}: Foundation model can only be specified for ROUTING_CLASSIFIER step type`); + } + } + + }); + + return errors; + }; + + private validateCustomParser = (steps?: PromptStepConfigurationCustomParser[]): string[] => { + const errors: string[] = []; + + const hasCustomParser = steps?.some(step => step.useCustomParser); + if (!hasCustomParser) { + errors.push('At least one step must use custom parser'); + } + + return errors; + }; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts new file mode 100644 index 0000000000000..9261740987044 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts @@ -0,0 +1,122 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Token } from 'aws-cdk-lib'; + +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +interface IntervalValidation { + fieldName: string; + minLength: number; + maxLength: number; +} + +interface StringLengthValidation extends IntervalValidation { + value: string; +} + +// interface NumberValidation extends IntervalValidation { +// value: number; +// } + +// interface ArrayValidation extends IntervalValidation { +// value: any[]; +// } + +/** + * Validates the length of a string field against minimum and maximum constraints. + * @param value - The string value to validate + * @param fieldName - Name of the field being validated (for error messages) + * @param minLength - Minimum allowed length (defaults to 0) + * @param maxLength - Maximum allowed length + * @returns true if validation passes + * @throws Error if validation fails with current length information + */ +export function validateStringFieldLength(params: StringLengthValidation): string[] { + const currentLength = params.value.length; + const errors: string[] = []; + + // Evaluate only if it is not an unresolved Token + if (!Token.isUnresolved(params.fieldName)) { + if (params.value.length > params.maxLength) { + errors.push( + `The field ${params.fieldName} is ${currentLength} characters long but must be less than or equal to ${params.maxLength} characters`, + ); + } + + if (params.value.length < params.minLength) { + errors.push( + `The field ${params.fieldName} is ${currentLength} characters long but must be at least ${params.minLength} characters`, + ); + } + } + + return errors; +} + +/** + * Validates a string field against a regex pattern. + * @param value - The string value to validate + * @param fieldName - Name of the field being validated (for error messages) + * @param pattern - Regular expression pattern to test against + * @param customMessage - Optional custom error message + * @returns true if validation passes + * @throws Error if validation fails with detailed message + */ +export function validateFieldPattern( + value: string, + fieldName: string, + pattern: RegExp, + customMessage?: string, +): string[] { + const errors: string[] = []; + // Evaluate only if it is not an unresolved Token + if (!Token.isUnresolved(value)) { + // Verify type + if (typeof value !== 'string') { + errors.push(`Expected string for ${fieldName}, got ${typeof value}`); + } + // Validate specified regex + if (!(pattern instanceof RegExp)) { + errors.push('Pattern must be a valid regular expression'); + } + + // Pattern validation + if (!pattern.test(value)) { + const defaultMessage = `The field ${fieldName} with value "${value}" does not match the required pattern ${pattern}`; + errors.push(customMessage || defaultMessage); + } + } + + return errors; +} + +export type ValidationFn = (param: T) => string[]; + +export function throwIfInvalid(validationFn: ValidationFn, param: T): T { + const errors = validationFn(param); + if (errors.length > 0) { + throw new Error(errors.join('\n')); + } + return param; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts new file mode 100644 index 0000000000000..7f9943c2c34a7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts @@ -0,0 +1,263 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { IResource, Resource } from 'aws-cdk-lib'; +import { CfnDataSource, CfnDataSourceProps } from 'aws-cdk-lib/aws-bedrock'; +import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; +import * as kms from 'aws-cdk-lib/aws-kms'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { ChunkingStrategy } from './chunking'; +import { ContextEnrichment } from './context-enrichment'; +import { CustomTransformation } from './custom-transformation'; +import { ParsingStategy } from './parsing'; +/** + * Specifies the policy for handling data when a data source resource is deleted. + * This policy affects the vector embeddings created from the data source. + */ +export enum DataDeletionPolicy { + /** + * Deletes all vector embeddings derived from the data source upon deletion + * of a data source resource. + */ + DELETE = 'DELETE', + + /** + * Retains all vector embeddings derived from the data source even after + * deletion of a data source resource. + */ + RETAIN = 'RETAIN', +} + +/** + * Represents the types of data sources that can be associated to an Knowledge Base. + */ +export enum DataSourceType { + /** + * Amazon S3 Bucket data source. + */ + S3 = 'S3', + + /** + * Confluence Cloud Instance data source. + */ + CONFLUENCE = 'CONFLUENCE', + + /** + * Salesforce instance data source. + */ + SALESFORCE = 'SALESFORCE', + + /** + * Microsoft SharePoint instance data source. + */ + SHAREPOINT = 'SHAREPOINT', + + /** + * Web Crawler data source. + * Extracts content from authorized public web pages using a crawler. + */ + WEB_CRAWLER = 'WEB', + + /** + * Custom data source. + * A custom data source allows the flexibility to automatically ingest documents + * into your vector database directly. + */ + CUSTOM = 'CUSTOM', + + /** + * Redshift Metadata data source. + */ + REDSHIFT_METADATA = 'REDSHIFT_METADATA', +} + +/** + * Specifies interface for resources created with CDK or imported into CDK. + */ +export interface IDataSource extends IResource { + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + readonly dataSourceId: string; +} + +/** + * Specifies the base class for all data source resources (imported and new). + */ +export abstract class DataSourceBase extends Resource implements IDataSource { + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public abstract readonly dataSourceId: string; + + // Common methods for imported and new data sources go here +} + +/** + * Properties common for creating any of the different data source types. + */ +export interface DataSourceAssociationProps { + /** + * The name of the data source. + * + * @default - A new name will be generated. + */ + readonly dataSourceName?: string; + + /** + * A description of the data source. + * + * @default - No description is provided. + */ + readonly description?: string; + + /** + * The KMS key to use to encrypt the data source. + * + * @default - Service owned and managed key. + */ + readonly kmsKey?: kms.IKey; + + /** + * The data deletion policy to apply to the data source. + * + * @default - Sets the data deletion policy to the default of the data source type. + */ + readonly dataDeletionPolicy?: DataDeletionPolicy; + + /** + * The chunking stategy to use for splitting your documents or content. + * The chunks are then converted to embeddings and written to the vector + * index allowing for similarity search and retrieval of the content. + * + * @default ChunkingStrategy.DEFAULT + */ + readonly chunkingStrategy?: ChunkingStrategy; + + /** + * The parsing strategy to use. + * + * @default - No Parsing Stategy is used. + */ + readonly parsingStrategy?: ParsingStategy; + + /** + * The custom transformation strategy to use. + * + * @default - No custom transformation is used. + */ + readonly customTransformation?: CustomTransformation; + + /** + * The context enrichment configuration to use. + * @default - No context enrichment is used. + */ + readonly contextEnrichment?: ContextEnrichment; +} + +/** + * Specifies the base class for all NEW data source resources of ANY type. + */ +export abstract class DataSourceNew extends DataSourceBase { + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public abstract readonly dataSourceId: string; + /** + * The type of data source. + */ + public abstract readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public abstract readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public abstract readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public abstract readonly kmsKey?: kms.IKey; + + // ------------------------------------------------------ + // Common methods for ALL NEW data sources + // ------------------------------------------------------ + + /** + * Adds appropriate permissions to the KB execution role needed by the data source. + */ + public handleCommonPermissions(props: DataSourceAssociationProps) { + let statementsToAdd: PolicyStatement[] = []; + // Parsing strategy requires access to the parsing FM, so be sure to add permissions + if (props.parsingStrategy) { + statementsToAdd.push(...props.parsingStrategy.generatePolicyStatements()); + } + // Custom transformation requires invoke permissions for the Lambda + if (props.customTransformation) { + statementsToAdd.push(...props.customTransformation.generatePolicyStatements(this)); + } + // Add the permission statements to the KB execution role + statementsToAdd.forEach((statement) => { + this.knowledgeBase.role.addToPrincipalPolicy(statement); + }); + } + + /** + * Formats the data source configuration properties for CloudFormation. + */ + public formatAsCfnProps( + props: DataSourceAssociationProps, + dataSourceConfiguration: CfnDataSource.DataSourceConfigurationProperty, + ): CfnDataSourceProps { + return { + dataDeletionPolicy: props.dataDeletionPolicy, + dataSourceConfiguration: dataSourceConfiguration, + description: props.description, + knowledgeBaseId: this.knowledgeBase.knowledgeBaseId, + name: this.dataSourceName, + serverSideEncryptionConfiguration: props.kmsKey + ? { + kmsKeyArn: props.kmsKey.keyArn, + } + : undefined, + vectorIngestionConfiguration: + props.chunkingStrategy || props.parsingStrategy || props.customTransformation || props.contextEnrichment + ? { + chunkingConfiguration: props.chunkingStrategy?.configuration, + parsingConfiguration: props.parsingStrategy?.configuration, + customTransformationConfiguration: props.customTransformation?.configuration, + contextEnrichmentConfiguration: props.contextEnrichment?.configuration, + } + : undefined, + }; + } +} + +export class DataSource extends DataSourceBase { + public static fromDataSourceId(scope: Construct, id: string, dataSourceId: string): IDataSource { + return new DataSource(scope, id, dataSourceId); + } + + public readonly dataSourceId: string; + + private constructor(scope: Construct, id: string, dataSourceId: string) { + super(scope, id); + this.dataSourceId = dataSourceId; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts new file mode 100644 index 0000000000000..9e4d170f9baf2 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts @@ -0,0 +1,184 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; + +/** + * Knowledge base can split your source data into chunks. A chunk refers to an + * excerpt from a data source that is returned when the knowledge base that it + * belongs to is queried. You have the following options for chunking your + * data. If you opt for NONE, then you may want to pre-process your files by + * splitting them up such that each file corresponds to a chunk. + */ +enum ChunkingStrategyType { + /** + * Amazon Bedrock splits your source data into chunks of the approximate size + * that you set in the `fixedSizeChunkingConfiguration`. + */ + FIXED_SIZE = 'FIXED_SIZE', + /** + * Splits documents into layers of chunks where the first layer contains large + * chunks, and the second layer contains smaller chunks derived from the first + * layer. You set the maximum parent chunk token size and the maximum child + * chunk token size. You also set the absolute number of overlap tokens between + * consecutive parent chunks and consecutive child chunks. + */ + HIERARCHICAL = 'HIERARCHICAL', + /** + * Splits documents into semantically similar text chunks or groups of + * sentences by using a foundation model. Note that there are additional + * costs to using semantic chunking due to its use of a foundation model. + */ + SEMANTIC = 'SEMANTIC', + /** + * Amazon Bedrock treats each file as one chunk. If you choose this option, + * you may want to pre-process your documents by splitting them into separate + * files. + */ + NONE = 'NONE', +} + +export interface HierarchicalChunkingProps { + /** + * The overlap tokens between adjacent chunks. + */ + readonly overlapTokens: number; + /** + * Maximum number of tokens that a parent chunk can contain. + * Keep in mind the maximum chunk size depends on the embedding model chosen. + */ + readonly maxParentTokenSize: number; + /** + * Maximum number of tokens that a child chunk can contain. + * Keep in mind the maximum chunk size depends on the embedding model chosen. + */ + readonly maxChildTokenSize: number; +} + +export abstract class ChunkingStrategy { + // ------------------------------------------------------ + // Static Constants for Easy Customization + // ------------------------------------------------------ + /** + * Fixed Sized Chunking with the default chunk size of 300 tokens and 20% overlap. + */ + public static readonly DEFAULT = ChunkingStrategy.fixedSize( + { maxTokens: 300, overlapPercentage: 20 }, + ); + /** + * Fixed Sized Chunking with the default chunk size of 300 tokens and 20% overlap. + * You can adjust these values based on your specific requirements using the + * `ChunkingStrategy.fixedSize(params)` method. + */ + public static readonly FIXED_SIZE = ChunkingStrategy.fixedSize( + { maxTokens: 300, overlapPercentage: 20 }, + ); + /** + * Hierarchical Chunking with the default for Cohere Models. + * - Overlap tokens: 30 + * - Max parent token size: 500 + * - Max child token size: 100 + */ + public static readonly HIERARCHICAL_COHERE = ChunkingStrategy.hierarchical( + { overlapTokens: 60, maxParentTokenSize: 500, maxChildTokenSize: 300 }, + ); + + /** + * Hierarchical Chunking with the default for Titan Models. + * - Overlap tokens: 60 + * - Max parent token size: 1500 + * - Max child token size: 300 + */ + public static readonly HIERARCHICAL_TITAN = ChunkingStrategy.hierarchical( + { overlapTokens: 60, maxParentTokenSize: 1500, maxChildTokenSize: 300 }, + ); + /** + * Semantic Chunking with the default of bufferSize: 0, + * breakpointPercentileThreshold: 95, and maxTokens: 300. + * You can adjust these values based on your specific requirements using the + * `ChunkingStrategy.semantic(params)` method. + */ + public static readonly SEMANTIC = ChunkingStrategy.semantic( + { bufferSize: 0, breakpointPercentileThreshold: 95, maxTokens: 300 }, + ); + /** + * Amazon Bedrock treats each file as one chunk. Suitable for documents that + * are already pre-processed or text split. + */ + public static readonly NONE = ChunkingStrategy.noChunking(); + + // ------------------------------------------------------ + // Static Methods for Customization + // ------------------------------------------------------ + /** Method for customizing a fixed sized chunking strategy. */ + public static fixedSize(props: CfnDataSource.FixedSizeChunkingConfigurationProperty): ChunkingStrategy { + return { + configuration: { + chunkingStrategy: ChunkingStrategyType.FIXED_SIZE, + fixedSizeChunkingConfiguration: props, + }, + }; + } + + /** + * Method for customizing a hierarchical chunking strategy. + * For custom chunking, the maximum token chunk size depends on the model. + * - Amazon Titan Text Embeddings: 8192 + * - Cohere Embed models: 512 + */ + public static hierarchical(props: HierarchicalChunkingProps): ChunkingStrategy { + return { + configuration: { + chunkingStrategy: ChunkingStrategyType.HIERARCHICAL, + hierarchicalChunkingConfiguration: { + overlapTokens: props.overlapTokens, + levelConfigurations: [ + { maxTokens: props.maxParentTokenSize }, + { maxTokens: props.maxChildTokenSize }, + ], + }, + }, + }; + } + + /** + * Method for customizing a semantic chunking strategy. + * For custom chunking, the maximum token chunk size depends on the model. + * - Amazon Titan Text Embeddings: 8192 + * - Cohere Embed models: 512 + */ + public static semantic(props: CfnDataSource.SemanticChunkingConfigurationProperty): ChunkingStrategy { + return { + configuration: { + chunkingStrategy: ChunkingStrategyType.SEMANTIC, + semanticChunkingConfiguration: props, + }, + }; + } + + /** Method for defining a no chunking strategy. */ + private static noChunking(): ChunkingStrategy { + return { + configuration: { + chunkingStrategy: ChunkingStrategyType.NONE, + }, + }; + } + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + /** The CloudFormation property representation of this configuration */ + public abstract configuration: CfnDataSource.ChunkingConfigurationProperty; + + private constructor() { } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts new file mode 100644 index 0000000000000..7570bbb6bafd3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts @@ -0,0 +1,239 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; + +/** + * The different authentication types available to connect to your Confluence instance. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/confluence-data-source-connector.html#configuration-confluence-connector + */ +export enum ConfluenceDataSourceAuthType { + /** + * Your secret authentication credentials in AWS Secrets Manager should include: + * - `confluenceAppKey` + * - `confluenceAppSecret` + * - `confluenceAccessToken` + * - `confluenceRefreshToken` + */ + OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', + /** + * Your secret authentication credentials in AWS Secrets Manager should include: + * - `username` (email of admin account) + * - `password` (API token) + */ + BASIC = 'BASIC', +} + +/** + * Represents the different types of content objects in Confluence that can be + * crawled by the data source. + */ +export enum ConfluenceObjectType { + SPACE = 'Space', + PAGE = 'Page', + BLOG = 'Blog', + COMMENT = 'Comment', + ATTACHMENT = 'Attachment', +} + +/** + * Defines filters for crawling Confluence content. + * These filters allow you to include or exclude specific content based on object types and patterns. + * + * - For Spaces: Use the unique space key + * - For Pages: Use the main page title + * - For Blogs: Use the main blog title + * - For Comments: Use "Re: Page/Blog Title" + * - For Attachments: Use the filename with extension + * @remarks + * - You can specify inclusion and exclusion patterns using regular expressions. + * - If both inclusion and exclusion patterns match a document, the exclusion takes precedence. + * + * @example + * { + * objectType: ConfluenceObjectType.ATTACHMENT, + * excludePatterns: [".*private.*\\.pdf"] + * } + */ +export interface ConfluenceCrawlingFilters { + /** + * The type of Confluence object to apply the filters to. + */ + readonly objectType: ConfluenceObjectType; + + /** + * Regular expression patterns to include content. + * If specified, only content matching these patterns will be crawled. + */ + readonly includePatterns?: string[]; + + /** + * Regular expression patterns to exclude content. + * Content matching these patterns will not be crawled, even if it matches an include pattern. + */ + readonly excludePatterns?: string[]; +} + +/** + * Interface to add a new data source to an existing KB. + */ +export interface ConfluenceDataSourceAssociationProps extends DataSourceAssociationProps { + /** + * The Confluence host URL or instance URL. + * @example https://example.atlassian.net + */ + readonly confluenceUrl: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials + * for your Confluence instance URL. Secret must start with "AmazonBedrock-". + */ + readonly authSecret: ISecret; + /** + * The supported authentication method to connect to the data source. + * @default ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS + */ + readonly authType?: ConfluenceDataSourceAuthType; + /** + * The filters (regular expression patterns) for the crawling. + * If there's a conflict, the exclude pattern takes precedence. + * @default None - all your content is crawled. + */ + readonly filters?: ConfluenceCrawlingFilters[]; +} + +/** + * Interface to create a new standalone data source object. + */ +export interface ConfluenceDataSourceProps extends ConfluenceDataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up a Confluence Data Source to be added to a knowledge base. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/confluence-data-source-connector.html + */ +export class ConfluenceDataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + /** + * The Confluence host URL or instance URL. + */ + public readonly confluenceUrl: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials. + */ + public readonly authSecret: ISecret; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: ConfluenceDataSourceProps) { + super(scope, id); + // Assign common attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.CONFLUENCE; + this.dataSourceName = + props.dataSourceName ?? + this.generatePhysicalName() + '-confluence-ds'; + this.kmsKey = props.kmsKey; + // Assign unique attributes + this.confluenceUrl = props.confluenceUrl; + this.authSecret = props.authSecret; + + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + this.authSecret.grantRead(this.knowledgeBase.role); + + // Grant write permissions to the knowledge base role for updating the secret. + // This is necessary when using OAuth 2.0 authentication with a refresh token. + if (props.authType === ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS) { + this.authSecret.grantWrite(this.knowledgeBase.role); + } + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + confluenceConfiguration: { + sourceConfiguration: { + authType: props.authType ?? ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, + credentialsSecretArn: this.authSecret.secretArn, + hostUrl: this.confluenceUrl, + hostType: 'SAAS', + }, + crawlerConfiguration: props.filters + ? { + filterConfiguration: { + type: 'PATTERN', + patternObjectFilter: { + filters: props.filters?.map(item => ({ + objectType: item.objectType, + inclusionFilters: item.includePatterns, + exclusionFilters: item.excludePatterns, + })), + }, + }, + } + : undefined, + }, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts new file mode 100644 index 0000000000000..6673dbe9b8479 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts @@ -0,0 +1,92 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; +import { IInvokable } from '../models'; + +/** + * Enum representing the type of context enrichment. + */ +export enum ContextEnrichmentType { + /** + * Uses a Bedrock Foundation Model for context enrichment. + */ + BEDROCK_FOUNDATION_MODEL = 'BEDROCK_FOUNDATION_MODEL', +} + +/** + * Enum representing the method to be used for enrichment strategy. + */ +export enum EnrichmentStrategyConfigurationType { + + CHUNK_ENTITY_EXTRACTION = 'CHUNK_ENTITY_EXTRACTION', +} + +/** + * Properties for configuring a Foundation Model enrichment strategy. + */ +export interface FoundationModelContextEnrichmentProps { + /** + * The Bedrock Foundation Model configuration for context enrichment. + */ + readonly enrichmentModel: IInvokable; +} + +/** + * Abstract class representing a context enrichment strategy. + * The enrichment stategy used to provide additional context. + * For example, Neptune GraphRAG uses Amazon Bedrock foundation + * models to perform chunk entity extraction. + */ +export abstract class ContextEnrichment { + + // ------------------------------------------------------ + // FM Enrichment Strategy + // ------------------------------------------------------ + /** + * Creates a Foundation Model-based enrichment strategy used to provide additional context + * to the RAG application. + */ + public static foundationModel(props: FoundationModelContextEnrichmentProps): ContextEnrichment { + class FoundationModelContextEnrichment extends ContextEnrichment { + public readonly configuration = { + type: ContextEnrichmentType.BEDROCK_FOUNDATION_MODEL, + bedrockFoundationModelConfiguration: { + modelArn: props.enrichmentModel.invokableArn, + enrichmentStrategyConfiguration: { + method: EnrichmentStrategyConfigurationType.CHUNK_ENTITY_EXTRACTION, + }, + }, + }; + + public generatePolicyStatements(): PolicyStatement[] { + return [ + new PolicyStatement({ + actions: ['bedrock:InvokeModel*'], + resources: [props.enrichmentModel.invokableArn], + }), + ]; + } + } + + return new FoundationModelContextEnrichment(); + } + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + /** The CloudFormation property representation of this configuration */ + public abstract configuration: CfnDataSource.ContextEnrichmentConfigurationProperty; + + public abstract generatePolicyStatements(): PolicyStatement[]; +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts new file mode 100644 index 0000000000000..45176b948baa1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts @@ -0,0 +1,111 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; +/** + * Interface to add a new CustomDataSource to an existing KB + */ +export interface CustomDataSourceAssociationProps extends DataSourceAssociationProps {} + +/** + * Interface to create a new Custom Data Source object. + */ +export interface CustomDataSourceProps extends CustomDataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up a custom Data Source to be added to a knowledge base. + */ +export class CustomDataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + // No unique attributes at the moment ... + // + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: CustomDataSourceProps) { + super(scope, id); + // Assign attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.CUSTOM; + + // Turns out chunking and parsing are not replace so pass + // const chunkingStrategy = props.chunkingStrategy; + // const parsingStrategy = props.parsingStrategy; + //const theseAreNotReplacable = { chunkingStrategy, parsingStrategy }; + this.dataSourceName = + props.dataSourceName ?? + this.generatePhysicalName() + '-custom-ds'; + this.kmsKey = props.kmsKey; + + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts new file mode 100644 index 0000000000000..96c15440b07d8 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts @@ -0,0 +1,117 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Stack } from 'aws-cdk-lib'; +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; +import { IFunction } from 'aws-cdk-lib/aws-lambda'; +import { Construct } from 'constructs'; + +/** + * Defines the step in the ingestion process where the custom transformation is applied. + */ +export enum TransformationStep { + /** + * Processes documents after they have been converted into chunks. + * This allows for custom chunk-level metadata addition or custom post-chunking logic. + */ + POST_CHUNKING = 'POST_CHUNKING', +} + +/** + * Properties for configuring a Lambda-based custom transformation. + */ +export interface LambdaCustomTransformationProps { + /** + * The Lambda function to use for custom document processing. + */ + readonly lambdaFunction: IFunction; + + /** + * An S3 bucket URL/path to store input documents for Lambda processing + * and to store the output of the processed documents. + * @example "s3://my-bucket/chunk-processor/" + */ + readonly s3BucketUri: string; + + // Commented as only one supported at the time this code is written. + // /** + // * When in the ingestion process to apply the transformation step. + // * @default TransformationStep.POST_CHUNKING + // */ + // readonly stepToApply?: TransformationStep; +} + +/** + * Represents a custom transformation configuration for a data source ingestion. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-chunking-parsing.html#kb-custom-transformation + */ +export abstract class CustomTransformation { + + // ------------------------------------------------------ + // Lambda Transformation Strategy + // ------------------------------------------------------ + /** + * This feature allows you to use a Lambda function to inject your own logic + * into the knowledge base ingestion process. + * @see https://github.com/aws-samples/amazon-bedrock-samples/blob/main/knowledge-bases/features-examples/02-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb + */ + public static lambda(props: LambdaCustomTransformationProps): CustomTransformation { + + class LambdaCustomTransformation extends CustomTransformation { + public readonly configuration = { + intermediateStorage: { + s3Location: { + uri: props.s3BucketUri, + }, + }, + transformations: [ + { + stepToApply: TransformationStep.POST_CHUNKING, + // To uncomment when more steps are available + // stepToApply: props.stepToApply ?? TransformationStep.POST_CHUNKING, + transformationFunction: { + transformationLambdaConfiguration: { + lambdaArn: props.lambdaFunction.functionArn, + }, + }, + }, + ], + }; + public generatePolicyStatements(scope: Construct): PolicyStatement[] { + return [ + new PolicyStatement({ + actions: ['lambda:InvokeFunction'], + resources: [`${props.lambdaFunction.functionArn}:*`], + conditions: { + StringEquals: { + 'aws:ResourceAccount': Stack.of(scope).account, + }, + }, + }), + ]; + } + } + return new LambdaCustomTransformation(); + } + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + /** + * The CloudFormation property representation of this custom transformation configuration. + */ + public abstract configuration: CfnDataSource.CustomTransformationConfigurationProperty; + + public abstract generatePolicyStatements(scope: Construct): PolicyStatement[]; + +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts new file mode 100644 index 0000000000000..f826d121c7034 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts @@ -0,0 +1,67 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +export const DEFAULT_PARSING_PROMPT = `Transcribe the text content from an image page and output in Markdown syntax (not code blocks). Follow these steps: + +1. Examine the provided page carefully. + +2. Identify all elements present in the page, including headers, body text, footnotes, tables, visulizations, captions, and page numbers, etc. + +3. Use markdown syntax to format your output: + - Headings: # for main, ## for sections, ### for subsections, etc. + - Lists: * or - for bulleted, 1. 2. 3. for numbered + - Do not repeat yourself + +4. If the element is a visulization + - Provide a detailed description in natural language + - Do not transcribe text in the visualization after providing the description + +5. If the element is a table + - Create a markdown table, ensuring every row has the same number of columns + - Maintain cell alignment as closely as possible + - Do not split a table into multiple tables + - If a merged cell spans multiple rows or columns, place the text in the top-left cell and output ' ' for other + - Use | for column separators, |-|-| for header row separators + - If a cell has multiple items, list them in separate rows + - If the table contains sub-headers, separate the sub-headers from the headers in another row + +6. If the element is a paragraph + - Transcribe each text element precisely as it appears + +7. If the element is a header, footer, footnote, page number + - Transcribe each text element precisely as it appears + +Output Example: + +A bar chart showing annual sales figures, with the y-axis labeled "Sales ($Million)" and the x-axis labeled "Year". The chart has bars for 2018 ($12M), 2019 ($18M), 2020 ($8M), and 2021 ($22M). +Figure 3: This chart shows annual sales in millions. The year 2020 was significantly down due to the COVID-19 pandemic. + +# Annual Report + +## Financial Highlights + +* Revenue: $40M +* Profit: $12M +* EPS: $1.25 + + +| | Year Ended December 31, | | +| | 2021 | 2022 | +|-|-|-| +| Cash provided by (used in): | | | +| Operating activities | $ 46,327 | $ 46,752 | +| Investing activities | (58,154) | (37,601) | +| Financing activities | 6,291 | 9,718 | + +Here is the image. +`; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts new file mode 100644 index 0000000000000..a9ce73dee5d24 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; +import { DEFAULT_PARSING_PROMPT } from './default-parsing-prompt'; +import { IInvokable } from '../models'; + +export enum ParsingModality { + /** + * Specifies whether to enable parsing of multimodal data, including both text and/or images. + */ + MULTIMODAL = 'MULTIMODAL', +} +/** + * Enum representing the types of parsing strategies available for Amazon Bedrock Knowledge Bases. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-advanced-parsing.html + */ +export enum ParsingStategyType { + /** + * Uses a Bedrock Foundation Model for advanced parsing of non-textual information from documents. + */ + FOUNDATION_MODEL = 'BEDROCK_FOUNDATION_MODEL', + /** + * Processes multimodal data using Bedrock Data Automation (BDA). It leverages + * generative AI to automate the transformation of multi-modal data into structured formats. + * If you choose a foundation model or Amazon Bedrock Data Automation for parsing and it fails + * to parse a file, the Amazon Bedrock default parser is used instead. + */ + DATA_AUTOMATION = 'BEDROCK_DATA_AUTOMATION', +} + +/** + * Properties for configuring a Foundation Model parsing strategy. + */ +export interface FoundationModelParsingStategyProps { + /** + * The Foundation Model to use for parsing non-textual information. + * Currently supported models are Claude 3 Sonnet and Claude 3 Haiku. + */ + readonly parsingModel: IInvokable; + + /** + * Custom prompt to instruct the parser on how to interpret the document. + * + * @default - Uses the default instruction prompt as provided in the AWS Console. + */ + readonly parsingPrompt?: string; + + /** + * Specifies whether to enable parsing of multimodal data, including both text and/or images. + * + * @default undefined - Text only + */ + readonly parsingModality?: ParsingModality; +} + +/** + * Represents an advanced parsing strategy configuration for Knowledge Base ingestion. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-chunking-parsing.html#kb-advanced-parsing + */ +export abstract class ParsingStategy { + // ------------------------------------------------------ + // FM Parsing Strategy + // ------------------------------------------------------ + /** + * Creates a Foundation Model-based parsing strategy for extracting non-textual information + * from documents such as tables and charts. + * - Additional costs apply when using advanced parsing due to foundation model usage. + * - There are limits on file types (PDF) and total data that can be parsed using advanced parsing. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits + */ + public static foundationModel(props: FoundationModelParsingStategyProps): ParsingStategy { + class FoundationModelTransformation extends ParsingStategy { + /** The CloudFormation property representation of this configuration */ + public readonly configuration = { + bedrockFoundationModelConfiguration: { + modelArn: props.parsingModel.invokableArn, + parsingPrompt: { + parsingPromptText: props.parsingPrompt ?? DEFAULT_PARSING_PROMPT, + }, + }, + parsingStrategy: ParsingStategyType.FOUNDATION_MODEL, + }; + + public generatePolicyStatements(): PolicyStatement[] { + return [ + new PolicyStatement({ + actions: ['bedrock:InvokeModel'], + resources: [props.parsingModel.invokableArn], + }), + ]; + } + } + + return new FoundationModelTransformation(); + } + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + /** The CloudFormation property representation of this configuration */ + public abstract configuration: CfnDataSource.ParsingConfigurationProperty; + + public abstract generatePolicyStatements(): PolicyStatement[]; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts new file mode 100644 index 0000000000000..17f59a868b542 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts @@ -0,0 +1,131 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { IBucket } from 'aws-cdk-lib/aws-s3'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; +/** + * Interface to add a new S3DataSource to an existing KB + */ +export interface S3DataSourceAssociationProps extends DataSourceAssociationProps { + /** + * The bucket that contains the data source. + */ + readonly bucket: IBucket; + + /** + * The prefixes of the objects in the bucket that should be included in the data source. + * + * @default - All objects in the bucket. + */ + readonly inclusionPrefixes?: string[]; +} + +/** + * Interface to create a new S3 Data Source object. + */ +export interface S3DataSourceProps extends S3DataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up an S3 Data Source to be added to a knowledge base. + */ +export class S3DataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + /** + * The bucket associated with the data source. + */ + public readonly bucket: IBucket; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: S3DataSourceProps) { + super(scope, id); + // Assign attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.S3; + + // Store chunking and parsing strategies from props + //const chunkingStrategy = props.chunkingStrategy; + //const parsingStrategy = props.parsingStrategy; + this.dataSourceName = + props.dataSourceName ?? + this.generatePhysicalName() + '-s3-ds'; + this.bucket = props.bucket; + this.kmsKey = props.kmsKey; + + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + this.bucket.grantRead(this.knowledgeBase.role); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + s3Configuration: { + bucketArn: props.bucket.bucketArn, + inclusionPrefixes: props.inclusionPrefixes, + }, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts new file mode 100644 index 0000000000000..24840505f6d9c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts @@ -0,0 +1,213 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceNew, DataSourceAssociationProps, DataSourceType } from './base-data-source'; +/** + * Represents the authentication types available for connecting to a Salesforce data source. + */ +export enum SalesforceDataSourceAuthType { + /** + * Your secret authentication credentials in AWS Secrets Manager should include: + * - `consumerKey` (app client ID) + * - `consumerSecret` (client secret) + * - `authenticationUrl` + */ + OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', +} + +/** + * Represents the Salesforce object types that can be accessed by the data source connector. + */ +export enum SalesforceObjectType { + ACCOUNT = 'Account', + ATTACHMENT = 'Attachment', + CAMPAIGN = 'Campaign', + CONTENT_VERSION = 'ContentVersion', + PARTNER = 'Partner', + PRICEBOOK_2 = 'Pricebook2', + CASE = 'Case', + CONTACT = 'Contact', + CONTRACT = 'Contract', + DOCUMENT = 'Document', + IDEA = 'Idea', + LEAD = 'Lead', + OPPORTUNITY = 'Opportunity', + PRODUCT_2 = 'Product2', + SOLUTION = 'Solution', + TASK = 'Task', + FEED_ITEM = 'FeedItem', + FEED_COMMENT = 'FeedComment', + KNOWLEDGE_KAV = 'Knowledge__kav', + USER = 'User', + COLLABORATION_GROUP = 'CollaborationGroup', +} + +/** + * Defines the crawling filters for Salesforce data ingestion. + */ +export interface SalesforceCrawlingFilters { + /** + * The Salesforce object type to which this filter applies. + */ + readonly objectType: SalesforceObjectType; + /** + * Regular expression patterns to include specific content. + */ + readonly includePatterns?: string[]; + /** + * Regular expression patterns to exclude specific content. + */ + readonly excludePatterns?: string[]; +} + +/** + * Interface to add a new data source to an existing KB. + */ +export interface SalesforceDataSourceAssociationProps extends DataSourceAssociationProps { + /** + * The Salesforce host URL or instance URL. + * @example "https://company.salesforce.com/" + */ + readonly endpoint: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials + * for your Salesforce instance URL. Secret must start with "AmazonBedrock-". + */ + readonly authSecret: ISecret; + /** + * The filters (regular expression patterns) for the crawling. + * If there's a conflict, the exclude pattern takes precedence. + * @default None - all your content is crawled. + */ + readonly filters?: SalesforceCrawlingFilters[]; +} + +/** + * Interface to create a new standalone data source object. + */ +export interface SalesforceDataSourceProps extends SalesforceDataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up an data source to be added to a knowledge base. + */ +export class SalesforceDataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + /** + * The Salesforce host URL or instance URL. + */ + public readonly endpoint: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials. + */ + public readonly authSecret: ISecret; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: SalesforceDataSourceProps) { + super(scope, id); + // Assign attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.SALESFORCE; + this.dataSourceName = + props.dataSourceName ?? this.generatePhysicalName() + '-sfdc-ds'; + this.endpoint = props.endpoint; + this.authSecret = props.authSecret; + this.kmsKey = props.kmsKey; + + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + this.authSecret.grantRead(this.knowledgeBase.role); + + // ------------------------------------------------------ + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + salesforceConfiguration: { + sourceConfiguration: { + authType: SalesforceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, + credentialsSecretArn: this.authSecret.secretArn, + hostUrl: this.endpoint, + }, + crawlerConfiguration: props.filters + ? { + filterConfiguration: { + type: 'PATTERN', + patternObjectFilter: { + filters: props.filters?.map(item => ({ + objectType: item.objectType, + inclusionFilters: item.includePatterns, + exclusionFilters: item.excludePatterns, + })), + }, + }, + } + : undefined, + }, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts new file mode 100644 index 0000000000000..3472310b124c3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts @@ -0,0 +1,233 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; +/** + * Represents the authentication types available for connecting to a SharePoint data source. + */ +export enum SharePointDataSourceAuthType { + /** + * OAuth 2.0 Client Credentials flow for authentication with SharePoint. + * Your secret authentication credentials in AWS Secrets Manager should include: + * - `username`: The admin username for SharePoint authentication + * - `password`: The admin password associated with the username + * - `clientId`: The client ID (also known as application ID) + * - `clientSecret`: The client secret + */ + OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', +} + +/** + * Represents the SharePoint object types that can be accessed by the data source connector. + */ +export enum SharePointObjectType { + /** + * Represents a SharePoint page, which typically contains web parts and content. + */ + PAGE = 'Page', + + /** + * Represents a calendar event in SharePoint. + */ + EVENT = 'Event', + + /** + * Represents a file stored in SharePoint document libraries. + */ + FILE = 'File', +} + +/** + * Defines the crawling filters for SharePoint data ingestion. These filters allow + * you to specify which content should be included or excluded during the crawling process. + * If you specify an inclusion and exclusion filter and both match a document, + * the exclusion filter takes precedence and the document isn’t crawled. + */ +export interface SharePointCrawlingFilters { + /** + * The SharePoint object type this filter applies to. + */ + readonly objectType: SharePointObjectType; + /** + * Optional array of regular expression patterns to include specific content. + * Only content matching these patterns will be crawled. + * @example ['.*public.*', '.*shared.*'] + */ + readonly includePatterns?: string[]; + /** + * Optional array of regular expression patterns to exclude specific content. + * Content matching these patterns will be skipped during crawling. + * @example ['.*private.*', '.*confidential.*'] + */ + readonly excludePatterns?: string[]; +} + +/** + * Interface to add a new data source to an existing KB + */ +export interface SharePointDataSourceAssociationProps extends DataSourceAssociationProps { + /** + * The domain of your SharePoint instance or site URL/URLs. + * @example "yourdomain" + */ + readonly domain: string; + /** + * The SharePoint site URL/URLs. + * Must start with “https”. All URLs must start with same protocol. + * @example ["https://yourdomain.sharepoint.com/sites/mysite"] + */ + readonly siteUrls: string[]; + /** + * The identifier of your Microsoft 365 tenant. + * @example "d1c035a6-1dcf-457d-97e3" + */ + readonly tenantId: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials + * for your Sharepoint instance URL. Secret must start with "AmazonBedrock-". + */ + readonly authSecret: ISecret; + /** + * The filters (regular expression patterns) for the crawling. + * If there's a conflict, the exclude pattern takes precedence. + * @default None - all your content is crawled. + */ + readonly filters?: SharePointCrawlingFilters[]; +} + +/** + * Interface to create a new standalone data source object + */ +export interface SharePointDataSourceProps extends SharePointDataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up an data source to be added to a knowledge base. + */ +export class SharePointDataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + /** + * The domain name of your SharePoint instance. + */ + public readonly domain: string; + /** + * The AWS Secrets Manager secret that stores your authentication credentials. + */ + public readonly authSecret: ISecret; + /** + * The SharePoint site URL/URLs. + */ + public readonly siteUrls: string[]; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: SharePointDataSourceProps) { + super(scope, id); + // Assign attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.SHAREPOINT; + this.dataSourceName = + props.dataSourceName ?? + this.generatePhysicalName() + '-sharepoint-ds'; + this.siteUrls = props.siteUrls; + this.domain = props.domain; + this.authSecret = props.authSecret; + this.kmsKey = props.kmsKey; + + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + this.authSecret.grantRead(this.knowledgeBase.role); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + sharePointConfiguration: { + sourceConfiguration: { + authType: SharePointDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, + credentialsSecretArn: this.authSecret.secretArn, + hostType: 'ONLINE', + domain: props.domain, + siteUrls: this.siteUrls, + tenantId: props.tenantId, + }, + crawlerConfiguration: props.filters + ? { + filterConfiguration: { + type: 'PATTERN', + patternObjectFilter: { + filters: props.filters?.map(item => ({ + objectType: item.objectType, + inclusionFilters: item.includePatterns, + exclusionFilters: item.excludePatterns, + })), + }, + }, + } + : undefined, + }, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts new file mode 100644 index 0000000000000..78a4325db211e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts @@ -0,0 +1,217 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { Construct } from 'constructs'; + +import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; +import { DataSourceNew, DataSourceAssociationProps, DataSourceType } from './base-data-source'; +/** + * The scope of the crawling. + */ +export enum CrawlingScope { + /** + * Crawls only web pages that belong to the same host or primary domain. + */ + HOST_ONLY = 'HOST_ONLY', + /** + * Includes subdomains in addition to the host or primary domain, i.e. + * web pages that contain "aws.amazon.com" can also include + * sub domain "docs.aws.amazon.com" + */ + SUBDOMAINS = 'SUBDOMAINS', + /** + * Limit crawling to web pages that belong to the same host and with the + * same initial URL path. + */ + DEFAULT = 'DEFAULT', +} + +/** + * The filters (regular expression patterns) to include or exclude in the crawling + * in accordance with your scope. + */ +export interface CrawlingFilters { + /** + * Include patterns. + */ + readonly includePatterns?: string[]; + /** + * Exclude paths. + */ + readonly excludePatterns?: string[]; +} + +/** + * Interface to add a new data source to an existing KB. + */ +export interface WebCrawlerDataSourceAssociationProps extends DataSourceAssociationProps { + /** + * The source urls in the format `https://www.sitename.com`. + * Maximum of 100 URLs. + */ + readonly sourceUrls: string[]; + /** + * The scope of the crawling. + * @default - CrawlingScope.DEFAULT + */ + readonly crawlingScope?: CrawlingScope; + /** + * The max rate at which pages are crawled, up to 300 per minute per host. + * Higher values will decrease sync time but increase the load on the host. + * @default 300 + */ + readonly crawlingRate?: number; + /** + * The filters (regular expression patterns) for the crawling. + * If there's a conflict, the exclude pattern takes precedence. + * @default None + */ + readonly filters?: CrawlingFilters; + /** + * The user agent string to use when crawling. + * @default - Default user agent string + */ + readonly userAgent?: string; + /** + * The user agent header to use when crawling. A string used for identifying + * the crawler or bot when it accesses a web server. The user agent header value + * consists of the bedrockbot, UUID, and a user agent suffix for your crawler (if one is provided). + * By default, it is set to bedrockbot_UUID. You can optionally append a custom suffix to bedrockbot_UUID + * to allowlist a specific user agent permitted to access your source URLs. + * @default - Default user agent header (bedrockbot_UUID) + */ + readonly userAgentHeader?: string; + /** + * The maximum number of pages to crawl. The max number of web pages crawled from your source URLs, + * up to 25,000 pages. If the web pages exceed this limit, the data source sync will fail and + * no web pages will be ingested. + * @default - No limit + */ + readonly maxPages?: number; +} + +/** + * Interface to create a new standalone data source object. + */ +export interface WebCrawlerDataSourceProps extends WebCrawlerDataSourceAssociationProps { + /** + * The knowledge base to associate with the data source. + */ + readonly knowledgeBase: IKnowledgeBase; +} + +/** + * Sets up a web crawler data source to be added to a knowledge base. + */ +export class WebCrawlerDataSource extends DataSourceNew { + // ------------------------------------------------------ + // Common attributes for all new data sources + // ------------------------------------------------------ + /** + * The unique identifier of the data source. + * @example 'JHUEVXUZMU' + */ + public readonly dataSourceId: string; + /** + * The type of data source. + */ + public readonly dataSourceType: DataSourceType; + /** + * The name of the data source. + */ + public readonly dataSourceName: string; + /** + * The knowledge base associated with the data source. + */ + public readonly knowledgeBase: IKnowledgeBase; + /** + * The KMS key to use to encrypt the data source. + */ + public readonly kmsKey?: IKey; + // ------------------------------------------------------ + // Unique to this class + // ------------------------------------------------------ + /** + * The max rate at which pages are crawled. + */ + public readonly siteUrls: string[]; + /** + * The max rate at which pages are crawled. + */ + public readonly crawlingRate: number; + /** + * The maximum number of pages to crawl. + */ + public readonly maxPages: number; + // ------------------------------------------------------ + // Internal Only + // ------------------------------------------------------ + /** + * The Data Source cfn resource. + */ + private readonly __resource: CfnDataSource; + + constructor(scope: Construct, id: string, props: WebCrawlerDataSourceProps) { + super(scope, id); + // Assign attributes + this.knowledgeBase = props.knowledgeBase; + this.dataSourceType = DataSourceType.WEB_CRAWLER; + this.dataSourceName = + props.dataSourceName ?? + this.generatePhysicalName() + '-crawler-ds'; + this.kmsKey = props.kmsKey; + this.crawlingRate = props.crawlingRate ?? 300; + this.siteUrls = props.sourceUrls; + this.maxPages = props.maxPages ?? 25000; + // ------------------------------------------------------ + // Manage permissions for the data source + // ------------------------------------------------------ + this.handleCommonPermissions(props); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + + this.__resource = new CfnDataSource(this, 'DataSource', { + ...this.formatAsCfnProps(props, { + type: this.dataSourceType, + webConfiguration: { + crawlerConfiguration: { + crawlerLimits: { + rateLimit: this.crawlingRate, + maxPages: this.maxPages, + }, + scope: props.crawlingScope !== CrawlingScope.DEFAULT ? props.crawlingScope : undefined, + inclusionFilters: props.filters?.includePatterns, + exclusionFilters: props.filters?.excludePatterns, + userAgent: props.userAgent, + userAgentHeader: props.userAgentHeader, + }, + sourceConfiguration: { + urlConfiguration: { + seedUrls: props.sourceUrls.map(item => ({ url: item })), + }, + }, + }, + }), + }); + + this.dataSourceId = this.__resource.attrDataSourceId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts new file mode 100644 index 0000000000000..930aff5c9e702 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts @@ -0,0 +1,517 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +/****************************************************************************** + * CONTENT FILTERS + *****************************************************************************/ +/** + * The strength of the content filter. As you increase the filter strength, + * the likelihood of filtering harmful content increases and the probability + * of seeing harmful content in your application reduces. + */ +export enum ContentFilterStrength { + NONE = 'NONE', + LOW = 'LOW', + MEDIUM = 'MEDIUM', + HIGH = 'HIGH', +} + +/** + * The type of harmful category usable in a content filter. + */ +export enum ContentFilterType { + /** + * Describes input prompts and model responses that indicates sexual interest, activity, + * or arousal using direct or indirect references to body parts, physical traits, or sex. + */ + SEXUAL = 'SEXUAL', + /** + * Describes input prompts and model responses that includes glorification of or threats + * to inflict physical pain, hurt, or injury toward a person, group or thing. + */ + VIOLENCE = 'VIOLENCE', + /** + * Describes input prompts and model responses that discriminate, criticize, insult, + * denounce, or dehumanize a person or group on the basis of an identity (such as race, + * ethnicity, gender, religion, sexual orientation, ability, and national origin). + */ + HATE = 'HATE', + /** + * Describes input prompts and model responses that includes demeaning, humiliating, + * mocking, insulting, or belittling language. This type of language is also labeled + * as bullying. + */ + INSULTS = 'INSULTS', + /** + * Describes input prompts and model responses that seeks or provides information + * about engaging in misconduct activity, or harming, defrauding, or taking advantage + * of a person, group or institution. + */ + MISCONDUCT = 'MISCONDUCT', + /** + * Enable to detect and block user inputs attempting to override system instructions. + * To avoid misclassifying system prompts as a prompt attack and ensure that the filters + * are selectively applied to user inputs, use input tagging. + */ + PROMPT_ATTACK = 'PROMPT_ATTACK', +} + +/** + * Interface to declare a content filter. + */ +export interface ContentFilter { + /** + * The type of harmful category that the content filter is applied to + */ + readonly type: ContentFilterType; + /** + * The strength of the content filter to apply to prompts / user input. + */ + readonly inputStrength: ContentFilterStrength; + /** + * The strength of the content filter to apply to model responses. + */ + readonly outputStrength: ContentFilterStrength; +} + +/****************************************************************************** + * TOPIC FILTERS + *****************************************************************************/ +/** + * Interface for creating a custom Topic + */ +export interface CustomTopicProps { + /** + * The name of the topic to deny. + */ + readonly name: string; + /** + * Provide a clear definition to detect and block user inputs and FM responses + * that fall into this topic. Avoid starting with "don't". + * @example `Investment advice refers to inquiries, guidance, or recommendations + * regarding the management or allocation of funds or assets with the goal of + * generating returns or achieving specific financial objectives.` + */ + readonly definition: string; + /** + * Representative phrases that refer to the topic. These phrases can represent + * a user input or a model response. Add up to 5 phrases, up to 100 characters + * each. + * @example "Where should I invest my money?" + */ + readonly examples: string[]; +} + +/** + * Defines a topic to deny. + */ +export class Topic { + public static readonly FINANCIAL_ADVICE = new Topic({ + name: 'Financial_Advice', + definition: + "'Discussions that involve providing guidance, recommendations, or suggestions related to managing, investing, or handling finances, investments, or assets.", + examples: [ + 'Can you suggest some good stocks to invest in right now?', + "What's the best way to save for retirement?", + 'Should I put my money in a high-risk investment?', + 'How can I maximize my returns on investments?', + 'Is it a good time to buy real estate?', + ], + }); + + public static readonly POLITICAL_ADVICE = new Topic({ + name: 'Political_Advice', + definition: + 'Conversations that express views, opinions, or endorsements related to political parties, political ideologies, elections, or political figures.', + examples: [ + "What's your stance on the current government policies?", + 'Do you support party X or Y in the upcoming election?', + 'Can you tell me which political party is better?', + 'What do you think about the new policy introduced by the president?', + 'Should I vote for this candidate?', + ], + }); + + public static readonly MEDICAL_ADVICE = new Topic({ + name: 'Medical_Advice', + definition: + 'Providing recommendations, diagnosis, treatment options, or guidance on medical conditions, symptoms, medications, or health-related issues.', + examples: [ + 'What should I do to treat a persistent cough?', + 'Can you recommend some medication for my headache?', + 'What are the symptoms of a specific medical condition?', + 'Is this drug effective for treating my illness?', + "Do I need to see a doctor for this pain I'm experiencing?", + ], + }); + + public static readonly INAPPROPRIATE_CONTENT = new Topic({ + name: 'Inappropriate_Content', + definition: + 'Any discussions or references that include hate speech, discriminatory remarks, sexual content, or explicit language.', + examples: [ + 'Why are people from X country so [discriminatory remark]?', + 'Can you tell me a dirty joke?', + '[Use of explicit language]', + 'This service is as bad as [hate speech].', + 'Do you have any adult content or products?', + ], + }); + + public static readonly LEGAL_ADVICE = new Topic({ + name: 'Legal_Advice', + definition: + 'Offering guidance or suggestions on legal matters, legal actions, interpretation of laws, or legal rights and responsibilities.', + examples: [ + 'Can I sue someone for this?', + 'What are my legal rights in this situation?', + 'Is this action against the law?', + 'What should I do to file a legal complaint?', + 'Can you explain this law to me?', + ], + }); + + public static custom(props: CustomTopicProps) { + return new Topic(props); + } + + /** + * The name of the topic to deny. + */ + readonly name: string; + /** + * Definition of the topic. + */ + readonly definition: string; + /** + * Representative phrases that refer to the topic. + */ + readonly examples?: string[]; + + protected constructor(props: CustomTopicProps) { + (this.name = props.name), (this.definition = props.definition), (this.examples = props.examples); + } +} + +/****************************************************************************** + * WORD FILTERS + *****************************************************************************/ +/** + * The managed word type filter available for guardrails. + */ +export enum ManagedWordFilterType { + PROFANITY = 'PROFANITY', +} + +/****************************************************************************** + * SENSITIVE INFORMATION FILTERS - PII + *****************************************************************************/ +export namespace PIIType { + /** + * Types of PII that are general, and not domain-specific. + */ + export enum General { + /** + * A physical address, such as "100 Main Street, Anytown, USA" or "Suite #12, + * Building 123". An address can include information such as the street, building, + * location, city, state, country, county, zip code, precinct, and neighborhood. + */ + ADDRESS = 'ADDRESS', + /** + * An individual's age, including the quantity and unit of time. + */ + AGE = 'AGE', + /** + * The number assigned to a driver's license, which is an official document + * permitting an individual to operate one or more motorized vehicles on a + * public road. A driver's license number consists of alphanumeric characters. + */ + DRIVER_ID = 'DRIVER_ID', + /** + * An email address, such as marymajor@email.com. + */ + EMAIL = 'EMAIL', + /** + * A license plate for a vehicle is issued by the state or country where the + * vehicle is registered. The format for passenger vehicles is typically five + * to eight digits, consisting of upper-case letters and numbers. The format + * varies depending on the location of the issuing state or country. + */ + LICENSE_PLATE = 'LICENSE_PLATE', + /** + * An individual's name. This entity type does not include titles, such as Dr., + * Mr., Mrs., or Miss. + */ + NAME = 'NAME', + /** + * An alphanumeric string that is used as a password, such as "*very20special#pass*". + */ + PASSWORD = 'PASSWORD', + /** + * A phone number. This entity type also includes fax and pager numbers. + */ + PHONE = 'PHONE', + /** + * A user name that identifies an account, such as a login name, screen name, + * nick name, or handle. + */ + USERNAME = 'USERNAME', + /** + * A Vehicle Identification Number (VIN) uniquely identifies a vehicle. VIN + * content and format are defined in the ISO 3779 specification. Each country + * has specific codes and formats for VINs. + */ + VEHICLE_IDENTIFICATION_NUMBER = 'VEHICLE_IDENTIFICATION_NUMBER', + } + + /** + * Types of PII in the domain of Finance. + */ + export enum Finance { + /** + * A three-digit card verification code (CVV) that is present on VISA, MasterCard, + * and Discover credit and debit cards. For American Express credit or debit cards, + * the CVV is a four-digit numeric code. + */ + CREDIT_DEBIT_CARD_CVV = 'CREDIT_DEBIT_CARD_CVV', + /** + * The expiration date for a credit or debit card. This number is usually four digits + * long and is often formatted as month/year or MM/YY. Guardrails recognizes expiration + * dates such as 01/21, 01/2021, and Jan 2021. + */ + CREDIT_DEBIT_CARD_EXPIRY = 'CREDIT_DEBIT_CARD_EXPIRY', + /** + * The number for a credit or debit card. These numbers can vary from 13 to 16 digits + * in length. + */ + CREDIT_DEBIT_CARD_NUMBER = 'CREDIT_DEBIT_CARD_NUMBER', + /** + * A four-digit personal identification number (PIN) with which you can access your + * bank account. + */ + PIN = 'PIN', + /** + * A SWIFT code is a standard format of Bank Identifier Code (BIC) used to specify a + * particular bank or branch. Banks use these codes for money transfers such as + * international wire transfers. SWIFT codes consist of eight or 11 characters. + */ + SWIFT_CODE = 'SWIFT_CODE', + /** + * An International Bank Account Number (IBAN). It has specific formats in each country. + */ + INTERNATIONAL_BANK_ACCOUNT_NUMBER = 'INTERNATIONAL_BANK_ACCOUNT_NUMBER', + } + + /** + * Types of PII in the domain of IT (Information Technology). + */ + export enum InformationTechnology { + /** + * A web address, such as www.example.com. + */ + URL = 'URL', + /** + * An IPv4 address, such as 198.51.100.0. + */ + IP_ADDRESS = 'IP_ADDRESS', + /** + * A media access control (MAC) address assigned to a network interface. + */ + MAC_ADDRESS = 'MAC_ADDRESS', + /** + * A unique identifier that's associated with a secret access key. You use + * the access key ID and secret access key to sign programmatic AWS requests + * cryptographically. + */ + AWS_ACCESS_KEY = 'AWS_ACCESS_KEY', + /** + * A unique identifier that's associated with a secret access key. You use + * the access key ID and secret access key to sign programmatic AWS requests + * cryptographically. + */ + AWS_SECRET_KEY = 'AWS_SECRET_KEY', + } + + /** + * Types of PII specific to the USA. + */ + export enum USASpecific { + /** + * A US bank account number, which is typically 10 to 12 digits long. + */ + US_BANK_ACCOUNT_NUMBER = 'US_BANK_ACCOUNT_NUMBER', + /** + * A US bank account routing number. These are typically nine digits long. + */ + US_BANK_ROUTING_NUMBER = 'US_BANK_ROUTING_NUMBER', + /** + * A US Individual Taxpayer Identification Number (ITIN) is a nine-digit number + * that starts with a "9" and contain a "7" or "8" as the fourth digit. + */ + US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER = 'US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER', + /** + * A US passport number. Passport numbers range from six to nine alphanumeric characters. + */ + US_PASSPORT_NUMBER = 'US_PASSPORT_NUMBER', + /** + * A US Social Security Number (SSN) is a nine-digit number that is issued to US citizens, + * permanent residents, and temporary working residents. + */ + US_SOCIAL_SECURITY_NUMBER = 'US_SOCIAL_SECURITY_NUMBER', + } + + /** + * Types of PII specific to Canada. + */ + export enum CanadaSpecific { + /** + * A Canadian Health Service Number is a 10-digit unique identifier, + * required for individuals to access healthcare benefits. + */ + CA_HEALTH_NUMBER = 'CA_HEALTH_NUMBER', + /** + * A Canadian Social Insurance Number (SIN) is a nine-digit unique identifier, + * required for individuals to access government programs and benefits. + */ + CA_SOCIAL_INSURANCE_NUMBER = 'CA_SOCIAL_INSURANCE_NUMBER', + } + + /** + * Types of PII specific to the United Kingdom (UK). + */ + export enum UKSpecific { + /** + * A UK National Health Service Number is a 10-17 digit number, such as 485 777 3456. + */ + UK_NATIONAL_HEALTH_SERVICE_NUMBER = 'UK_NATIONAL_HEALTH_SERVICE_NUMBER', + /** + * A UK National Insurance Number (NINO) provides individuals with access to National + * Insurance (social security) benefits. It is also used for some purposes in the UK + * tax system. + */ + UK_NATIONAL_INSURANCE_NUMBER = 'UK_NATIONAL_INSURANCE_NUMBER', + /** + * A UK Unique Taxpayer Reference (UTR) is a 10-digit number that identifies a + * taxpayer or a business. + */ + UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER = 'UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER', + } +} + +/** + * Guardrail action when a sensitive entity is detected. + */ +export enum GuardrailAction { + /** + * If sensitive information is detected in the prompt or response, the guardrail + * blocks all the content and returns a message that you configure. + */ + BLOCK = 'BLOCK', + /** + * If sensitive information is detected in the model response, the guardrail masks + * it with an identifier, the sensitive information is masked and replaced with + * identifier tags (for example: [NAME-1], [NAME-2], [EMAIL-1], etc.). + */ + ANONYMIZE = 'ANONYMIZE', +} + +/** + * Interface to define a PII Filter. + */ +export interface PIIFilter { + /** + * The type of PII to filter. + */ + readonly type: + | PIIType.General + | PIIType.Finance + | PIIType.InformationTechnology + | PIIType.USASpecific + | PIIType.CanadaSpecific + | PIIType.UKSpecific; + /** + * The action to take when PII is detected. + */ + readonly action: GuardrailAction; +} + +/****************************************************************************** + * SENSITIVE INFORMATION FILTERS - REGEX + *****************************************************************************/ +/** + * A Regular expression (regex) filter for sensitive information. + * + * @example + * const regexFilter: RegexFilter = { + * name: "my-custom-filter", + * action: SensitiveInfoGuardrailAction.BLOCK, + * pattern: "\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b", + * }; + */ +export interface RegexFilter { + /** + * The name of the regex filter. + */ + readonly name: string; + /** + * The description of the regex filter. + */ + readonly description?: string; + /** + * The action to take when a regex match is detected. + */ + readonly action: GuardrailAction; + /** + * The regular expression pattern to match. + */ + readonly pattern: string; +} + +/****************************************************************************** + * CONTEXTUAL GROUNDING FILTERS + *****************************************************************************/ +/** + * The type of contextual grounding filter. + */ +export enum ContextualGroundingFilterType { + /** + * Grounding score represents the confidence that the model response is factually + * correct and grounded in the source. If the model response has a lower score than + * the defined threshold, the response will be blocked and the configured blocked + * message will be returned to the user. A higher threshold level blocks more responses. + */ + GROUNDING = 'GROUNDING', + /** + * Relevance score represents the confidence that the model response is relevant + * to the user's query. If the model response has a lower score than the defined + * threshold, the response will be blocked and the configured blocked message will + * be returned to the user. A higher threshold level blocks more responses. + */ + RELEVANCE = 'RELEVANCE', +} + +/** + * Interface to define a Contextual Grounding Filter. + */ +export interface ContextualGroundingFilter { + /** + * The type of contextual grounding filter. + */ + readonly type: ContextualGroundingFilterType; + /** + * The threshold for the contextual grounding filter. + * - `0` (blocks nothing) + * - `0.99` (blocks almost everything) + */ + readonly threshold: number; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts new file mode 100644 index 0000000000000..26ebcc3bf3dea --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts @@ -0,0 +1,148 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { IResource, Resource } from 'aws-cdk-lib'; +import { CfnGuardrailVersion } from 'aws-cdk-lib/aws-bedrock'; +import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; +import { Construct } from 'constructs'; +import { Guardrail, IGuardrail } from './guardrails'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents a Guardrail Version, either created with CDK or imported. + */ +export interface IGuardrailVersion extends IResource { + /** + * The Guardrail to which this version belongs. + */ + readonly guardrail: IGuardrail; + + /** + * The ID of the guardrail version. + * @example "1" + */ + readonly guardrailVersion: string; +} + +/****************************************************************************** + * ABSTRACT BASE CLASS + *****************************************************************************/ + +/** + * Abstract base class for a Guardrail Version. + * Contains methods and attributes valid for Guardrail Versions either created + * with CDK or imported. + */ +export abstract class GuardrailVersionBase extends Resource implements IGuardrailVersion { + public abstract readonly guardrail: IGuardrail; + public abstract readonly guardrailVersion: string; + constructor(scope: Construct, id: string) { + super(scope, id); + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a CDK-Managed Guardrail Version. + */ + +/** + * Properties for creating a Guardrail Version. + */ +export interface GuardrailVersionProps { + /** + * The guardrail to create a version for. + */ + readonly guardrail: IGuardrail; + /** + * The description of the guardrail version. + * + * @example "This is a description of the guardrail version." + * @default - No description is provided. + */ + readonly description?: string; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Attributes needed to create an import + */ +export interface GuardrailVersionAttributes { + /** + * The ARN of the guardrail. + * @example "arn:aws:bedrock:us-east-1:123456789012:guardrail/yympzo398ipq" + */ + readonly guardrailArn: string; + /** + * The ID of the guardrail version. + * @example "1" + */ + readonly guardrailVersion: string; +} +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create a Guardrail Version with CDK. + * @cloudformationResource AWS::Bedrock::GuardrailVersion + */ +export class GuardrailVersion extends GuardrailVersionBase { + /** + * Import a Guardrail Version from its attributes. + */ + public static fromGuardrailVersionAttributes( + scope: Construct, + id: string, + attrs: GuardrailVersionAttributes, + ): IGuardrailVersion { + class Import extends GuardrailVersionBase { + public readonly guardrail = Guardrail.fromGuardrailAttributes(scope, `Guardrail-${id}`, { + guardrailArn: attrs.guardrailArn, + guardrailVersion: attrs.guardrailVersion, + }); + public readonly guardrailVersion = attrs.guardrailVersion; + } + return new Import(scope, id); + } + + public readonly guardrail: IGuardrail; + public readonly guardrailVersion: string; + /** + * The underlying CfnGuardrailVersion resource. + */ + private readonly _resource: CfnGuardrailVersion; + + /** + * + */ + constructor(scope: Construct, id: string, props: GuardrailVersionProps) { + super(scope, id); + this.guardrail = props.guardrail; + + // Compute hash from guardrail, to recreate the resource when guardrail has changed + const hash = md5hash(props.guardrail.lastUpdated ?? 'Default'); + + this._resource = new CfnGuardrailVersion(this, `GuardrailVersion-${hash.slice(0, 16)}`, { + guardrailIdentifier: this.guardrail.guardrailId, + description: props.description, + }); + + this.guardrailVersion = this._resource.attrVersion; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts new file mode 100644 index 0000000000000..4f9e29a0117dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts @@ -0,0 +1,791 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as fs from 'fs'; +import { Arn, ArnFormat, IResolvable, IResource, Lazy, Resource } from 'aws-cdk-lib'; +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import { Metric, MetricOptions, MetricProps } from 'aws-cdk-lib/aws-cloudwatch'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { IKey, Key } from 'aws-cdk-lib/aws-kms'; +import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; +import { Construct } from 'constructs'; +import * as filters from './guardrail-filters'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents a Guardrail, either created with CDK or imported. + */ +export interface IGuardrail extends IResource { + /** + * The ARN of the guardrail. + * @example "arn:aws:bedrock:us-east-1:123456789012:guardrail/yympzo398ipq" + * @attribute + */ + readonly guardrailArn: string; + /** + * The ID of the guardrail. + * @example "yympzo398ipq" + * @attribute + */ + readonly guardrailId: string; + /** + * Optional KMS encryption key associated with this guardrail + */ + readonly kmsKey?: IKey; + /** + * When this guardrail was last updated. + */ + readonly lastUpdated?: string; + /** + * The version of the guardrail. If no explicit version is created, + * this will default to "DRAFT" + */ + guardrailVersion: string; + + /** + * Grant the given principal identity permissions to perform actions on this guardrail. + */ + grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant; + /** + * Grant the given identity permissions to apply the guardrail. + */ + grantApply(grantee: iam.IGrantable): iam.Grant; + + /** + * Return the given named metric for this guardrail. + */ + metric(metricName: string, props?: MetricOptions): Metric; + + /** + * Return the invocations metric for this guardrail. + */ + metricInvocations(props?: MetricOptions): Metric; + + /** + * Return the invocation latency metric for this guardrail. + */ + metricInvocationLatency(props?: MetricOptions): Metric; + + /** + * Return the invocation client errors metric for this guardrail. + */ + metricInvocationClientErrors(props?: MetricOptions): Metric; + + /** + * Return the invocation server errors metric for this guardrail. + */ + metricInvocationServerErrors(props?: MetricOptions): Metric; + + /** + * Return the invocation throttles metric for this guardrail. + */ + metricInvocationThrottles(props?: MetricOptions): Metric; + + /** + * Return the text unit count metric for this guardrail. + */ + metricTextUnitCount(props?: MetricOptions): Metric; + + /** + * Return the invocations intervened metric for this guardrail. + */ + metricInvocationsIntervened(props?: MetricOptions): Metric; +} + +/** + * Abstract base class for a Guardrail. + * Contains methods and attributes valid for Guardrails either created with CDK or imported. + */ +export abstract class GuardrailBase extends Resource implements IGuardrail { + /** + * Return the given named metric for all guardrails. + * + * By default, the metric will be calculated as a sum over a period of 5 minutes. + * You can customize this by using the `statistic` and `period` properties. + */ + public static metricAll(metricName: string, props?: MetricOptions): Metric { + return new Metric({ + namespace: 'AWS/Bedrock/Guardrails', + dimensionsMap: { Operation: 'ApplyGuardrail' }, + metricName, + ...props, + }); + } + + /** + * Return the invocations metric for all guardrails. + */ + public static metricAllInvocations(props?: MetricOptions): Metric { + return this.metricAll('Invocations', props); + } + + /** + * Return the text unit count metric for all guardrails. + */ + public static metricAllTextUnitCount(props?: MetricOptions): Metric { + return this.metricAll('TextUnitCount', props); + } + + /** + * Return the invocations intervened metric for all guardrails. + */ + public static metricAllInvocationsIntervened(props?: MetricOptions): Metric { + return this.metricAll('InvocationsIntervened', props); + } + + /** + * Return the invocation latency metric for all guardrails. + */ + public static metricAllInvocationLatency(props?: MetricOptions): Metric { + return this.metricAll('InvocationLatency', props); + } + + /** + * The ARN of the guardrail. + */ + public abstract readonly guardrailArn: string; + /** + * The ID of the guardrail. + */ + public abstract readonly guardrailId: string; + /** + * The ID of the guardrail. + */ + public abstract guardrailVersion: string; + /** + * The KMS key of the guardrail if custom encryption is configured. + */ + public abstract readonly kmsKey?: IKey; + /** + * When this guardrail was last updated + */ + public abstract readonly lastUpdated?: string; + /** + * Grant the given principal identity permissions to perform actions on this agent alias. + */ + public grant(grantee: iam.IGrantable, ...actions: string[]) { + return iam.Grant.addToPrincipal({ + grantee, + actions, + resourceArns: [this.guardrailArn], + scope: this, + }); + } + /** + * Grant the given identity permissions to apply the guardrail. + */ + public grantApply(grantee: iam.IGrantable): iam.Grant { + const baseGrant = this.grant(grantee, 'bedrock:ApplyGuardrail'); + + if (this.kmsKey) { + // If KMS key exists, create encryption grant and combine with base grant + const kmsGrant = this.kmsKey.grantEncryptDecrypt(grantee); + return kmsGrant.combine(baseGrant); + } else { + // If no KMS key exists, return only the base grant + return baseGrant; + } + } + + /** + * Return the given named metric for this guardrail. + * + * By default, the metric will be calculated as a sum over a period of 5 minutes. + * You can customize this by using the `statistic` and `period` properties. + */ + public metric(metricName: string, props?: MetricOptions): Metric { + const metricProps: MetricProps = { + namespace: 'AWS/Bedrock/Guardrails', + metricName, + dimensionsMap: { GuardrailArn: this.guardrailArn, GuardrailVersion: this.guardrailVersion }, + ...props, + }; + return this.configureMetric(metricProps); + } + + /** + * Return the invocations metric for this guardrail. + */ + public metricInvocations(props?: MetricOptions): Metric { + return this.metric('Invocations', props); + } + + /** + * Return the invocation latency metric for this guardrail. + */ + public metricInvocationLatency(props?: MetricOptions): Metric { + return this.metric('InvocationLatency', props); + } + + /** + * Return the invocation client errors metric for this guardrail. + */ + public metricInvocationClientErrors(props?: MetricOptions): Metric { + return this.metric('InvocationClientErrors', props); + } + + /** + * Return the invocation server errors metric for this guardrail. + */ + public metricInvocationServerErrors(props?: MetricOptions): Metric { + return this.metric('InvocationServerErrors', props); + } + + /** + * Return the invocation throttles metric for this guardrail. + */ + public metricInvocationThrottles(props?: MetricOptions): Metric { + return this.metric('InvocationThrottles', props); + } + + /** + * Return the text unit count metric for this guardrail. + */ + public metricTextUnitCount(props?: MetricOptions): Metric { + return this.metric('TextUnitCount', props); + } + + /** + * Return the invocations intervened metric for this guardrail. + */ + public metricInvocationsIntervened(props?: MetricOptions): Metric { + return this.metric('InvocationsIntervened', props); + } + + private configureMetric(props: MetricProps) { + return new Metric({ + ...props, + region: props?.region ?? this.stack.region, + account: props?.account ?? this.stack.account, + }); + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a Guardrail. + */ +export interface GuardrailProps { + /** + * The name of the guardrail. + */ + readonly name: string; + /** + * The description of the guardrail. + */ + readonly description?: string; + /** + * The message to return when the guardrail blocks a prompt. + * + * @default "Sorry, your query violates our usage policy." + */ + readonly blockedInputMessaging?: string; + /** + * The message to return when the guardrail blocks a model response. + * + * @default "Sorry, I am unable to answer your question because of our usage policy." + */ + readonly blockedOutputsMessaging?: string; + /** + * A custom KMS key to use for encrypting data. + * + * @default "Your data is encrypted by default with a key that AWS owns and manages for you." + */ + readonly kmsKey?: IKey; + /** + * The content filters to apply to the guardrail. + * Note, if one of + */ + readonly contentFilters?: filters.ContentFilter[]; + /** + * Up to 30 denied topics to block user inputs or model responses associated with the topic. + */ + readonly deniedTopics?: filters.Topic[]; + /** + * The word filters to apply to the guardrail. + */ + readonly wordFilters?: string[]; + /** + * The managed word filters to apply to the guardrail. + */ + readonly managedWordListFilters?: filters.ManagedWordFilterType[]; + /** + * The PII filters to apply to the guardrail. + */ + readonly piiFilters?: filters.PIIFilter[]; + /** + * The regular expression (regex) filters to apply to the guardrail. + */ + readonly regexFilters?: filters.RegexFilter[]; + /** + * The contextual grounding filters to apply to the guardrail. + */ + readonly contextualGroundingFilters?: filters.ContextualGroundingFilter[]; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +export interface GuardrailAttributes { + /** + * The ARN of the guardrail. At least one of guardrailArn or guardrailId must be + * defined in order to initialize a guardrail ref. + */ + readonly guardrailArn: string; + /** + * The KMS key of the guardrail if custom encryption is configured. + * + * @default undefined - Means data is encrypted by default with a AWS-managed key + */ + readonly kmsKey?: IKey; + /** + * The version of the guardrail. + * + * @default "DRAFT" + */ + readonly guardrailVersion?: string; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create a Guardrail with CDK. + * @cloudformationResource AWS::Bedrock::Guardrail + */ +export class Guardrail extends GuardrailBase { + /** + * Import a guardrail given its attributes + */ + public static fromGuardrailAttributes(scope: Construct, id: string, attrs: GuardrailAttributes): IGuardrail { + class Import extends GuardrailBase { + public readonly guardrailArn = attrs.guardrailArn; + public readonly guardrailId = Arn.split(attrs.guardrailArn, ArnFormat.SLASH_RESOURCE_NAME).resourceName!; + public readonly guardrailVersion = attrs.guardrailVersion ?? 'DRAFT'; + public readonly kmsKey = attrs.kmsKey; + public readonly lastUpdated = undefined; + } + + return new Import(scope, id); + } + + /** + * Import a low-level L1 Cfn Guardrail + */ + public static fromCfnGuardrail(cfnGuardrail: bedrock.CfnGuardrail): IGuardrail { + return new (class extends GuardrailBase { + public readonly guardrailArn = cfnGuardrail.attrGuardrailArn; + public readonly guardrailId = cfnGuardrail.attrGuardrailId; + public readonly guardrailVersion = cfnGuardrail.attrVersion; + public readonly kmsKey = cfnGuardrail.kmsKeyArn + ? Key.fromKeyArn(this, '@FromCfnGuardrailKey', cfnGuardrail.kmsKeyArn) + : undefined; + public readonly lastUpdated = cfnGuardrail.attrUpdatedAt; + })(cfnGuardrail, '@FromCfnGuardrail'); + } + + /** + * The ARN of the guardrail. + */ + public readonly guardrailArn: string; + /** + * The ID of the guardrail. + */ + public readonly guardrailId: string; + /** + * The name of the guardrail. + */ + public readonly name: string; + /** + * The version of the guardrail. + * By default, this value will always be `DRAFT` unless an explicit version is created. + * For an explicit version created, this will usually be a number (e.g. for Version 1 just enter "1") + * + * @example "1" + * @default - "DRAFT" + */ + public guardrailVersion: string; + /** + * The KMS key used to encrypt data. + * + * @default undefined - "Data is encrypted by default with a key that AWS owns and manages for you" + */ + public readonly kmsKey?: IKey; + /** + * The content filters applied by the guardrail. + */ + public readonly contentFilters: filters.ContentFilter[]; + /** + * The PII filters applied by the guardrail. + */ + public readonly piiFilters: filters.PIIFilter[]; + /** + * The regex filters applied by the guardrail. + */ + public readonly regexFilters: filters.RegexFilter[]; + /** + * The denied topic filters applied by the guardrail. + */ + public readonly deniedTopics: filters.Topic[]; + /** + * The contextual grounding filters applied by the guardrail. + */ + public readonly contextualGroundingFilters: filters.ContextualGroundingFilter[]; + /** + * The word filters applied by the guardrail. + */ + public readonly wordFilters: string[]; + /** + * The managed word list filters applied by the guardrail. + */ + public readonly managedWordListFilters: filters.ManagedWordFilterType[]; + /** + * When this guardrail was last updated + */ + public readonly lastUpdated?: string; + /** + * The computed hash of the guardrail properties. + */ + public readonly hash: string; + /** + * The L1 representation of the guardrail + */ + private readonly __resource: bedrock.CfnGuardrail; + + constructor(scope: Construct, id: string, props: GuardrailProps) { + super(scope, id, { + physicalName: props.name, + }); + + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + this.name = this.physicalName; + this.contentFilters = props.contentFilters ?? []; + this.piiFilters = props.piiFilters ?? []; + this.regexFilters = props.regexFilters ?? []; + this.deniedTopics = props.deniedTopics ?? []; + this.contextualGroundingFilters = props.contextualGroundingFilters ?? []; + this.wordFilters = props.wordFilters ?? []; + this.managedWordListFilters = props.managedWordListFilters ?? []; + + const defaultBlockedInputMessaging = 'Sorry, your query violates our usage policy.'; + const defaultBlockedOutputsMessaging = 'Sorry, I am unable to answer your question because of our usage policy.'; + + // ------------------------------------------------------ + // CFN Props - With Lazy support + // ------------------------------------------------------ + let cfnProps: bedrock.CfnGuardrailProps = { + name: this.name, + description: props.description, + kmsKeyArn: props.kmsKey?.keyArn, + blockedInputMessaging: props.blockedInputMessaging ?? defaultBlockedInputMessaging, + blockedOutputsMessaging: props.blockedOutputsMessaging ?? defaultBlockedOutputsMessaging, + // Lazy props + contentPolicyConfig: this.generateCfnContentPolicyConfig(), + contextualGroundingPolicyConfig: this.generateCfnContextualPolicyConfig(), + topicPolicyConfig: this.generateCfnTopicPolicy(), + wordPolicyConfig: this.generateCfnWordPolicyConfig(), + sensitiveInformationPolicyConfig: this.generateCfnSensitiveInformationPolicyConfig(), + }; + + // Hash calculation useful for versioning of the guardrail + this.hash = md5hash(JSON.stringify(cfnProps)); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this.__resource = new bedrock.CfnGuardrail(this, 'MyGuardrail', cfnProps); + + this.guardrailId = this.__resource.attrGuardrailId; + this.guardrailArn = this.__resource.attrGuardrailArn; + this.guardrailVersion = this.__resource.attrVersion; + this.lastUpdated = this.__resource.attrUpdatedAt; + } + + // ------------------------------------------------------ + // METHODS + // ------------------------------------------------------ + /** + * Adds a content filter to the guardrail. + * @param filter The content filter to add. + */ + public addContentFilter(filter: filters.ContentFilter): void { + this.contentFilters.push(filter); + } + + /** + * Adds a PII filter to the guardrail. + * @param filter The PII filter to add. + */ + public addPIIFilter(filter: filters.PIIFilter): void { + this.piiFilters.push(filter); + } + + /** + * Adds a regex filter to the guardrail. + * @param filter The regex filter to add. + */ + public addRegexFilter(filter: filters.RegexFilter): void { + this.regexFilters.push(filter); + } + + /** + * Adds a denied topic filter to the guardrail. + * @param filter The denied topic filter to add. + */ + public addDeniedTopicFilter(filter: filters.Topic): void { + this.deniedTopics.push(filter); + } + + /** + * Adds a contextual grounding filter to the guardrail. + * @param filter The contextual grounding filter to add. + */ + public addContextualGroundingFilter(filter: filters.ContextualGroundingFilter): void { + this.contextualGroundingFilters.push(filter); + } + + /** + * Adds a word filter to the guardrail. + * @param filter The word filter to add. + */ + public addWordFilter(filter: string): void { + this.wordFilters.push(filter); + } + + /** + * Adds a word filter to the guardrail. + * @param filePath The location of the word filter file. + */ + public addWordFilterFromFile(filePath: string): void { + const fileContents = fs.readFileSync(filePath, 'utf8'); + const words = fileContents.trim().split(','); + for (const word of words) this.addWordFilter(word); + } + + /** + * Adds a managed word list filter to the guardrail. + * @param filter The managed word list filter to add. + */ + public addManagedWordListFilter(filter: filters.ManagedWordFilterType): void { + this.managedWordListFilters.push(filter); + } + + /** + * Create a version for the guardrail. + * @param description The description of the version. + * @returns The guardrail version. + */ + public createVersion(description?: string): string { + const cfnVersion = new bedrock.CfnGuardrailVersion(this, `GuardrailVersion-${this.hash.slice(0, 16)}`, { + description: description, + guardrailIdentifier: this.guardrailId, + }); + + this.guardrailVersion = cfnVersion.attrVersion; + return this.guardrailVersion; + } + + // ------------------------------------------------------ + // CFN Generators + // ------------------------------------------------------ + /** + * Returns the content filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnContentPolicyConfig(): IResolvable { + return Lazy.any({ + produce: () => { + if (this.contentFilters.length > 0) { + return { filtersConfig: this.contentFilters } as bedrock.CfnGuardrail.ContentPolicyConfigProperty; + } else { + return undefined; + } + }, + }); + } + + /** + * Returns the topic filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnTopicPolicy(): IResolvable { + return Lazy.any({ + produce: () => { + if (this.deniedTopics.length > 0) { + return { + topicsConfig: this.deniedTopics.flatMap((topic: filters.Topic) => { + return { + definition: topic.definition, + name: topic.name, + examples: topic.examples, + type: 'DENY', + } as bedrock.CfnGuardrail.TopicConfigProperty; + }), + }; + } else { + return undefined; + } + }, + }); + } + + /** + * Returns the contectual filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnContextualPolicyConfig(): IResolvable { + return Lazy.any({ + produce: () => { + if (this.contextualGroundingFilters.length > 0) { + return { + filtersConfig: this.contextualGroundingFilters.flatMap((filter: filters.ContextualGroundingFilter) => { + return { + type: filter.type, + threshold: filter.threshold, + } as bedrock.CfnGuardrail.ContextualGroundingFilterConfigProperty; + }), + }; + } else { + return undefined; + } + }, + }); + } + + /** + * Returns the word config applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnWordPolicyConfig(): IResolvable { + return Lazy.any({ + produce: () => { + if (this.wordFilters.length > 0 || this.managedWordListFilters.length > 0) { + return { + wordsConfig: this.generateCfnWordConfig(), + managedWordListsConfig: this.generateCfnManagedWordListsConfig(), + } as bedrock.CfnGuardrail.WordPolicyConfigProperty; + } else { + return undefined; + } + }, + }); + } + + /** + * Returns the word filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnWordConfig(): IResolvable { + return Lazy.any( + { + produce: () => { + return this.wordFilters.flatMap((word: string) => { + return { + text: word, + } as bedrock.CfnGuardrail.WordConfigProperty; + }); + }, + }, + { omitEmptyArray: true }, + ); + } + + /** + * Returns the word filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnManagedWordListsConfig(): IResolvable { + return Lazy.any( + { + produce: () => { + return this.managedWordListFilters.flatMap((filter: filters.ManagedWordFilterType) => { + return { + type: filter.toString(), + } as bedrock.CfnGuardrail.ManagedWordsConfigProperty; + }); + }, + }, + { omitEmptyArray: true }, + ); + } + + /** + * Returns the sensitive information config applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnSensitiveInformationPolicyConfig(): IResolvable { + return Lazy.any( + { + produce: () => { + if (this.regexFilters.length > 0 || this.piiFilters.length > 0) { + return { + regexesConfig: this.generateCfnRegexesConfig(), + piiEntitiesConfig: this.generateCfnPiiEntitiesConfig(), + }; + } else { + return undefined; + } + }, + }, + { omitEmptyArray: true }, + ); + } + + /** + * Returns the regex filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnRegexesConfig(): IResolvable { + return Lazy.any( + { + produce: () => { + return this.regexFilters.flatMap((regex: filters.RegexFilter) => { + return { + name: regex.name, + description: regex.description, + pattern: regex.pattern, + action: regex.action, + } as bedrock.CfnGuardrail.RegexConfigProperty; + }); + }, + }, + { omitEmptyArray: true }, + ); + } + + /** + * Returns the Pii filters applied to the guardrail. This method defers the computation + * to synth time. + */ + private generateCfnPiiEntitiesConfig(): IResolvable { + return Lazy.any( + { + produce: () => { + return this.piiFilters.flatMap((filter: filters.PIIFilter) => { + return { + type: filter.type, + action: filter.action, + } as bedrock.CfnGuardrail.PiiEntityConfigProperty; + }); + }, + }, + { omitEmptyArray: true }, + ); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts new file mode 100644 index 0000000000000..a167f6d8093cb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts @@ -0,0 +1,67 @@ +// The index.ts files contains a list of files we want to +// include as part of the public API of this module. +// In general, all files including L2 classes will be listed here, +// while all files including only utility functions will be omitted from here. + +// obviously, the ExampleResource L2 should be exported +//export * from './example-resource'; +// notice that private/example-resource-common.ts is not exported! + + +//=================================== +// Agents +//=================================== +export * from './agents/action-group'; +export * from './agents/agent'; +export * from './agents/agent-alias'; +export * from './agents/api-executor'; +export * from './agents/api-schema'; +export * from './agents/prompt-override'; +export * from './agents/memory'; +export * from './agents/agent-collaborator'; +export * from './agents/orchestration'; +export * from './agents/orchestration-executor'; + +//=================================== +// Data Sources +//=================================== +export * from './data-sources/base-data-source'; +export * from './data-sources/chunking'; +export * from './data-sources/parsing'; +export * from './data-sources/custom-transformation'; +export * from './data-sources/context-enrichment'; +export * from './data-sources/web-crawler-data-source'; +export * from './data-sources/sharepoint-data-source'; +export * from './data-sources/confluence-data-source'; +export * from './data-sources/salesforce-data-source'; +export * from './data-sources/s3-data-source'; +export * from './data-sources/custom-data-source'; + +//=================================== +// Guardrails +//=================================== +export * from './guardrails/guardrail-filters'; +export * from './guardrails/guardrails'; + +//=================================== +// Models and Inference Profiles +//=================================== +export * from './models'; +export * from './inference-profiles/common'; +export * from './inference-profiles/default-prompt-routers'; +export * from './inference-profiles/cross-region-inference-profile'; +export * from './inference-profiles/application-inference-profile'; + +//=================================== +// Knowledge Bases +//=================================== +export * from './knowledge-bases/knowledge-base'; +export * from './knowledge-bases/vector-knowledge-base'; +export * from './knowledge-bases/kendra-knowledge-base'; + +//=================================== +// Prompts +//=================================== +export * from './prompts/prompt'; +export * from './prompts/prompt-version'; +export * from './prompts/prompt-variant'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts new file mode 100644 index 0000000000000..eb50a69c6cda1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts @@ -0,0 +1,209 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { CfnTag, Arn, ArnFormat } from 'aws-cdk-lib'; +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; +import { Construct } from 'constructs'; +import { IInferenceProfile, InferenceProfileBase, InferenceProfileType } from './common'; +import { IInvokable } from '../models'; + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a ApplicationInferenceProfile. + */ +export interface ApplicationInferenceProfileProps { + /** + * Description of the inference profile. + * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-applicationinferenceprofile.html#cfn-bedrock-applicationinferenceprofile-description + */ + readonly description?: string; + /** + * The name of the inference profile. + * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-applicationinferenceprofile.html#cfn-bedrock-applicationinferenceprofile-inferenceprofilename + */ + readonly inferenceProfileName: string; + /** + * To create an application inference profile for one Region, specify a foundation model. + * Usage and costs for requests made to that Region with that model will be tracked. + * + * To create an application inference profile for multiple Regions, + * specify a cross region (system-defined) inference profile. + * The inference profile will route requests to the Regions defined in + * the cross region (system-defined) inference profile that you choose. + * Usage and costs for requests made to the Regions in the inference profile will be tracked. + */ + readonly modelSource: IInvokable; + /** + * A list of tags associated with the inference profile. + * */ + readonly tags?: CfnTag[]; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +export interface ApplicationInferenceProfileAttributes { + /** + * The ARN of the application inference profile. + */ + readonly inferenceProfileArn: string; + /** + * The ID or Amazon Resource Name (ARN) of the inference profile. + */ + readonly inferenceProfileIdentifier: string; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create a ApplicationInferenceProfile with CDK. + * These are inference profiles created by users (user defined). + * This helps to track costs and model usage. + * @resource AWS::Bedrock::ApplicationInferenceProfile + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-create.html + */ +export class ApplicationInferenceProfile extends InferenceProfileBase implements IInvokable { + /** + * Import a ApplicationInferenceProfile given its attributes + */ + public static fromApplicationInferenceProfileAttributes( + scope: Construct, + id: string, + attrs: ApplicationInferenceProfileAttributes, + ): IInferenceProfile { + class Import extends InferenceProfileBase { + public readonly inferenceProfileArn = attrs.inferenceProfileArn; + public readonly inferenceProfileId = Arn.split(attrs.inferenceProfileArn, ArnFormat.SLASH_RESOURCE_NAME) + .resourceName!; + public readonly type = InferenceProfileType.APPLICATION; + } + + return new Import(scope, id); + } + /** + * Import a low-level L1 Cfn ApplicationInferenceProfile + */ + public static fromCfnApplicationInferenceProfile( + CfnApplicationInferenceProfile: bedrock.CfnApplicationInferenceProfile, + ): IInferenceProfile { + return new (class extends InferenceProfileBase { + public readonly inferenceProfileArn = CfnApplicationInferenceProfile.attrInferenceProfileArn; + public readonly inferenceProfileId = CfnApplicationInferenceProfile.attrInferenceProfileId; + public readonly type = InferenceProfileType.APPLICATION; + })(CfnApplicationInferenceProfile, '@FromCfnApplicationInferenceProfile'); + } + /** + * The name of the application inference profile. + */ + public readonly inferenceProfileName: string; + /** + * The ARN of the application application inference profile. + */ + public readonly inferenceProfileArn: string; + /** + * The unique identifier of the application inference profile. + */ + public readonly inferenceProfileId: string; + /** + * The underlying model/cross-region model used by the application inference profile. + */ + public readonly inferenceProfileModel: IInvokable; + /** + * The status of the application inference profile. ACTIVE means that the inference profile is ready to be used. + */ + public readonly status: string; + /** + * The type of the inference profile. The following types are possible: + * SYSTEM_DEFINED – The inference profile is defined by Amazon Bedrock. + * You can route inference requests across regions with these inference profiles. + * APPLICATION – The inference profile was created by a user. + * This type of inference profile can track metrics and costs when invoking the model in it. + * The inference profile may route requests to one or multiple regions. + */ + public readonly type: InferenceProfileType; + /** + * Time Stamp for ApplicationInferenceProfile creation. + */ + public readonly createdAt: string; + /** + * Time Stamp for ApplicationInferenceProfile update. + */ + public readonly updatedAt: string; + /** + * This equals to the inferenceProfileArn property, useful just to implement IInvokable interface. + */ + public readonly invokableArn: string; + /** + * Instance of CfnApplicationInferenceProfile. + */ + private readonly _resource: bedrock.CfnApplicationInferenceProfile; + + constructor(scope: Construct, id: string, props: ApplicationInferenceProfileProps) { + super(scope, id); + + this.inferenceProfileModel = props.modelSource; + this.inferenceProfileName = props.inferenceProfileName; + this.type = InferenceProfileType.APPLICATION; + + // L1 instantiation + this._resource = new bedrock.CfnApplicationInferenceProfile(this, id, { + description: props.description, + inferenceProfileName: props.inferenceProfileName, + modelSource: { + copyFrom: props.modelSource.invokableArn, + }, + tags: props.tags, + }); + + // build attributes + this.inferenceProfileArn = this._resource.attrInferenceProfileArn; + this.inferenceProfileId = this._resource.attrInferenceProfileId; + this.status = this._resource.attrStatus; + this.type = this._resource.attrType as InferenceProfileType; + this.createdAt = this._resource.attrCreatedAt; + this.updatedAt = this._resource.attrUpdatedAt; + + // Needed to Implement IInvokable + this.invokableArn = this.inferenceProfileArn; + } + + /** + * Gives the appropriate policies to invoke and use the application inference profile. + */ + public grantInvoke(grantee: IGrantable): Grant { + // This method ensures the appropriate permissions are given + // to use either the inference profile or the vanilla FM + this.inferenceProfileModel.grantInvoke(grantee); + + // plus we add permissions to now invoke the application inference profile itself. + + return this.grantProfileUsage(grantee); + } + + /** + * Grants appropriate permissions to use the application inference profile (AIP). + * Does not grant permissions to use the model/cross-region profile in the AIP. + */ + grantProfileUsage(grantee: IGrantable): Grant { + const grant = Grant.addToPrincipal({ + grantee: grantee, + actions: ['bedrock:GetInferenceProfile', 'bedrock:InvokeModel'], + resourceArns: [this.inferenceProfileArn], + }); + return grant; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts new file mode 100644 index 0000000000000..431b0b0108a9f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts @@ -0,0 +1,88 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { IResource, Resource } from 'aws-cdk-lib'; +import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; + +/** These are the values used by the API when using aws bedrock get-inference-profile --inference-profile-identifier XXXXXXX */ +export enum InferenceProfileType { + /** + * An inference profile that is created by AWS. These are profiles such as cross-region + * which help you distributed traffic across a geographic region. + */ + SYSTEM_DEFINED = 'SYSTEM_DEFINED', + /** + * An inference profile that is user-created. These are profiles that help + * you track costs or metrics. + */ + APPLICATION = 'APPLICATION', +} + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents a ApplicationInferenceProfile, either created with CDK or imported. + */ +export interface IInferenceProfile { + /** + * The ARN of the application inference profile. + */ + readonly inferenceProfileArn: string; + /** + * The unique identifier of the inference profile. + */ + readonly inferenceProfileId: string; + /** + * The type of inference profile. + */ + readonly type: InferenceProfileType; + + /** + * Grants appropriate permissions to use the inference profile. + */ + grantProfileUsage(grantee: IGrantable): Grant; +} + +/** + * Abstract base class for a ApplicationInferenceProfile. + * Contains methods and attributes valid for ApplicationInferenceProfiles either created with CDK or imported. + */ +export abstract class InferenceProfileBase extends Resource implements IInferenceProfile, IResource { + /** + * The ARN of the application inference profile. + */ + public abstract readonly inferenceProfileArn: string; + /** + * The unique identifier of the inference profile. + */ + public abstract readonly inferenceProfileId: string; + /** + * The ID or Amazon Resource Name (ARN) of the inference profile. + */ + public abstract readonly type: InferenceProfileType; + + /** + * Grants appropriate permissions to use the cross-region inference profile. + * Does not grant permissions to use the model in the profile. + */ + grantProfileUsage(grantee: IGrantable): Grant { + const grant = Grant.addToPrincipal({ + grantee: grantee, + actions: ['bedrock:GetInferenceProfile', 'bedrock:ListInferenceProfiles'], + resourceArns: [this.inferenceProfileArn], + scope: this, + }); + return grant; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts new file mode 100644 index 0000000000000..b9b749514297f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts @@ -0,0 +1,159 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; +import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; +import { BedrockFoundationModel, IInvokable } from '../models'; +import { IInferenceProfile, InferenceProfileType } from './common'; + +export enum CrossRegionInferenceProfileRegion { + /** + * Cross-region Inference Identifier for the European area. + * According to the model chosen, this might include: + * - Frankfurt (`eu-central-1`) + * - Ireland (`eu-west-1`) + * - Paris (`eu-west-3`) + */ + EU = 'eu', + /** + * Cross-region Inference Identifier for the United States area. + * According to the model chosen, this might include: + * - N. Virginia (`us-east-1`) + * - Oregon (`us-west-2`) + * - Ohio (`us-east-2`) + */ + US = 'us', + /** + * Cross-region Inference Identifier for the Asia-Pacific area. + * According to the model chosen, this might include: + * - Tokyo (`ap-northeast-1`) + * - Seoul (`ap-northeast-2`) + * - Mumbai (`ap-south-1`) + * - Singapore (`ap-southeast-1`) + * - Sydney (`ap-southeast-2`) + */ + APAC = 'apac', +} + +export const REGION_TO_GEO_AREA: { [key: string]: CrossRegionInferenceProfileRegion } = { + // US Regions + 'us-east-1': CrossRegionInferenceProfileRegion.US, // N. Virginia + 'us-east-2': CrossRegionInferenceProfileRegion.US, // Ohio + 'us-west-2': CrossRegionInferenceProfileRegion.US, // Oregon + + // EU Regions + 'eu-central-1': CrossRegionInferenceProfileRegion.EU, // Frankfurt + 'eu-west-1': CrossRegionInferenceProfileRegion.EU, // Ireland + 'eu-west-3': CrossRegionInferenceProfileRegion.EU, // Paris + + // APAC Regions + 'ap-northeast-1': CrossRegionInferenceProfileRegion.APAC, // Tokyo + 'ap-northeast-2': CrossRegionInferenceProfileRegion.APAC, // Seoul + 'ap-south-1': CrossRegionInferenceProfileRegion.APAC, // Mumbai + 'ap-southeast-1': CrossRegionInferenceProfileRegion.APAC, // Singapore + 'ap-southeast-2': CrossRegionInferenceProfileRegion.APAC, // Sydney +}; + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +export interface CrossRegionInferenceProfileProps { + /** + * The geographic region where the traffic is going to be distributed. Routing + * factors in user traffic, demand and utilization of resources. + */ + readonly geoRegion: CrossRegionInferenceProfileRegion; + /** + * A model supporting cross-region inference. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-support.html + */ + readonly model: BedrockFoundationModel; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Cross-region inference enables you to seamlessly manage unplanned traffic + * bursts by utilizing compute across different AWS Regions. With cross-region + * inference, you can distribute traffic across multiple AWS Regions, enabling + * higher throughput and enhanced resilience during periods of peak demands. + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html + */ +export class CrossRegionInferenceProfile implements IInvokable, IInferenceProfile { + public static fromConfig(config: CrossRegionInferenceProfileProps): CrossRegionInferenceProfile { + return new CrossRegionInferenceProfile(config); + } + /** + * @example 'us.anthropic.claude-3-5-sonnet-20240620-v1:0' + */ + public readonly inferenceProfileId: string; + /** + * @example 'arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0' + */ + public readonly inferenceProfileArn: string; + /** + * @example InferenceProfileType.SYSTEM_DEFINED + */ + public readonly type: InferenceProfileType; + /** + * The underlying model supporting cross-region inference. + */ + public readonly inferenceProfileModel: BedrockFoundationModel; + /** This equals to the inferenceProfileArn property, useful just to implement IInvokable interface*/ + public readonly invokableArn: string; + + private constructor(props: CrossRegionInferenceProfileProps) { + if (!props.model.supportsCrossRegion) { + throw new Error(`Model ${props.model.modelId} does not support cross-region inference`); + } + this.type = InferenceProfileType.SYSTEM_DEFINED; + this.inferenceProfileModel = props.model; + this.inferenceProfileId = `${props.geoRegion}.${props.model.modelId}`; + this.inferenceProfileArn = Arn.format({ + partition: Aws.PARTITION, + service: 'bedrock', + account: Aws.ACCOUNT_ID, + region: Aws.REGION, + resource: 'inference-profile', + resourceName: this.inferenceProfileId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + // Needed to Implement IInvokable + this.invokableArn = this.inferenceProfileArn; + } + + /** + * Gives the appropriate policies to invoke and use the Foundation Model. + */ + public grantInvoke(grantee: IGrantable): Grant { + // for CRIS, we need to provide permissions to invoke the model in all regions + // where the inference profile can route requests + this.inferenceProfileModel.grantInvokeAllRegions(grantee); + // and we need to provide permissions to invoke the inference profile itself + return this.grantProfileUsage(grantee); + } + + /** + * Grants appropriate permissions to use the cross-region inference profile. + * Does not grant permissions to use the model in the profile. + */ + grantProfileUsage(grantee: IGrantable): Grant { + const grant = Grant.addToPrincipal({ + grantee: grantee, + actions: ['bedrock:GetInferenceProfile', 'bedrock:InvokeModel*'], + resourceArns: [this.inferenceProfileArn], + }); + return grant; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts new file mode 100644 index 0000000000000..722b9c2e286fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts @@ -0,0 +1,125 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; +import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; +import { + CrossRegionInferenceProfile, + REGION_TO_GEO_AREA, +} from './cross-region-inference-profile'; +import { BedrockFoundationModel, IInvokable } from './../models'; + +export interface IPromptRouter { + /** + * The ARN of the prompt router. + */ + readonly promptRouterArn: string; + /** + * The Id of the prompt router. + */ + readonly promptRouterId: string; + /** + * The foundation models / profiles this router will route to. + */ + readonly routingEndpoints: IInvokable[]; +} + +export interface PromptRouterProps { + /** + * Prompt Router Id + */ + readonly promptRouterId: string; + /** + * The foundation models this router will route to. + */ + readonly routingModels: BedrockFoundationModel[]; +} + +/** + * Represents identifiers for default prompt routers in Bedrock + */ +export class DefaultPromptRouterIdentifier { + /** + * Anthropic Claude V1 router configuration + */ + public static readonly ANTHROPIC_CLAUDE_V1 = new DefaultPromptRouterIdentifier({ + promptRouterId: 'anthropic.claude:1', + routingModels: [ + BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0, + ], + }); + + /** + * Meta Llama 3.1 router configuration + */ + public static readonly META_LLAMA_3_1 = new DefaultPromptRouterIdentifier({ + promptRouterId: 'meta.llama:1', + routingModels: [ + BedrockFoundationModel.META_LLAMA_3_1_8B_INSTRUCT_V1, + BedrockFoundationModel.META_LLAMA_3_1_70B_INSTRUCT_V1, + ], + }); + + public readonly promptRouterId: string; + public readonly routingModels: BedrockFoundationModel[]; + private constructor(props: PromptRouterProps) { + (this.promptRouterId = props.promptRouterId), (this.routingModels = props.routingModels); + } +} + +export class PromptRouter implements IInvokable, IPromptRouter { + public static fromDefaultId(defaultRouter: DefaultPromptRouterIdentifier, region: string) { + return new PromptRouter(defaultRouter, region); + } + public readonly promptRouterArn: string; + public readonly promptRouterId: string; + public readonly invokableArn: string; + public readonly routingEndpoints: IInvokable[]; + + constructor(props: PromptRouterProps, region: string) { + this.promptRouterId = props.promptRouterId; + this.promptRouterArn = Arn.format({ + partition: Aws.PARTITION, + service: 'bedrock', + region: region, + account: Aws.ACCOUNT_ID, + resource: 'default-prompt-router', + resourceName: this.promptRouterId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + // needed to implement IInvokable + this.invokableArn = this.promptRouterArn; + + // build inference profiles from routing endpoints + this.routingEndpoints = props.routingModels.flatMap(model => { + return CrossRegionInferenceProfile.fromConfig({ + model: model, + geoRegion: REGION_TO_GEO_AREA[region], + }); + }); + } + + grantInvoke(grantee: IGrantable): Grant { + // Grant invoke on every model of the router + this.routingEndpoints.forEach(model => { + model.grantInvoke(grantee); + }); + // Grant invoke to the prompt router + return Grant.addToPrincipal({ + grantee, + actions: ['bedrock:GetPromptRouter', 'bedrock:InvokeModel'], + resourceArns: [this.promptRouterArn], + }); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts new file mode 100644 index 0000000000000..ec8721ff71586 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts @@ -0,0 +1,199 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +export { KnowledgeBaseBase } from './knowledge-base'; +import { ArnFormat, Stack } from 'aws-cdk-lib'; +import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Construct } from 'constructs'; +import { + CommonKnowledgeBaseAttributes, + CommonKnowledgeBaseProps, + IKnowledgeBase, + KnowledgeBaseBase, + KnowledgeBaseType, +} from './knowledge-base'; +import { IKendraGenAiIndex } from './kendra-knowledgebase'; + +/****************************************************************************** + * COMMON INTERFACES + *****************************************************************************/ +export interface IKendraKnowledgeBase extends IKnowledgeBase { + /** + * The GenAI Kendra Index. + */ + readonly kendraIndex: IKendraGenAiIndex; +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a Kendra Index Knowledge Base. + */ +export interface KendraKnowledgeBaseProps extends CommonKnowledgeBaseProps { + /** + * The Kendra Index to use for the knowledge base. + */ + readonly kendraIndex: IKendraGenAiIndex; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Properties for importing a knowledge base outside of this stack + */ +export interface KendraKnowledgeBaseAttributes extends CommonKnowledgeBaseAttributes { + /** + * The GenAI Kendra Index ARN. + */ + readonly kendraIndex: IKendraGenAiIndex; +} + +/****************************************************************************** + * ABSTRACT CLASS + *****************************************************************************/ +export abstract class KendraKnowledgeBaseBase extends KnowledgeBaseBase { + public abstract readonly knowledgeBaseArn: string; + public abstract readonly knowledgeBaseId: string; + public abstract readonly role: iam.IRole; + public abstract readonly kendraIndex: IKendraGenAiIndex; + public abstract readonly description?: string; + public abstract readonly instruction?: string; + public readonly type: KnowledgeBaseType = KnowledgeBaseType.KENDRA; +} + +/****************************************************************************** + * CONSTRUCT + *****************************************************************************/ +export class KendraKnowledgeBase extends KendraKnowledgeBaseBase { + // ------------------------------------------------------ + // Import Methods + // ------------------------------------------------------ + public static fromKnowledgeBaseAttributes( + scope: Construct, + id: string, + attrs: KendraKnowledgeBaseAttributes, + ): IKendraKnowledgeBase { + const stack = Stack.of(scope); + + class Import extends KendraKnowledgeBaseBase { + public readonly role = iam.Role.fromRoleArn(this, `kb-${attrs.knowledgeBaseId}-role`, attrs.executionRoleArn); + public readonly description = attrs.description; + public readonly instruction = attrs.instruction; + public readonly knowledgeBaseId = attrs.knowledgeBaseId; + public readonly kendraIndex = attrs.kendraIndex; + public readonly knowledgeBaseArn = stack.formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: attrs.knowledgeBaseId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + } + return new Import(scope, id); + } + // ------------------------------------------------------ + // Attributes + // ------------------------------------------------------ + // inherited + public readonly knowledgeBaseArn: string; + public readonly knowledgeBaseId: string; + public readonly role: iam.IRole; + public readonly description?: string; + public readonly instruction?: string; + + /** + * The name of the knowledge base. + */ + public readonly name: string; + + /** + * The GenAI Kendra Index. + */ + public readonly kendraIndex: IKendraGenAiIndex; + /** + * The type of Knowledge Base + */ + public readonly type: KnowledgeBaseType = KnowledgeBaseType.KENDRA; + + private readonly _resource: bedrock.CfnKnowledgeBase; + + constructor(scope: Construct, id: string, props: KendraKnowledgeBaseProps) { + super(scope, id); + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + this.kendraIndex = props.kendraIndex; + this.name = props.name ?? this.generatePhysicalName() + '-kendra-kb'; + this.instruction = props.instruction; + this.description = props.description; + + // ------------------------------------------------------ + // Role + // ------------------------------------------------------ + let policyAddition: iam.AddToPrincipalPolicyResult | undefined; + if (props.existingRole) { + this.role = props.existingRole; + } else { + const roleName = this.generatePhysicalName() + '-AmazonBedrockExecutionRoleForKnowledgeBase'; + this.role = new iam.Role(this, 'Role', { + roleName: roleName, + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com', { + conditions: { + StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, + ArnLike: { + 'aws:SourceArn': Stack.of(this).formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: '*', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }), + }, + }, + }), + }); + policyAddition = this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + sid: 'AmazonBedrockKnowledgeBaseKendraIndexAccessStatement', + actions: ['kendra:Retrieve', 'kendra:DescribeIndex'], + resources: [this.kendraIndex.indexArn], + }), + ); + } + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this._resource = new bedrock.CfnKnowledgeBase(this, 'MyCfnKnowledgeBase', { + name: this.name, + roleArn: this.role.roleArn, + description: props.description, + knowledgeBaseConfiguration: { + type: KnowledgeBaseType.KENDRA, + kendraKnowledgeBaseConfiguration: { + kendraIndexArn: props.kendraIndex.indexArn, + }, + }, + }); + + // Ensure policy statement is added before creating KnowledgeBase + this._resource.node.addDependency(policyAddition?.policyDependable!); + + this.knowledgeBaseArn = this._resource.attrKnowledgeBaseArn; + this.knowledgeBaseId = this._resource.attrKnowledgeBaseId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts new file mode 100644 index 0000000000000..2c284e6ba579d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts @@ -0,0 +1,299 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { ArnFormat, IResource, Resource, Stack } from 'aws-cdk-lib'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as kendra from 'aws-cdk-lib/aws-kendra'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { Construct } from 'constructs'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents a Kendra Index, either created with CDK or imported. + */ +export interface IKendraGenAiIndex extends IResource { + /** + * The Amazon Resource Name (ARN) of the index. + * @example 'arn:aws:kendra:us-east-1:123456789012:index/af04c7ea-22bc-46b7-a65e-6c21e604fc11' + */ + readonly indexArn: string; + + /** + * The identifier of the index. + * @example 'af04c7ea-22bc-46b7-a65e-6c21e604fc11'. + */ + readonly indexId: string; + + /** + * An IAM role that gives Amazon Kendra permissions to access + * your Amazon CloudWatch logs and metrics. This is also the + * role used when you use the BatchPutDocument operation to index + * documents from an Amazon S3 bucket. + */ + readonly role: iam.IRole; +} + +export namespace Kendra { + /** + * Represents an Amazon Kendra Index Edition. + */ + export enum Edition { + DEVELOPER_EDITION = 'DEVELOPER_EDITION', + ENTERPRISE_EDITION = 'ENTERPRISE_EDITION', + GEN_AI_ENTERPRISE_EDITION = 'GEN_AI_ENTERPRISE_EDITION', + } + + /** + * Represents an Amazon Kendra Index Field Type. + */ + export enum IndexFieldTypes { + STRING = 'STRING_VALUE', + STRING_LIST = 'STRING_LIST_VALUE', + LONG = 'LONG_VALUE', + DATE = 'DATE_VALUE', + } + + /** + * The different policies available to filter search results based on user context. + */ + export enum UserContextPolicy { + /** All indexed content is searchable and displayable for all users. + * If you want to filter search results on user context, you can use + * the attribute filters of _user_id and _group_ids or you can provide + * user and group information in UserContext . */ + ATTRIBUTE_FILTER = 'ATTRIBUTE_FILTER', + /** + * Enables token-based user access control to filter search results on + * user context. All documents with no access control and all documents + * accessible to the user will be searchable and displayable. + */ + USER_TOKEN = 'USER_TOKEN', + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for creating a GenAI Index. + */ +export interface KendraGenAiIndexProps { + /** + * The name of the index. + * @default - A name is generated by CDK. + */ + readonly name?: string; + /** + * The identifier of the AWS KMS customer managed key (CMK) to use + * to encrypt data indexed by Amazon Kendra. Amazon Kendra doesn't support + * asymmetric CMKs. + * @default - AWS managed encryption key is used. + */ + readonly kmsKey?: IKey; + /** + * The document capacity units. Every unit increases the baseline capacity by 20,000 documents. + * E.g. `documentCapacityUnits: 1` means Baseline + 20,000 documents = 40,000 documents + * @default 0 - baseline capacity of 20,000 documents + */ + readonly documentCapacityUnits?: number; + /** + * The query capacity units. Every unit increases the baseline capacity by 0.1 QPS. + * E.g. `queryCapacityUnits: 7` means Baseline + 0.1 QPS * 7 = 0.8 QPS + * @default 0 - baseline capacity of 0.1 QPS + */ + readonly queryCapacityUnits?: number; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Properties needed for importing an existing Kendra Index. + */ +export interface KendraGenAiIndexAttributes { + /** + * The Id of the index. + * @example 'af04c7ea-22bc-46b7-a65e-6c21e604fc11' + */ + readonly indexId: string; + /** + * An IAM role that gives your Amazon Kendra index permissions. + */ + readonly role: iam.IRole; +} + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Abstract base class for a Kendra GenAI index. + * Contains methods and attributes valid for Kendra GenAI Indexes either created with CDK or imported. + */ +export abstract class KendraGenAiIndexBase extends Resource implements IKendraGenAiIndex { + public abstract readonly indexArn: string; + public abstract readonly indexId: string; + public abstract readonly role: iam.IRole; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Class to create a Kendra GenAI Index with CDK. + * @cloudformationResource AWS::Kendra::Index + */ +export class KendraGenAiIndex extends KendraGenAiIndexBase { + /** + * Import a guardrail given its attributes + */ + public static fromAttrs(scope: Construct, id: string, attrs: KendraGenAiIndexAttributes): IKendraGenAiIndex { + class Import extends KendraGenAiIndexBase { + public readonly role = attrs.role; + public readonly indexId = attrs.indexId; + public readonly indexArn = Stack.of(this).formatArn({ + service: 'kendra', + resource: 'index', + resourceName: attrs.indexId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + } + return new Import(scope, id); + } + + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + // inherited + public readonly indexArn: string; + public readonly indexId: string; + public readonly role: iam.IRole; + + /** + * The edition of the Gen AI index + */ + public readonly edition: Kendra.Edition = Kendra.Edition.GEN_AI_ENTERPRISE_EDITION; + /** + * The name of the Gen AI index + */ + public readonly name: string; + /** + * The AWS KMS key (CMK) used to encrypt data + */ + public readonly kmsKey?: IKey; + /** + * The document capacity units used for the Gen AI index + */ + public readonly documentCapacityUnits: number; + /** + * The query capacity units used for the Gen AI index + */ + public readonly queryCapacityUnits: number; + /** + * The L1 representation of the Kendra Index + */ + private readonly _resource: kendra.CfnIndex; + + constructor(scope: Construct, id: string, props: KendraGenAiIndexProps) { + super(scope, id); + + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + this.name = + props.name ?? this.generatePhysicalName() + '-genai-index'; + + this.documentCapacityUnits = props.documentCapacityUnits ?? 0; + this.queryCapacityUnits = props.queryCapacityUnits ?? 0; + this.kmsKey = props.kmsKey; + + // ------------------------------------------------------ + // Role Creation + // ------------------------------------------------------ + const roleName = this.generatePhysicalName() + '-AmazonKendraRoleForIndex'; + this.role = new iam.Role(this, 'Role', { + roleName: roleName, + assumedBy: new iam.ServicePrincipal('kendra.amazonaws.com'), + }); + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: ['logs:DescribeLogGroups'], + resources: ['*'], + }), + ); + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: ['cloudwatch:PutMetricData'], + resources: ['*'], + conditions: { + StringEquals: { + 'cloudwatch:namespace': 'AWS/Kendra', + }, + }, + }), + ); + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: ['logs:CreateLogGroup'], + resources: [ + Stack.of(this).formatArn({ + service: 'logs', + resource: 'log-group', + resourceName: '/aws/kendra/*', + arnFormat: ArnFormat.COLON_RESOURCE_NAME, + }), + ], + }), + ); + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: ['logs:DescribeLogStreams', 'logs:CreateLogStream', 'logs:PutLogEvents'], + resources: [ + Stack.of(this).formatArn({ + service: 'logs', + resource: 'log-group', + resourceName: '/aws/kendra/*:log-stream:*', + arnFormat: ArnFormat.COLON_RESOURCE_NAME, + }), + ], + }), + ); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this._resource = new kendra.CfnIndex(this, 'GenAiIndex', { + name: this.name, + edition: Kendra.Edition.GEN_AI_ENTERPRISE_EDITION, + roleArn: this.role.roleArn, + serverSideEncryptionConfiguration: props.kmsKey + ? { + kmsKeyId: props.kmsKey.keyId, + } + : undefined, + capacityUnits: { + storageCapacityUnits: this.documentCapacityUnits, + queryCapacityUnits: this.queryCapacityUnits, + }, + userContextPolicy: Kendra.UserContextPolicy.ATTRIBUTE_FILTER, + }); + + this.indexArn = this._resource.attrArn; + this.indexId = this._resource.attrId; + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts new file mode 100644 index 0000000000000..387e135d44b99 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts @@ -0,0 +1,14 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +export * from './gen-ai-index'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts new file mode 100644 index 0000000000000..842789c06602b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts @@ -0,0 +1,224 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { IResource, Resource } from 'aws-cdk-lib'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Construct } from 'constructs'; + +/****************************************************************************** + * ENUMS + *****************************************************************************/ +/** + * Types of possible knowledge bases supported by Amazon Bedrock Knowledge Bases. + */ +export enum KnowledgeBaseType { + /** + * Vector database with emebeddings vectors + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-how-it-works.html + */ + VECTOR = 'VECTOR', + /** + * Kendra GenAI Index + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-build-kendra-genai-index.html + */ + KENDRA = 'KENDRA', + /** + * Structured data store (e.g. REDSHIFT) + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-build-structured.html + */ + SQL = 'SQL', +} + +/****************************************************************************** + * COMMON INTERFACE + *****************************************************************************/ +/** + * Represents a Knowledge Base, either created with CDK or imported, of any type. + */ +export interface IKnowledgeBase extends IResource { + /** + * The ARN of the knowledge base. + * @example "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KB12345678" + */ + readonly knowledgeBaseArn: string; + + /** + * The ID of the knowledge base. + * @example "KB12345678" + */ + readonly knowledgeBaseId: string; + + /** + * The role associated with the knowledge base. + */ + readonly role: iam.IRole; + + /** + * The type of knowledge base. + */ + readonly type: KnowledgeBaseType; + + /** + * The description of the knowledge base. + */ + readonly description?: string; + + /** + * A narrative instruction of the knowledge base. + * A Bedrock Agent can use this instruction to determine if it should + * query this Knowledge Base. + */ + readonly instruction?: string; + + /** + * Grant the given principal identity permissions to perform actions on this knowledge base. + */ + grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant; + + /** + * Grant the given identity permissions to query the knowledge base. + */ + grantQuery(grantee: iam.IGrantable): iam.Grant; +} + +/****************************************************************************** + * COMMON PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Common properties for creating any type of new Knowledge Base. + */ +export interface CommonKnowledgeBaseProps { + /** + * The name of the knowledge base. + */ + readonly name?: string; + + /** + * The description of the knowledge base. + * + * @default - No description provided. + */ + readonly description?: string; + + /** + * Existing IAM role with policy statements granting appropriate permissions + * to invoke the specific embeddings models. + * Any entity (e.g., an AWS service or application) that assumes + * this role will be able to invoke or use the + * specified embeddings model within the Bedrock service. + */ + readonly existingRole?: iam.IRole; + + /** + * A narrative description of the knowledge base. + * + * A Bedrock Agent can use this instruction to determine if it should + * query this Knowledge Base. + * + * @default - No description provided. + */ + readonly instruction?: string; +} + +/****************************************************************************** + * COMMON ATTRS FOR IMPORTS + *****************************************************************************/ +/** + * Common properties for importing a knowledge base (of any type) created outside of this stack. + */ +export interface CommonKnowledgeBaseAttributes { + /** + * The ID of the knowledge base. + * @example "KB12345678" + */ + readonly knowledgeBaseId: string; + /** + * The Service Execution Role associated with the knowledge base. + * @example "arn:aws:iam::123456789012:role/AmazonBedrockExecutionRoleForKnowledgeBaseawscdkbdgeBaseKB12345678" + */ + readonly executionRoleArn: string; + /** + * The description of the knowledge base. + * + * @default - No description provided. + */ + readonly description?: string; + /** + * Instructions for agents based on the design and type of information of the + * Knowledge Base. This will impact how Agents interact with the Knowledge Base. + * + * @default - No description provided. + */ + readonly instruction?: string; + /** + * Specifies whether to use the knowledge base or not when sending an InvokeAgent request. + * @default - ENABLED + */ + readonly knowledgeBaseState?: string; +} + +/****************************************************************************** + * ABSTRACT CLASS + *****************************************************************************/ +/** + * Abstract base class for Knowledge Base (regarless the type). + * Contains methods valid for KBs either created with CDK or imported and + * applicable to Knowledge Bases of any type. + */ +export abstract class KnowledgeBaseBase extends Resource implements IKnowledgeBase { + public abstract readonly knowledgeBaseArn: string; + public abstract readonly knowledgeBaseId: string; + public abstract readonly role: iam.IRole; + public abstract readonly description?: string; + public abstract readonly instruction?: string; + public abstract readonly type: KnowledgeBaseType; + + constructor(scope: Construct, id: string) { + super(scope, id); + } + + /** + * Grant the given principal identity permissions to perform actions on this knowledge base. + */ + public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { + return iam.Grant.addToPrincipal({ + grantee, + resourceArns: [this.knowledgeBaseArn], + actions, + }); + } + + /** + * Grant the given identity permissions to retrieve content from the knowledge base. + */ + public grantRetrieve(grantee: iam.IGrantable): iam.Grant { + return this.grant(grantee, 'bedrock:Retrieve'); + } + + /** + * Grant the given identity permissions to retrieve content from the knowledge base. + */ + public grantRetrieveAndGenerate(grantee: iam.IGrantable): iam.Grant { + return this.grant(grantee, 'bedrock:RetrieveAndGenerate'); + } + + /** + * Grant the given identity permissions to query the knowledge base. + * This contains: + * - Retrieve + * - RetrieveAndGenerate + */ + public grantQuery(grantee: iam.IGrantable): iam.Grant { + return this.grant(grantee, 'bedrock:Retrieve', 'bedrock:RetrieveAndGenerate'); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts new file mode 100644 index 0000000000000..7a4d20246835e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts @@ -0,0 +1,765 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { ArnFormat, aws_bedrock as bedrock, Stack } from 'aws-cdk-lib'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Construct } from 'constructs'; +import { + CommonKnowledgeBaseAttributes, + CommonKnowledgeBaseProps, + IKnowledgeBase, + KnowledgeBaseBase, + KnowledgeBaseType, +} from './knowledge-base'; +import { VectorIndex, SpaceType, OpensearchFieldType, EngineType, AlgorithmNameType } from './vectorstore-knowledgebases/opensearch-vector-index'; +import { VectorCollection } from './vectorstore-knowledgebases/opensearch-collection'; +import { Agent } from '../agents/agent'; +import { + ConfluenceDataSource, + ConfluenceDataSourceAssociationProps, +} from '../data-sources/confluence-data-source'; +import { + CustomDataSource, + CustomDataSourceAssociationProps, +} from '../data-sources/custom-data-source'; +import { S3DataSource, S3DataSourceAssociationProps } from '../data-sources/s3-data-source'; +import { + SalesforceDataSource, + SalesforceDataSourceAssociationProps, +} from '../data-sources/salesforce-data-source'; +import { + SharePointDataSource, + SharePointDataSourceAssociationProps, +} from '../data-sources/sharepoint-data-source'; +import { + WebCrawlerDataSource, + WebCrawlerDataSourceAssociationProps, +} from '../data-sources/web-crawler-data-source'; +import { BedrockFoundationModel, VectorType } from '../models'; + +/****************************************************************************** + * ENUMS + *****************************************************************************/ +/** + * Knowledge base can be backed by different vector databases. + * This enum represents the different vector databases that can be used. + * + * `OPENSEARCH_SERVERLESS` is the default vector database. + * `REDIS_ENTERPRISE_CLOUD` is the vector database for Redis Enterprise Cloud. + * `PINECONE` is the vector database for Pinecone. + * `AMAZON_AURORA` is the vector database for Amazon Aurora PostgreSQL. + */ +enum VectorStoreType { + /** + * `OPENSEARCH_SERVERLESS` is the vector store for OpenSearch Serverless. + */ + OPENSEARCH_SERVERLESS = 'OPENSEARCH_SERVERLESS', + /** + * `PINECONE` is the vector store for Pinecone. + */ + PINECONE = 'PINECONE', + /** + * `RDS` is the vector store for Amazon Aurora. + */ + AMAZON_AURORA = 'RDS', +} + +/****************************************************************************** + * COMMON INTERFACES + *****************************************************************************/ +/** + * Interface for the configuration of the storage for knowledge base. + */ +interface StorageConfiguration { + /** + * The vector store, which can be of `VectorCollection`, `PineconeVectorStore` or + * `AmazonAuroraVectorStore` types. + */ + vectorStore: + | VectorCollection; + + /** + * The type of the vector store. + */ + vectorStoreType: VectorStoreType; + + /** + * The name of the index. + */ + indexName: string; + + /** + * The field of the vector field for vector mapping. + */ + vectorField: string; + + /** + * The field of the text field for vector mapping. + */ + textField: string; + + /** + * The field of the metadata. + */ + metadataField: string; +} + +/** + * Represents a Knowledge Base, either created with CDK or imported. + */ +export interface IVectorKnowledgeBase extends IKnowledgeBase { + /** + * Add an S3 data source to the knowledge base. + */ + addS3DataSource(props: S3DataSourceAssociationProps): S3DataSource; + + /** + * Add a web crawler data source to the knowledge base. + */ + addWebCrawlerDataSource(props: WebCrawlerDataSourceAssociationProps): WebCrawlerDataSource; + + /** + * Add a SharePoint data source to the knowledge base. + */ + addSharePointDataSource(props: SharePointDataSourceAssociationProps): SharePointDataSource; + + /** + * Add a Confluence data source to the knowledge base. + */ + addConfluenceDataSource(props: ConfluenceDataSourceAssociationProps): ConfluenceDataSource; + + /** + * Add a Salesforce data source to the knowledge base. + */ + addSalesforceDataSource(props: SalesforceDataSourceAssociationProps): SalesforceDataSource; + + /** + * Add a Custom data source to the knowledge base. + */ + addCustomDataSource(props: CustomDataSourceAssociationProps): CustomDataSource; + + /** + * Grant the given identity permissions to retrieve content from the knowledge base. + */ + grantRetrieve(grantee: iam.IGrantable): iam.Grant; + + /** + * Grant the given identity permissions to retrieve content from the knowledge base. + */ + grantRetrieveAndGenerate(grantee: iam.IGrantable): iam.Grant; +} + +/****************************************************************************** + * ABSTRACT CLASS + *****************************************************************************/ +/** + * Abstract base class for Vector Knowledge Base. + * Contains methods valid for KBs either created with CDK or imported. + */ +abstract class VectorKnowledgeBaseBase extends KnowledgeBaseBase implements IVectorKnowledgeBase { + public abstract readonly knowledgeBaseArn: string; + public abstract readonly knowledgeBaseId: string; + public abstract readonly role: iam.IRole; + public abstract readonly description?: string; + public abstract readonly instruction?: string; + + public readonly type: KnowledgeBaseType = KnowledgeBaseType.VECTOR; + + constructor(scope: Construct, id: string) { + super(scope, id); + } + + // ------------------------------------------------------ + // Helper methods to add Data Sources + // ------------------------------------------------------ + public addS3DataSource(props: S3DataSourceAssociationProps): S3DataSource { + return new S3DataSource(this, `s3-${props.bucket.node.addr}`, { + knowledgeBase: this, + ...props, + }); + } + public addWebCrawlerDataSource( + props: WebCrawlerDataSourceAssociationProps, + ): WebCrawlerDataSource { + const url = new URL(props.sourceUrls[0]); + return new WebCrawlerDataSource(this, `web-${url.hostname.replace('.', '-')}`, { + knowledgeBase: this, + ...props, + }); + } + public addSharePointDataSource( + props: SharePointDataSourceAssociationProps, + ): SharePointDataSource { + const url = new URL(props.siteUrls[0]); + return new SharePointDataSource(this, `sp-${url.hostname.replace('.', '-')}`, { + knowledgeBase: this, + ...props, + }); + } + public addConfluenceDataSource( + props: ConfluenceDataSourceAssociationProps, + ): ConfluenceDataSource { + const url = new URL(props.confluenceUrl); + return new ConfluenceDataSource(this, `cf-${url.hostname.replace('.', '-')}`, { + knowledgeBase: this, + ...props, + }); + } + public addSalesforceDataSource( + props: SalesforceDataSourceAssociationProps, + ): SalesforceDataSource { + const url = new URL(props.endpoint); + return new SalesforceDataSource(this, `sf-${url.hostname.replace('.', '-')}`, { + knowledgeBase: this, + ...props, + }); + } + public addCustomDataSource(props: CustomDataSourceAssociationProps): CustomDataSource { + return new CustomDataSource(this, `custom-${props.dataSourceName}`, { + knowledgeBase: this, + ...props, + }); + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ +/** + * Properties for a knowledge base + */ +export interface VectorKnowledgeBaseProps extends CommonKnowledgeBaseProps { + /** + * The embeddings model for the knowledge base + */ + readonly embeddingsModel: BedrockFoundationModel; + + /** + * The vector type to store vector embeddings. + * + * @default - VectorType.FLOATING_POINT + */ + readonly vectorType?: VectorType; + + /** + * The name of the vector index. + * If vectorStore is not of type `VectorCollection`, + * do not include this property as it will throw error. + * + * @default - 'bedrock-knowledge-base-default-index' + */ + readonly indexName?: string; + + /** + * The name of the field in the vector index. + * If vectorStore is not of type `VectorCollection`, + * do not include this property as it will throw error. + * + * @default - 'bedrock-knowledge-base-default-vector' + */ + readonly vectorField?: string; + + /** + * The vector store for the knowledge base. Must be either of + * type `VectorCollection`, `RedisEnterpriseVectorStore`, + * `PineconeVectorStore` or `AmazonAuroraVectorStore`. + * + * @default - A new OpenSearch Serverless vector collection is created. + */ + readonly vectorStore?: + | VectorCollection; + + /** + * The vector index for the OpenSearch Serverless backed knowledge base. + * If vectorStore is not of type `VectorCollection`, do not include + * this property as it will throw error. + * + * @default - A new vector index is created on the Vector Collection + * if vector store is of `VectorCollection` type. + */ + readonly vectorIndex?: VectorIndex; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +/** + * Properties for importing a knowledge base outside of this stack + */ +export interface VectorKnowledgeBaseAttributes extends CommonKnowledgeBaseAttributes { + // Unique props for vector KBs would be defined here +} + +/** + * Deploys a Bedrock Knowledge Base and configures a backend by OpenSearch Serverless, + * Pinecone, Redis Enterprise Cloud or Amazon Aurora PostgreSQL. + * + */ +export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { + // ------------------------------------------------------ + // Import Methods + // ------------------------------------------------------ + public static fromKnowledgeBaseAttributes( + scope: Construct, + id: string, + attrs: VectorKnowledgeBaseAttributes, + ): IVectorKnowledgeBase { + const stack = Stack.of(scope); + + class Import extends VectorKnowledgeBaseBase { + public readonly role = iam.Role.fromRoleArn( + this, + `kb-${attrs.knowledgeBaseId}-role`, + attrs.executionRoleArn, + ); + public readonly description = attrs.description; + public readonly instruction = attrs.instruction; + public readonly knowledgeBaseId = attrs.knowledgeBaseId; + public readonly knowledgeBaseArn = stack.formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: attrs.knowledgeBaseId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + } + return new Import(scope, id); + } + // ------------------------------------------------------ + // Attributes + // ------------------------------------------------------ + /** + * The name of the knowledge base. + */ + public readonly name: string; + + /** + * Instance of knowledge base. + */ + public readonly knowledgeBaseInstance: bedrock.CfnKnowledgeBase; + + /** + * The role the Knowledge Base uses to access the vector store and data source. + */ + public readonly role: iam.IRole; + + /** + * The vector store for the knowledge base. + */ + public readonly vectorStore: + | VectorCollection; + + /** + * A description of the knowledge base. + */ + readonly description?: string; + + /** + * Instructions for agents based on the design and type of information of the + * Knowledge Base. This will impact how Agents interact with the Knowledge Base. + */ + readonly instruction?: string; + + /** + * The ARN of the knowledge base. + */ + public readonly knowledgeBaseArn: string; + + /** + * The ID of the knowledge base. + */ + public readonly knowledgeBaseId: string; + + /** + * The OpenSearch vector index for the knowledge base. + * @private + */ + private vectorIndex?: VectorIndex; + + /** + * The type of the knowledge base. + * @private + */ + private vectorStoreType: VectorStoreType; + + constructor(scope: Construct, id: string, props: VectorKnowledgeBaseProps) { + super(scope, id); + + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + const embeddingsModel = props.embeddingsModel; + const vectorType = props.vectorType ?? VectorType.FLOATING_POINT; + const indexName = props.indexName ?? 'bedrock-knowledge-base-default-index'; + const vectorField = props.vectorField ?? 'bedrock-knowledge-base-default-vector'; + const textField = 'AMAZON_BEDROCK_TEXT_CHUNK'; + const metadataField = 'AMAZON_BEDROCK_METADATA'; + + this.description = props.description ?? 'CDK deployed Knowledge base'; // even though this prop is optional, if no value is provided it will fail to deploy + //this.knowledgeBaseState = props.knowledgeBaseState ?? 'ENABLED'; + this.instruction = props.instruction; + + validateModel(embeddingsModel, vectorType); + validateVectorIndex(props.vectorStore, props.vectorIndex, props.vectorField, props.indexName); + if (props.vectorIndex) { + validateIndexParameters(props.vectorIndex, indexName); + } + + this.name = props.name ?? this.generatePhysicalName() + 'knowledgebase'; + + if (props.existingRole) { + this.role = props.existingRole; + } else { + const roleName = this.generatePhysicalName() + 'knowledgebaserole'; + this.role = new iam.Role(this, 'Role', { + roleName: roleName, + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com', { + conditions: { + StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, + ArnLike: { + 'aws:SourceArn': Stack.of(this).formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: '*', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }), + }, + }, + }), + }); + + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: ['bedrock:InvokeModel'], + resources: [embeddingsModel.asArn(this)], + }), + ); + } + /** + * Create the vector store if the vector store was provided by the user. + * Otherwise check againts all possible vector datastores. + * If none was provided create default OpenSearch Serverless Collection. + */ + if (props.vectorStore instanceof VectorCollection) { + ({ vectorStore: this.vectorStore, vectorStoreType: this.vectorStoreType } = + this.handleOpenSearchCollection(props)); + } else { + ({ vectorStore: this.vectorStore, vectorStoreType: this.vectorStoreType } = + this.handleOpenSearchDefaultVectorCollection()); + } + + // perform this validation after the vector store is handled since if the user + // doesn't provide one, the method above will create it + validateVectorType(this.vectorStore, vectorType); + + + /** + * Create the vector index if the vector store is OpenSearch Serverless + * and it was not provided. Otherwise use the provided vector index. + */ + if (this.vectorStoreType === VectorStoreType.OPENSEARCH_SERVERLESS) { + if (!props.vectorIndex) { + this.vectorIndex = new VectorIndex(this, 'KBIndex', { + collection: this.vectorStore as VectorCollection, + indexName, + settings: { + knn: true, + }, + mappings: { + properties: { + vectorField: { + type: OpensearchFieldType.KNN_VECTOR, + dimension: embeddingsModel.vectorDimensions!, + //data_type: props.vectorType === VectorType.BINARY ? 'Binary' : 'float', <- This is missing in L1 CfnIndex props + method: { + engine: EngineType.FAISS, + spaceType: props.vectorType === VectorType.BINARY ? SpaceType.HAMMING : SpaceType.L2, + name: AlgorithmNameType.HNSW, + parameters: {}, + }, + }, + AMAZON_BEDROCK_TEXT_CHUNK: { + type: OpensearchFieldType.TEXT, + index: true, + }, + AMAZON_BEDROCK_METADATA: { + type: OpensearchFieldType.TEXT, + index: false, + }, + }, + }, + }); + + this.vectorIndex.node.addDependency(this.vectorStore); + } else { + this.vectorIndex = props.vectorIndex; + } + } + + /** + * Create storage configuraion. If it is of type of + * `AmazonAuroraVectorStore` or `ExistingAmazonAuroraVectorStore`, + * then get textField, metadataField and vectorField from + * the arguments. Otherwise use default values. + */ + const storageConfiguration: StorageConfiguration = { + indexName: indexName, + vectorStore: this.vectorStore, + vectorStoreType: this.vectorStoreType, + vectorField: vectorField, + textField: textField, + metadataField: metadataField, + }; + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + const knowledgeBase = new bedrock.CfnKnowledgeBase(this, 'MyCfnKnowledgeBase', { + knowledgeBaseConfiguration: { + type: KnowledgeBaseType.VECTOR, + vectorKnowledgeBaseConfiguration: { + embeddingModelArn: embeddingsModel.asArn(this), + // Used this approach as if property is specified on models that do not + // support configurable dimensions CloudFormation throws an error at runtime + embeddingModelConfiguration: { + bedrockEmbeddingModelConfiguration: + embeddingsModel.modelId === 'amazon.titan-embed-text-v2:0' + ? { + dimensions: embeddingsModel.vectorDimensions, + embeddingDataType: vectorType, + } + : { embeddingDataType: vectorType }, + }, + }, + }, + name: this.name, + roleArn: this.role.roleArn, + storageConfiguration: getStorageConfiguration(storageConfiguration), + description: props.description, + }); + + this.knowledgeBaseInstance = knowledgeBase; + + const kbCRPolicy = new iam.Policy(this, 'KBCRPolicy', { + // roles: [crProvider.role], + roles: [this.role], + statements: [ + new iam.PolicyStatement({ + actions: [ + 'bedrock:CreateKnowledgeBase', + /** + * We need to add `bedrock:AssociateThirdPartyKnowledgeBase` if + * we are deploying Redis or Pinecone data sources + */ + //...(this.vectorStoreType === VectorStoreType.REDIS_ENTERPRISE_CLOUD || + ...(this.vectorStoreType === VectorStoreType.PINECONE + ? ['bedrock:AssociateThirdPartyKnowledgeBase'] + : []), + ], + resources: ['*'], + }), + new iam.PolicyStatement({ + actions: [ + 'bedrock:UpdateKnowledgeBase', + 'bedrock:DeleteKnowledgeBase', + 'bedrock:TagResource', + ], + resources: [ + Stack.of(this).formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: '*', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }), + ], + }), + new iam.PolicyStatement({ + actions: ['iam:PassRole'], + resources: [this.role.roleArn], + }), + ], + }); + + knowledgeBase.node.addDependency(this.role); + knowledgeBase.node.addDependency(kbCRPolicy); + if (this.vectorStoreType === VectorStoreType.OPENSEARCH_SERVERLESS && this.vectorIndex) { + knowledgeBase.node.addDependency(this.vectorIndex); + } + if (this.vectorStoreType === VectorStoreType.AMAZON_AURORA) { + knowledgeBase.node.addDependency(this.vectorStore); + } + + this.knowledgeBaseArn = knowledgeBase.attrKnowledgeBaseArn; + this.knowledgeBaseId = knowledgeBase.attrKnowledgeBaseId; + } + + /** + * Handle VectorCollection type of VectorStore. + * + * @param props - The properties of the KnowledgeBase. + * @returns The instance of VectorCollection, VectorStoreType. + * @internal This is an internal core function and should not be called directly. + */ + private handleOpenSearchCollection(props: VectorKnowledgeBaseProps): { + vectorStore: VectorCollection; + vectorStoreType: VectorStoreType; + } { + const vectorStore = props.vectorStore as VectorCollection; + vectorStore.grantDataAccess(this.role); + return { + vectorStore: vectorStore, + vectorStoreType: VectorStoreType.OPENSEARCH_SERVERLESS, + }; + } + + /** + * Handle the default VectorStore type. + * + * @returns The instance of VectorCollection, VectorStoreType. + * @internal This is an internal core function and should not be called directly. + */ + private handleOpenSearchDefaultVectorCollection(): { + vectorStore: VectorCollection; + vectorStoreType: VectorStoreType; + } { + const vectorStore = new VectorCollection(this, 'KBVectors'); + vectorStore.grantDataAccess(this.role); + return { + vectorStore: vectorStore, + vectorStoreType: VectorStoreType.OPENSEARCH_SERVERLESS, + }; + } + + /** + * Associate knowledge base with an agent + */ + public associateToAgent(agent: Agent) { + agent.addKnowledgeBase(this); + } + + protected generatePhysicalName(): string { + return super.generatePhysicalName().toLowerCase(); + } +} + +/** + * Validate that Bedrock Knowledge Base can use the selected model. + * + * @internal This is an internal core function and should not be called directly. + */ +function validateModel(foundationModel: BedrockFoundationModel, vectorType: VectorType) { + if (!foundationModel.supportsKnowledgeBase) { + throw new Error(`The model ${foundationModel} is not supported by Bedrock Knowledge Base.`); + } + if ( + foundationModel.supportedVectorType && + !foundationModel.supportedVectorType.includes(vectorType) + ) { + throw new Error( + `The vector type ${vectorType} is not supported by the model ${foundationModel}.`, + ); + } +} + +/** + * Validate that the storage configuration can use the selected vector type. + * It prevents the use of vector types with vector stores that do not support them, + * thereby avoiding potential runtime errors. + * + * @internal This is an internal core function and should not be called directly. + */ +function validateVectorType(vectorStore: any, vectorType: VectorType) { + if (!(vectorStore instanceof VectorCollection) && vectorType == VectorType.BINARY) { + console.log(vectorStore); + throw new Error( + 'Amazon OpenSearch Serverless is currently the only vector store that supports storing binary vectors.', + ); + } +} + +/** + * Validate if VectorIndex was provided for a VectorStore of type + * other than `VectorCollection`. + * + * @internal This is an internal core function and should not be called directly. + */ +function validateVectorIndex(vectorStore: any, vectorIndex: any, vectorField: any, indexName: any) { + if (!(vectorStore instanceof VectorCollection) && vectorIndex) { + throw new Error( + 'If vectorStore is not of type VectorCollection, vectorIndex should not be provided ' + + 'in KnowledgeBase construct.', + ); + } + if (!(vectorStore instanceof VectorCollection) && indexName) { + throw new Error( + 'If vectorStore is not of type VectorCollection, indexName should not be provided ' + + 'in KnowledgeBase construct.', + ); + } + if (!(vectorStore instanceof VectorCollection) && vectorField) { + throw new Error( + 'If vectorStore is not of type VectorCollection, vectorField should not be provided ' + + 'in KnowledgeBase construct.', + ); + } +} + +/** + * Validate that indexName and vectorField parameters are identical + * in KnowledgeBase construct if VectorIndex was created manually. + * + * By default we assign `vectorIndex` to `bedrock-knowledge-base-default-index` + * value and if user provides `vectorIndex` manually, we need to make sure + * they also provide it in KnowledgeBase construct if the value is not + * `bedrock-knowledge-base-default-index`. Same for vectorField. + * + * @internal This is an internal core function and should not be called directly. + */ +function validateIndexParameters(vectorIndex: VectorIndex, indexName: string,) { + if (vectorIndex.indexName !== 'bedrock-knowledge-base-default-index') { + if (vectorIndex.indexName !== indexName) { + throw new Error( + 'Default value of indexName is `bedrock-knowledge-base-default-index`.' + + ' If you create VectorIndex manually and assign vectorIndex to value other than' + + ' `bedrock-knowledge-base-default-index` then you must provide the same value in KnowledgeBase construct.' + + ' If you created VectorIndex manually and set it to `bedrock-knowledge-base-default-index`' + + ' then do not assign indexName in KnowledgeBase construct.', + ); + } + } +} + +/** + * Determine storage configuration based on vector store type. + * + * @internal This is an internal core function and should not be called directly. + */ +function getStorageConfiguration(params: StorageConfiguration): any { + switch (params.vectorStoreType) { + case VectorStoreType.OPENSEARCH_SERVERLESS: + params.vectorStore = params.vectorStore as VectorCollection; + return { + type: VectorStoreType.OPENSEARCH_SERVERLESS, + opensearchServerlessConfiguration: { + collectionArn: params.vectorStore.collectionArn, + fieldMapping: { + vectorField: params.vectorField, + textField: params.textField, + metadataField: params.metadataField, + }, + vectorIndexName: params.indexName, + }, + }; + default: + throw new Error(`Unsupported vector store type: ${params.vectorStoreType}`); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts new file mode 100644 index 0000000000000..f2c4721526026 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts @@ -0,0 +1,82 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +export enum CharacterFilterType { + ICU_NORMALIZER = 'icu_normalizer', +} + +// Currently we only support Kuromoji and ICU tokenizers. +// Also see the following link for more information regarding supported plugins: +// https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-genref.html#serverless-plugins +export enum TokenizerType { + /** + * Kuromoji tokenizer is used for Japanese text analysis and segmentation + */ + KUROMOJI_TOKENIZER = 'kuromoji_tokenizer', + /** + * ICU tokenizer is used for Unicode text segmentation based on UAX #29 rules + */ + ICU_TOKENIZER = 'icu_tokenizer', + /** + * Nori tokenizer is used for Korean text analysis and segmentation + */ + NORI_TOKENIZER = 'nori_tokenizer', +} + +/** + * TokenFilterType defines the available token filters for text analysis. + * Token filters process tokens after they have been created by the tokenizer. + * They can modify, add, or remove tokens based on specific rules. + */ +export enum TokenFilterType { + /** + * Converts inflected Japanese words to their base form + */ + KUROMOJI_BASEFORM = 'kuromoji_baseform', + /** + * Tags words with their parts of speech in Japanese text analysis + */ + KUROMOJI_PART_OF_SPEECH = 'kuromoji_part_of_speech', + /** + * Reduces Japanese words to their stem form + */ + KUROMOJI_STEMMER = 'kuromoji_stemmer', + /** + * Normalizes CJK width differences by converting all characters to their fullwidth or halfwidth variants + */ + CJK_WIDTH = 'cjk_width', + /** + * Removes Japanese stop words from text + */ + JA_STOP = 'ja_stop', + /** + * Converts all characters to lowercase + */ + LOWERCASE = 'lowercase', + /** + * Applies Unicode folding rules for better text matching + */ + ICU_FOLDING = 'icu_folding', + /** + * Tags words with their parts of speech in Korean text analysis + */ + NORI_PART_OF_SPEECH = 'nori_part_of_speech', + /** + * Converts Korean text to its reading form + */ + NORI_READINGFORM = 'nori_readingform', + /** + * Normalizes Korean numbers to regular Arabic numbers + */ + NORI_NUMBER = 'nori_number', +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts new file mode 100644 index 0000000000000..1f5168211fbe2 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts @@ -0,0 +1,16 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +export * from './opensearch-collection'; +export * from './opensearch-vector-index'; +export * from './analysis-plugins'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts new file mode 100644 index 0000000000000..9025e205a665e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts @@ -0,0 +1,508 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as cdk from 'aws-cdk-lib'; +import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as oss from 'aws-cdk-lib/aws-opensearchserverless'; +import { Construct } from 'constructs'; + +/** + * Configuration for standby replicas in a vector collection. + */ +export enum VectorCollectionStandbyReplicas { + /** + * Enable standby replicas for high availability + */ + ENABLED = 'ENABLED', + + /** + * Disable standby replicas to reduce costs + */ + DISABLED = 'DISABLED', +} + +/** + * The type of collection. + */ +export enum VectorCollectionType { + /** + * Search – Full-text search that powers applications in your internal networks (content management systems, legal documents) and internet-facing applications, + * such as ecommerce website search and content search. + */ + SEARCH = 'SEARCH', + + /** + * Time series – The log analytics segment that focuses on analyzing large volumes of semi-structured, + * machine-generated data in real-time for operational, security, user behavior, and business insights. + */ + TIMESERIES = 'TIMESERIES', + + /** + * Vector search – Semantic search on vector embeddings that simplifies vector data management and powers machine learning (ML) augmented search experiences and generative AI applications, + * such as chatbots, personal assistants, and fraud detection. + */ + VECTORSEARCH = 'VECTORSEARCH' +} + +/** + * Attributes for importing an existing vector collection. + */ +export interface VectorCollectionAttributes { + /** + * The name of the collection + */ + readonly collectionName: string; + + /** + * The ID of the collection + */ + readonly collectionId: string; + + /** + * The ARN of the collection + */ + readonly collectionArn: string; + + /** + * The standby replicas configuration + */ + readonly standbyReplicas: VectorCollectionStandbyReplicas; + + /** + * The type of collection + */ + readonly collectionType: VectorCollectionType; +} + +/** + * Properties for configuring the vector collection. + */ +export interface VectorCollectionProps { + /** + * The name of the collection. Must be between 3-32 characters long and contain only + * lowercase letters, numbers, and hyphens. + * + * @default - A CDK generated name will be used + */ + readonly collectionName?: string; + + /** + * Description for the collection + */ + readonly description?: string; + + /** + * Indicates whether to use standby replicas for the collection. + * + * @default VectorCollectionStandbyReplicas.ENABLED + */ + readonly standbyReplicas?: VectorCollectionStandbyReplicas; + + /** + * A user defined IAM policy that allows API access to the collection. + */ + readonly customAossPolicy?: iam.ManagedPolicy; + + /** + * Type of vector collection + * + * @default - VECTORSEARCH + */ + readonly collectionType?: VectorCollectionType; + + /** + * A list of tags associated with the inference profile. + * */ + readonly tags?: Array; +} + +/** + * Interface representing a vector collection + */ +export interface IVectorCollection extends cdk.IResource { + /** + * The name of the collection. + */ + readonly collectionName: string; + + /** + * The ID of the collection. + */ + readonly collectionId: string; + + /** + * The ARN of the collection. + */ + readonly collectionArn: string; + + /** + * Indicates whether standby replicas are enabled. + */ + readonly standbyReplicas: VectorCollectionStandbyReplicas; + + /** + * An IAM policy that allows API access to the collection. + */ + readonly aossPolicy: iam.ManagedPolicy; + + /** + * An OpenSearch Access Policy that allows access to the index. + */ + readonly dataAccessPolicy: oss.CfnAccessPolicy; + + /** + * Type of collection + */ + readonly collectionType: VectorCollectionType; + + /** + * Return the given named metric for this VectorCollection. + * + * @param metricName The name of the metric + * @param props Properties for the metric + */ + metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric; + + /** + * Metric for the number of search requests. + * + * @param props Properties for the metric + */ + metricSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric; + + /** + * Metric for the number of index requests. + * + * @param props Properties for the metric + */ + metricIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric; + + /** + * Metric for the search latency. + * + * @param props Properties for the metric + */ + metricSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric; + + /** + * Metric for the 90th percentile search latency. + * + * @param props Properties for the metric + */ + metricSearchLatencyP90(props?: cloudwatch.MetricOptions): cloudwatch.Metric; +} + +/** + * A new or imported vector collection. + */ +abstract class VectorCollectionBase extends cdk.Resource implements IVectorCollection { + public abstract readonly collectionName: string; + public abstract readonly collectionId: string; + public abstract readonly collectionArn: string; + public abstract readonly standbyReplicas: VectorCollectionStandbyReplicas; + public abstract readonly aossPolicy: iam.ManagedPolicy; + public abstract readonly dataAccessPolicy: oss.CfnAccessPolicy; + public abstract readonly collectionType: VectorCollectionType; + + public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return new cloudwatch.Metric({ + namespace: 'AWS/AOSS', + metricName, + dimensionsMap: { + CollectionId: this.collectionId, + }, + ...props, + }); + } + + public metricSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metric('SearchRequestCount', props); + } + + public metricIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metric('IndexRequestCount', props); + } + + public metricSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metric('SearchLatency', { statistic: 'Average', ...props }); + } + + public metricSearchLatencyP90(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metric('SearchLatency', { statistic: 'p90', ...props }); + } +} + +/** + * Provides a vector search collection in Amazon OpenSearch Serverless. + */ +export class VectorCollection extends VectorCollectionBase { + /** + * Return metrics for all vector collections. + */ + public static metricAll(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return new cloudwatch.Metric({ + namespace: 'AWS/AOSS', + metricName, + statistic: 'Sum', + ...props, + }); + } + + /** + * Metric for the total number of search requests across all collections. + */ + public static metricAllSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metricAll('SearchRequestCount', props); + } + + /** + * Metric for the total number of index requests across all collections. + */ + public static metricAllIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metricAll('IndexRequestCount', props); + } + + /** + * Metric for average search latency across all collections. + */ + public static metricAllSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.metricAll('SearchLatency', { + statistic: 'Average', + ...props, + }); + } + + /** + * Import an existing collection using its attributes. + * @param constructScope The parent creating construct. + * @param constructId The construct's name. + * @param attrs The collection attributes to use. + */ + public static fromCollectionAttributes( + constructScope: Construct, + constructId: string, + attrs: VectorCollectionAttributes, + ): IVectorCollection { + class Import extends VectorCollectionBase { + public readonly collectionArn = attrs.collectionArn; + public readonly collectionId = attrs.collectionId; + public readonly collectionName = attrs.collectionName; + public readonly standbyReplicas = attrs.standbyReplicas; + public readonly collectionType = attrs.collectionType; + public readonly aossPolicy: iam.ManagedPolicy; + public readonly dataAccessPolicy: oss.CfnAccessPolicy; + + constructor(scope: Construct, id: string) { + super(scope, id); + + this.aossPolicy = new iam.ManagedPolicy(this, 'ImportedAOSSPolicy', { + statements: [ + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: ['aoss:APIAccessAll'], + resources: [this.collectionArn], + }), + ], + }); + + this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'ImportedDataAccessPolicy', { + name: this.generatePhysicalName() + '-DataAccessPolicy-agent', + type: 'data', + policy: '[]', + }); + } + } + return new Import(constructScope, constructId); + } + + public readonly collectionName: string; + public readonly standbyReplicas: VectorCollectionStandbyReplicas; + public readonly collectionId: string; + public readonly collectionArn: string; + public readonly aossPolicy: iam.ManagedPolicy; + public readonly dataAccessPolicy: oss.CfnAccessPolicy; + public readonly collectionType: VectorCollectionType; + public readonly collectionEndpoint: string; + public readonly dashboardEndpoint: string; + + /** + * Instance of CfnCollection. + */ + private readonly _resource: oss.CfnCollection; + + /** + * An OpenSearch Access Policy document that will become `dataAccessPolicy`. + * @private + */ + private dataAccessPolicyDocument: any[] = []; + + constructor(scope: Construct, id: string, props?: VectorCollectionProps) { + super(scope, id); + + // Ensure collection name stays within 32 chars while maintaining uniqueness + const physicalName = this.generatePhysicalName(); + this.collectionName = props?.collectionName ?? + (physicalName.length > 22 ? + physicalName.substring(0, 22) + '-vec' : // truncate long names + physicalName + '-vec'); // short names can use full physical name + + this.standbyReplicas = props?.standbyReplicas ?? VectorCollectionStandbyReplicas.ENABLED; + this.collectionType = props?.collectionType ?? VectorCollectionType.VECTORSEARCH; + + const encryptionPolicyName = this.generatePhysicalName() + '-EncryptionPolicy'; + const encryptionPolicy = new oss.CfnSecurityPolicy(this, 'EncryptionPolicy', { + name: encryptionPolicyName, + type: 'encryption', + policy: JSON.stringify({ + Rules: [ + { + ResourceType: 'collection', + Resource: [`collection/${this.collectionName}`], + }, + ], + AWSOwnedKey: true, + }), + }); + + const networkPolicyName = this.generatePhysicalName() + '-NetworkPolicy'; + + const networkPolicy = new oss.CfnSecurityPolicy(this, 'NetworkPolicy', { + name: networkPolicyName, + type: 'network', + policy: JSON.stringify([ + { + Rules: [ + { + ResourceType: 'collection', + Resource: [`collection/${this.collectionName}`], + }, + { + ResourceType: 'dashboard', + Resource: [`collection/${this.collectionName}`], + }, + ], + AllowFromPublic: true, + }, + ]), + }); + + this._resource = new oss.CfnCollection(this, 'VectorCollection', { + name: this.collectionName, + type: this.collectionType, + standbyReplicas: this.standbyReplicas, + description: props?.description, + tags: props?.tags, + }); + + this.collectionArn = this._resource.attrArn; + this.collectionId = this._resource.attrId; + this.collectionEndpoint = this._resource.attrCollectionEndpoint; + this.dashboardEndpoint = this._resource.attrDashboardEndpoint; + + if (props?.customAossPolicy) { + this.aossPolicy = props.customAossPolicy; + } else { + this.aossPolicy = new iam.ManagedPolicy( + this, + 'AOSSApiAccessAll', { + statements: [ + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: [ + 'aoss:APIAccessAll', + ], + resources: [this._resource.attrArn], + }), + ], + }, + ); + } + + this._resource.node.addDependency(encryptionPolicy); + this._resource.node.addDependency(networkPolicy); + + const isDataAccessPolicyNotEmpty = new cdk.CfnCondition(this, 'IsDataAccessPolicyNotEmpty', { + expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(0, cdk.Lazy.number({ + produce: () => this.dataAccessPolicyDocument.length, + }))), + }); + + const dataAccessPolicyName = this.generatePhysicalName() + '-DataAccessPolicy'; + + this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'DataAccessPolicy', { + name: dataAccessPolicyName, + type: 'data', + policy: cdk.Lazy.string({ + produce: () => JSON.stringify(this.dataAccessPolicyDocument), + }), + }); + + this.dataAccessPolicy.cfnOptions.condition = isDataAccessPolicyNotEmpty; + + this.node.addValidation({ + validate: () => { + const errors: string[] = []; + + if (this.collectionName) { + if (!/^[a-z0-9-]+$/.test(this.collectionName)) { + errors.push('Collection name must contain only lowercase letters, numbers, and hyphens'); + } + if (this.collectionName.length < 3 || this.collectionName.length > 32) { + errors.push('Collection name must be between 3 and 32 characters'); + } + } + + return errors; + }, + }); + + cdk.Tags.of(this).add('Name', this.collectionName); + cdk.Tags.of(this).add('Type', 'VectorCollection'); + } + /** + * Grants the specified role access to data in the collection. + * @param grantee The role to grant access to. + */ + grantDataAccess(grantee: iam.IRole) { + this.dataAccessPolicyDocument.push({ + Rules: [ + { + Resource: [`collection/${this.collectionName}`], + Permission: [ + 'aoss:DescribeCollectionItems', + 'aoss:CreateCollectionItems', + 'aoss:UpdateCollectionItems', + ], + ResourceType: 'collection', + }, + { + Resource: [`index/${this.collectionName}/*`], + Permission: [ + 'aoss:UpdateIndex', + 'aoss:DescribeIndex', + 'aoss:ReadDocument', + 'aoss:WriteDocument', + 'aoss:CreateIndex', + ], + ResourceType: 'index', + }, + ], + Principal: [ + grantee.roleArn, + ], + Description: '', + }); + grantee.addManagedPolicy(this.aossPolicy); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts new file mode 100644 index 0000000000000..8f08db1966953 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts @@ -0,0 +1,326 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import * as cdk from 'aws-cdk-lib'; +import * as oss from 'aws-cdk-lib/aws-opensearchserverless'; +import { Construct } from 'constructs'; +import { VectorCollection } from './opensearch-collection'; + +/** + * The field data type. Must be a valid OpenSearch field type. + */ +export enum OpensearchFieldType { + TEXT = 'text', + KNN_VECTOR = 'knn_vector', +} + +/** + * The k-NN search engine to use. + */ +export enum EngineType { + /** + * C++ implementation. + */ + FAISS = 'faiss', + /** + * C++ implementation. + */ + NMSLIB = 'nmslib', + /** + * Java implementation. + */ + LUCENE = 'lucene', +} + +/** + * The algorithm name for k-NN search. + */ +export enum AlgorithmNameType { + HNSW = 'hnsw', + IVF = 'ivf', +} + +/** + * The distance function used for k-NN search. + */ +export enum SpaceType { + L2 = 'l2', + L1 = 'l1', + LINF = 'linf', + COSINESIMILARITY = 'cosinesimil', + INNERPRODUCT = 'innerproduct', + HAMMING = 'hamming', +} + +/** + * Additional parameters for the k-NN algorithm. + */ +export interface MethodParameters { + /** + * The size of the dynamic list used during k-NN graph creation. + */ + readonly efConstruction?: number; + /** + * Number of neighbors to consider during k-NN search. + */ + readonly m?: number; +} + +/** + * Configuration for k-NN search method. + */ +export interface Method { + /** + * The k-NN search engine to use. + */ + readonly engine: EngineType; + /** + * The algorithm name for k-NN search. + */ + readonly name: AlgorithmNameType; + /** + * Additional parameters for the k-NN algorithm. + */ + readonly parameters?: MethodParameters; + /** + * The distance function used for k-NN search. + */ + readonly spaceType?: SpaceType; +} + +export interface PropertyMapping { + /** + * Dimension size for vector fields, defines the number of dimensions in the vector. + */ + readonly dimension?: number; + /** + * Whether the index is indexed. Previously, this was called `filterable`. + */ + readonly index?: boolean; + /** + * Configuration for k-NN search method. + */ + readonly method?: Method; + /** + * Defines the fields within the mapping, including their types and configurations. + */ + readonly properties?: Record; + /** + * The field data type. Must be a valid OpenSearch field type. + */ + readonly type: OpensearchFieldType; + /** + * Default value for the field when not specified in a document. + */ + readonly value?: string; +} + +/** + * Index settings for the OpenSearch Serverless index. + */ +export interface IndexSettings { + /** + * Enable or disable k-nearest neighbor search capability. + */ + readonly knn?: boolean; + /** + * The size of the dynamic list for the nearest neighbors. + */ + readonly knnAlgoParamEfSearch?: number; + /** + * How often to perform a refresh operation. For example, 1s or 5s. + */ + readonly refreshInterval?: cdk.Duration; +} + +/** + * The mappings for the OpenSearch Serverless index. + */ +export interface MappingsProperty { + readonly properties: Record; +} + +/** + * Properties for the VectorIndex. + */ +export interface VectorIndexProps { + /** + * The OpenSearch Vector Collection. + */ + readonly collection: VectorCollection; + /** + * The name of the index. + */ + readonly indexName: string; + /** + * The metadata management fields. + */ + readonly mappings?: MappingsProperty; + /** + * The settings for the index. + */ + readonly settings?: IndexSettings; +} + +export interface VectorIndexAttributes { + /** + * The endpoint of the collection + */ + readonly collectionEndpoint: string; + /** + * The name of the index + */ + readonly indexName: string; +} + +/** + * Interface representing a vector index + */ +export interface IVectorIndex extends cdk.IResource { + /** + * The endpoint of the collection + */ + readonly collectionEndpoint: string; + /** + * The name of the index + */ + readonly indexName: string; +} + +/** + * A new or imported vector index. + */ +abstract class VectorIndexBase extends cdk.Resource implements IVectorIndex { + public abstract readonly collectionEndpoint: string; + public abstract readonly indexName: string; + + public static fromVectorIndexAttributes( + scope: Construct, + constructId: string, + attrs: VectorIndexAttributes, + ): IVectorIndex { + class Import extends VectorIndexBase { + public readonly collectionEndpoint = attrs.collectionEndpoint; + public readonly indexName = attrs.indexName; + } + return new Import(scope, constructId); + } +} + +/** + * Provides a vector index in Amazon OpenSearch Serverless. + */ +export class VectorIndex extends VectorIndexBase { + /** + * The name of the index. + */ + public readonly indexName: string; + /** + * The endpoint of the collection + */ + public readonly collectionEndpoint: string; + + /** + * Instance of CfnIndex. + */ + private readonly _resource: oss.CfnIndex; + + + constructor(scope: Construct, id: string, props: VectorIndexProps) { + super(scope, id); + + // ------------------------------------------------------ + // Set attributes or defaults + // ------------------------------------------------------ + this.indexName = props.indexName; + + const manageIndexPolicyName = this.generatePhysicalName() + '-ManageIndexPolicy'; + const manageIndexPolicy = new oss.CfnAccessPolicy( + this, + 'ManageIndexPolicy', + { + name: manageIndexPolicyName, + type: 'data', + policy: JSON.stringify([ + { + Rules: [ + { + Resource: [`index/${props.collection.collectionName}/*`], + Permission: [ + 'aoss:DescribeIndex', + 'aoss:CreateIndex', + 'aoss:DeleteIndex', + 'aoss:UpdateIndex', + ], + ResourceType: 'index', + }, + { + Resource: [`collection/${props.collection.collectionName}`], + Permission: ['aoss:DescribeCollectionItems'], + ResourceType: 'collection', + }, + ], + Principal: ['*'], + Description: '', + }, + ]), + }, + ); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this._resource = new oss.CfnIndex(this, 'VectorIndex', { + indexName: props.indexName, + collectionEndpoint: props.collection.collectionEndpoint, + mappings: this._renderMappings(props.mappings), + settings: this._renderIndexSettings(props.settings), + }); + + this.collectionEndpoint = this._resource.collectionEndpoint; + + this._resource.addDependency(manageIndexPolicy); + this._resource.addDependency(props.collection.dataAccessPolicy); + } + + /** + * Render the index settings. + */ + private _renderIndexSettings(props?: IndexSettings): oss.CfnIndex.IndexSettingsProperty { + if (!props) return {}; + + return { + index: { + knn: props?.knn, + knnAlgoParamEfSearch: props?.knnAlgoParamEfSearch, + refreshInterval: props?.refreshInterval?.toString(), + }, + }; + } + + /** + * Render the mappings. + */ + private _renderMappings(props?: MappingsProperty): oss.CfnIndex.MappingsProperty { + if (!props) return {}; + + const convertedProps: Record = {}; + for (const [key, value] of Object.entries(props.properties)) { + convertedProps[key] = value as unknown as oss.CfnIndex.PropertyMappingProperty; + } + + return { + properties: convertedProps, + }; + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts new file mode 100644 index 0000000000000..8364e5a283918 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -0,0 +1,438 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; +import { IModel, FoundationModel, FoundationModelIdentifier } from 'aws-cdk-lib/aws-bedrock'; +import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; +import { IConstruct } from 'constructs'; + +/** + * The data type for the vectors when using a model to convert text into vector embeddings. + * The model must support the specified data type for vector embeddings. Floating-point (float32) + * is the default data type, and is supported by most models for vector embeddings. See Supported + * embeddings models for information on the available models and their vector data types. + */ +export enum VectorType { + /** + * `FLOATING_POINT` convert the data to floating-point (float32) vector embeddings (more precise, but more costly). + */ + FLOATING_POINT = 'FLOAT32', + /** + * `BINARY` convert the data to binary vector embeddings (less precise, but less costly). + */ + BINARY = 'BINARY', +} + +/** + * Represents an Amazon Bedrock abstraction on which you can + * run the `Invoke` API. This can be a Foundational Model, + * a Custom Model, or an Inference Profile. + */ +export interface IInvokable { + /** + * The ARN of the Bedrock invokable abstraction. + */ + readonly invokableArn: string; + + /** + * Gives the appropriate policies to invoke and use the invokable abstraction. + */ + grantInvoke(grantee: IGrantable): Grant; +} + +export interface BedrockFoundationModelProps { + /** + * Bedrock Agents can use this model. + * + * @default - false + */ + readonly supportsAgents?: boolean; + /** + * Currently, some of the offered models are optimized with prompts/parsers fine-tuned for integrating with the agents architecture. + * + * @default - false + */ + readonly optimizedForAgents?: boolean; + /** + * https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html + * A version is marked Legacy when there is a more recent version which provides superior performance. Amazon Bedrock sets an EOL date for Legacy versions. + * + * @default - false + */ + readonly legacy?: boolean; + /** + * Bedrock Knowledge Base can use this model. + * + * @default - false + */ + readonly supportsKnowledgeBase?: boolean; + /** + * Can be used with a Cross-Region Inference Profile + * @default - false + */ + readonly supportsCrossRegion?: boolean; + /** + * Embedding models have different vector dimensions. + * Only applicable for embedding models. + */ + readonly vectorDimensions?: number; + /** + * Embeddings models have different supported vector types + */ + readonly supportedVectorType?: VectorType[]; +} + +/** + * Bedrock models. + * + * If you need to use a model name that doesn't exist as a static member, you + * can instantiate a `BedrockFoundationModel` object, e.g: `new BedrockFoundationModel('my-model')`. + */ +export class BedrockFoundationModel implements IInvokable { + /**************************************************************************** + * AI21 + ***************************************************************************/ + public static readonly AI21_JAMBA_1_5_LARGE_V1 = new BedrockFoundationModel( + 'ai21.jamba-1-5-large-v1:0', + { + supportsAgents: true, + }, + ); + + public static readonly AI21_JAMBA_1_5_MINI_V1 = new BedrockFoundationModel( + 'ai21.jamba-1-5-mini-v1:0', + { + supportsAgents: true, + }, + ); + + public static readonly AI21_JAMBA_INSTRUCT_V1 = new BedrockFoundationModel( + 'ai21.jamba-instruct-v1:0', + { + supportsAgents: true, + }, + ); + /**************************************************************************** + * AMAZON + ***************************************************************************/ + public static readonly AMAZON_TITAN_TEXT_EXPRESS_V1 = new BedrockFoundationModel( + 'amazon.titan-text-express-v1', + { + supportsAgents: true, + }, + ); + + public static readonly AMAZON_TITAN_PREMIER_V1_0 = new BedrockFoundationModel( + 'amazon.titan-text-premier-v1:0', + { + supportsAgents: true, + }, + ); + + public static readonly AMAZON_NOVA_MICRO_V1 = new BedrockFoundationModel( + 'amazon.nova-micro-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + optimizedForAgents: true, + }, + ); + + public static readonly AMAZON_NOVA_LITE_V1 = new BedrockFoundationModel('amazon.nova-lite-v1:0', { + supportsAgents: true, + supportsCrossRegion: true, + optimizedForAgents: true, + }); + + public static readonly AMAZON_NOVA_PRO_V1 = new BedrockFoundationModel('amazon.nova-pro-v1:0', { + supportsAgents: true, + supportsCrossRegion: true, + optimizedForAgents: true, + }); + + public static readonly TITAN_EMBED_TEXT_V1 = new BedrockFoundationModel( + 'amazon.titan-embed-text-v1', + { + supportsKnowledgeBase: true, + vectorDimensions: 1536, + supportedVectorType: [VectorType.FLOATING_POINT], + }, + ); + + public static readonly TITAN_EMBED_TEXT_V2_1024 = new BedrockFoundationModel( + 'amazon.titan-embed-text-v2:0', + { + supportsKnowledgeBase: true, + vectorDimensions: 1024, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }, + ); + + public static readonly TITAN_EMBED_TEXT_V2_512 = new BedrockFoundationModel( + 'amazon.titan-embed-text-v2:0', + { + supportsKnowledgeBase: true, + vectorDimensions: 512, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }, + ); + + public static readonly TITAN_EMBED_TEXT_V2_256 = new BedrockFoundationModel( + 'amazon.titan-embed-text-v2:0', + { + supportsKnowledgeBase: true, + vectorDimensions: 256, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }, + ); + /**************************************************************************** + * ANTHROPIC + ***************************************************************************/ + public static readonly ANTHROPIC_CLAUDE_3_7_SONNET_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-7-sonnet-20250219-v1:0', + + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: false }, + ); + + public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V2_0 = new BedrockFoundationModel( + 'anthropic.claude-3-5-sonnet-20241022-v2:0', + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-5-sonnet-20240620-v1:0', + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-5-haiku-20241022-v1:0', + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_OPUS_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-opus-20240229-v1:0', + { supportsAgents: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_SONNET_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-sonnet-20240229-v1:0', + { supportsAgents: true, supportsCrossRegion: true, legacy: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_HAIKU_V1_0 = new BedrockFoundationModel( + 'anthropic.claude-3-haiku-20240307-v1:0', + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, + ); + + public static readonly ANTHROPIC_CLAUDE_V2_1 = new BedrockFoundationModel( + 'anthropic.claude-v2:1', + { + supportsAgents: true, + legacy: true, + optimizedForAgents: true, + }, + ); + + public static readonly ANTHROPIC_CLAUDE_V2 = new BedrockFoundationModel('anthropic.claude-v2', { + supportsAgents: true, + legacy: true, + optimizedForAgents: true, + }); + + public static readonly ANTHROPIC_CLAUDE_INSTANT_V1_2 = new BedrockFoundationModel( + 'anthropic.claude-instant-v1', + { + supportsAgents: true, + legacy: true, + optimizedForAgents: true, + }, + ); + + /**************************************************************************** + * COHERE + ***************************************************************************/ + public static readonly COHERE_EMBED_ENGLISH_V3 = new BedrockFoundationModel( + 'cohere.embed-english-v3', + { + supportsKnowledgeBase: true, + vectorDimensions: 1024, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }, + ); + + public static readonly COHERE_EMBED_MULTILINGUAL_V3 = new BedrockFoundationModel( + 'cohere.embed-multilingual-v3', + { + supportsKnowledgeBase: true, + vectorDimensions: 1024, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }, + ); + /**************************************************************************** + * DEEPSEEK + ***************************************************************************/ + public static readonly DEEPSEEK_R1_V1 = new BedrockFoundationModel( + 'deepseek.r1-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + /**************************************************************************** + * META + ***************************************************************************/ + public static readonly META_LLAMA_3_1_8B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-1-8b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static readonly META_LLAMA_3_1_70B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-1-70b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static readonly META_LLAMA_3_2_11B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-2-11b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static readonly META_LLAMA_3_2_3B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-2-3b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static readonly META_LLAMA_3_2_1B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-2-1b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static readonly META_LLAMA_3_3_70B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama3-3-70b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + public static fromCdkFoundationModelId( + modelId: FoundationModelIdentifier, + props: BedrockFoundationModelProps = {}, + ): BedrockFoundationModel { + return new BedrockFoundationModel(modelId.modelId, props); + } + public static fromCdkFoundationModel( + modelId: FoundationModel, + props: BedrockFoundationModelProps = {}, + ): BedrockFoundationModel { + return new BedrockFoundationModel(modelId.modelId, props); + } + + /**************************************************************************** + * Constructor + ***************************************************************************/ + public readonly modelId: string; + public readonly modelArn: string; + public readonly invokableArn: string; + public readonly supportsAgents: boolean; + public readonly supportsCrossRegion: boolean; + public readonly vectorDimensions?: number; + public readonly supportsKnowledgeBase: boolean; + public readonly supportedVectorType?: VectorType[]; + constructor(value: string, props: BedrockFoundationModelProps = {}) { + this.modelId = value; + this.modelArn = Arn.format({ + partition: Aws.PARTITION, + service: 'bedrock', + region: Aws.REGION, + account: '', + resource: 'foundation-model', + resourceName: this.modelId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + this.invokableArn = this.modelArn; + this.supportsCrossRegion = props.supportsCrossRegion ?? false; + this.supportsAgents = props.supportsAgents ?? false; + this.vectorDimensions = props.vectorDimensions; + this.supportsKnowledgeBase = props.supportsKnowledgeBase ?? false; + this.supportedVectorType = props.supportedVectorType; + } + + toString(): string { + return this.modelId; + } + + /** + * Returns the ARN of the foundation model in the following format: + * `arn:${Partition}:bedrock:${Region}::foundation-model/${ResourceId}` + */ + asArn(construct: IConstruct): string { + if (construct) { + } + return this.modelArn; + } + + asIModel(construct: IConstruct): IModel { + if (construct) { + } + return this; + } + + /** + * Gives the appropriate policies to invoke and use the Foundation Model in the stack region. + */ + public grantInvoke(grantee: IGrantable): Grant { + const grant = Grant.addToPrincipal({ + grantee: grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: [this.invokableArn], + }); + return grant; + } + + /** + * Gives the appropriate policies to invoke and use the Foundation Model in all regions. + */ + public grantInvokeAllRegions(grantee: IGrantable): Grant { + const invokableArn = Arn.format({ + partition: Aws.PARTITION, + service: 'bedrock', + region: '*', + account: '', + resource: 'foundation-model', + resourceName: this.modelId, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); + + return Grant.addToPrincipal({ + grantee: grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: [invokableArn], + }); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts new file mode 100644 index 0000000000000..ef44f46e5fc52 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts @@ -0,0 +1,294 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { aws_bedrock as bedrock } from 'aws-cdk-lib'; +import { CfnPrompt } from 'aws-cdk-lib/aws-bedrock'; +import { IAgentAlias } from '../agents/agent-alias'; +import { IInvokable } from '../models'; + +// ------------------------------------------------------ +// COMMON +// ------------------------------------------------------ +export enum PromptTemplateType { + TEXT = 'TEXT', + CHAT = 'CHAT', +} + +export interface CommonPromptVariantProps { + /** + * The name of the prompt variant. + */ + readonly variantName: string; + /** + * The model which is used to run the prompt. The model could be a foundation + * model, a custom model, or a provisioned model. + */ + readonly model: IInvokable; + /** + * The variables in the prompt template that can be filled in at runtime. + */ + readonly promptVariables?: string[]; +} + +// ------------------------------------------------------ +// TEXT +// ------------------------------------------------------ +export interface TextPromptVariantProps extends CommonPromptVariantProps { + /** + * Inference configuration for the Text Prompt + */ + readonly inferenceConfiguration?: bedrock.CfnPrompt.PromptModelInferenceConfigurationProperty; + /** + * The text prompt. Variables are used by enclosing its name with double curly braces + * as in `{{variable_name}}`. + */ + readonly promptText: string; +} + +// ------------------------------------------------------ +// CHAT +// ------------------------------------------------------ +export interface ChatPromptVariantProps extends CommonPromptVariantProps { + /** + * Inference configuration for the Chat Prompt. + * Must include at least one User Message. + * The messages should alternate between User and Assistant. + */ + readonly messages: ChatMessage[]; + /** + * Context or instructions for the model to consider before generating a response. + */ + readonly system?: string; + /** + * The configuration with available tools to the model and how it must use them. + */ + readonly toolConfiguration?: ToolConfiguration; + /** + * Inference configuration for the Text Prompt + */ + readonly inferenceConfiguration?: bedrock.CfnPrompt.PromptModelInferenceConfigurationProperty; +} + +export enum ChatMessageRole { + /** + * This role represents the human user in the conversation. Inputs from the + * user guide the conversation and prompt responses from the assistant. + */ + USER = 'user', + /** + * This is the role of the model itself, responding to user inputs based on + * the context set by the system. + */ + ASSISTANT = 'assistant', +} + +export class ChatMessage { + public static user(text: string) { + return new ChatMessage(ChatMessageRole.USER, text); + } + public static assistant(text: string) { + return new ChatMessage(ChatMessageRole.ASSISTANT, text); + } + public readonly role: ChatMessageRole; + public readonly text: string; + + constructor(role: ChatMessageRole, text: string) { + (this.role = role), (this.text = text); + } + /** + * Renders as Cfn Property + * @internal This is an internal core function and should not be called directly. + */ + public __render(): CfnPrompt.MessageProperty { + return { + role: this.role, + content: [ + { + text: this.text, + }, + ], + }; + } +} + +export interface ToolConfiguration { + readonly toolChoice: ToolChoice; + readonly tools: CfnPrompt.ToolProperty[]; +} + +export class ToolChoice { + /** The model must request at least one tool (no text is generated) */ + public static readonly ANY = new ToolChoice({}, undefined, undefined); + /** (Default). The Model automatically decides if a tool should be called or whether to generate text instead.*/ + public static readonly AUTO = new ToolChoice(undefined, {}, undefined); + /** The Model must request the specified tool. Only supported by some models like Anthropic Claude 3 models. */ + public static specificTool(toolName: string) { + return new ToolChoice(undefined, undefined, toolName); + } + public readonly any?: any; + public readonly auto?: any; + public readonly tool?: string; + + constructor(any: any, auto: any, tool?: string) { + (this.any = any), (this.auto = auto), (this.tool = tool); + } + /** + * + * @internal + */ + public __render(): CfnPrompt.ToolChoiceProperty { + return { + any: this.any, + auto: this.auto, + tool: this.tool ? { name: this.tool } : undefined, + }; + } +} +// ------------------------------------------------------ +// AGENT +// ------------------------------------------------------ + +export interface AgentPromptVariantProps extends CommonPromptVariantProps { + /** + * An alias pointing to the agent version to be used. + */ + readonly agentAlias: IAgentAlias; + /** + * The text prompt. Variables are used by enclosing its name with double curly braces + * as in `{{variable_name}}`. + */ + readonly promptText: string; +} + +// ------------------------------------------------------ +// VARIANTS +// ------------------------------------------------------ +/** + * Variants are specific sets of inputs that guide FMs on Amazon Bedrock to + * generate an appropriate response or output for a given task or instruction. + * You can optimize the prompt for specific use cases and models. + */ +export abstract class PromptVariant { + // ------------------------------------------------------ + // Static Methods + // ------------------------------------------------------ + /** + * Static method to create a text template + */ + public static text(props: TextPromptVariantProps): PromptVariant { + return { + name: props.variantName, + templateType: PromptTemplateType.TEXT, + modelId: props.model.invokableArn, + inferenceConfiguration: { + text: { ...props.inferenceConfiguration }, + }, + templateConfiguration: { + text: { + inputVariables: props.promptVariables?.flatMap((variable: string) => { + return { name: variable }; + }), + text: props.promptText, + }, + }, + }; + } + + /** + * Static method to create a chat template. Use this template type when + * the model supports the Converse API or the AnthropicClaude Messages API. + * This allows you to include a System prompt and previous User messages + * and Assistant messages for context. + */ + public static chat(props: ChatPromptVariantProps): PromptVariant { + return { + name: props.variantName, + templateType: PromptTemplateType.CHAT, + modelId: props.model.invokableArn, + inferenceConfiguration: { + text: { ...props.inferenceConfiguration }, + }, + templateConfiguration: { + chat: { + inputVariables: props.promptVariables?.flatMap((variable: string) => { + return { name: variable }; + }), + messages: props.messages?.flatMap(m => m.__render()), + system: props.system ? [{ text: props.system }] : undefined, + toolConfiguration: props.toolConfiguration + ? { + toolChoice: props.toolConfiguration.toolChoice.__render(), + tools: props.toolConfiguration.tools, + } + : undefined, + }, + }, + }; + } + + /** + * Static method to create an agent prompt template. + */ + public static agent(props: AgentPromptVariantProps): PromptVariant { + return { + name: props.variantName, + templateType: PromptTemplateType.TEXT, + genAiResource: { + agent: { + agentIdentifier: props.agentAlias.aliasArn, + }, + }, + templateConfiguration: { + text: { + inputVariables: props.promptVariables?.flatMap((variable: string) => { + return { name: variable }; + }), + text: props.promptText, + }, + }, + }; + } + + // ------------------------------------------------------ + // Properties + // ------------------------------------------------------ + /** + * The name of the prompt variant. + */ + public abstract name: string; + /** + * The type of prompt template. + */ + public abstract templateType: PromptTemplateType; + /** + * The inference configuration. + */ + public abstract inferenceConfiguration?: bedrock.CfnPrompt.PromptInferenceConfigurationProperty; + /** + * The unique identifier of the model with which to run inference on the prompt. + */ + public abstract modelId?: string; + /** + * The template configuration. + */ + public abstract templateConfiguration: bedrock.CfnPrompt.PromptTemplateConfigurationProperty; + /** + * The template configuration. + */ + public abstract genAiResource?: bedrock.CfnPrompt.PromptGenAiResourceProperty; + + // ------------------------------------------------------ + // Constructor + // ------------------------------------------------------ + protected constructor() {} +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts new file mode 100644 index 0000000000000..728c9b50bd49c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { aws_bedrock as bedrock } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import { Prompt } from './prompt'; + + +export interface PromptVersionProps { + /** + * The prompt to use for this version. + */ + readonly prompt: Prompt; + + /** + * The description of the prompt version. + */ + readonly description?: string; +} + +/** + * Creates a version of the prompt. + * + * Use this to create a static snapshot of your prompt that can be deployed + * to production. Versions allow you to easily switch between different + * configurations for your prompt and update your application with the most + * appropriate version for your use-case. + * @resource AWS::Bedrock::PromptVersion + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management-deploy.html + */ +export class PromptVersion extends Construct { + /** + * The Amazon Resource Name (ARN) of the prompt version. + * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345:1" + */ + public readonly versionArn: string; + + /** + * The prompt used by this version. + */ + public readonly prompt: Prompt; + + /** + * The version of the prompt that was created. + */ + public readonly version: string; + + /** + * Instance of prompt version. + */ + private readonly _resource: bedrock.CfnPromptVersion; + + constructor(scope: Construct, id: string, props: PromptVersionProps) { + super(scope, id); + + this.prompt = props.prompt; + + // L1 instantiation + this._resource = new bedrock.CfnPromptVersion(this, id, { + description: props.description, + promptArn: props.prompt.promptArn, + }); + + this.versionArn = this._resource.attrArn; + this.version = this._resource.attrVersion; + + } + +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts new file mode 100644 index 0000000000000..35f3ca91a7cfd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts @@ -0,0 +1,290 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { Arn, ArnFormat, aws_kms as kms, Lazy, aws_bedrock as bedrock, Resource } from 'aws-cdk-lib'; +import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; +import { IKey } from 'aws-cdk-lib/aws-kms'; +import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; +import { Construct } from 'constructs'; +import { PromptVariant } from './prompt-variant'; + +/****************************************************************************** + * COMMON + *****************************************************************************/ +/** + * Represents a Prompt, either created with CDK or imported. + */ +export interface IPrompt { + /** + * The ARN of the prompt. + * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" + */ + readonly promptArn: string; + /** + * The ID of the prompt. + * @example "PROMPT12345" + */ + readonly promptId: string; + /** + * Optional KMS encryption key associated with this prompt. + */ + readonly kmsKey?: IKey; + /** + * The version of the prompt. + * @default - "DRAFT" + */ + promptVersion: string; +} + +/** + * Abstract base class for a Prompt. + * Contains methods and attributes valid for Promtps either created with CDK or imported. + */ +export abstract class PromptBase extends Resource implements IPrompt { + public abstract readonly promptArn: string; + public abstract readonly promptId: string; + public abstract readonly kmsKey?: IKey; + public abstract promptVersion: string; + + /** + * Grant the given identity permissions to get the prompt. + */ + public grantGet(grantee: IGrantable): Grant { + return Grant.addToPrincipal({ + grantee, + resourceArns: [this.promptArn], + actions: ['bedrock:GetPrompt'], + scope: this, + }); + } +} + +/****************************************************************************** + * PROPS FOR NEW CONSTRUCT + *****************************************************************************/ + +export interface PromptProps { + /** + * The name of the prompt. + */ + readonly promptName: string; + /** + * A description of what the prompt does. + * @default - No description provided. + */ + readonly description?: string; + /** + * The KMS key that the prompt is encrypted with. + * @default - AWS owned and managed key. + */ + readonly kmsKey?: kms.IKey; + /** + * The Prompt Variant that will be used by default. + * @default - No default variant provided. + */ + readonly defaultVariant?: PromptVariant; + /** + * The variants of your prompt. Variants can use different messages, models, + * or configurations so that you can compare their outputs to decide the best + * variant for your use case. Maximum of 3 variants. + */ + readonly variants?: PromptVariant[]; +} + +/****************************************************************************** + * ATTRS FOR IMPORTED CONSTRUCT + *****************************************************************************/ +export interface PromptAttributes { + /** + * The ARN of the prompt. + * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" + */ + readonly promptArn: string; + /** + * Optional KMS encryption key associated with this prompt. + */ + readonly kmsKey?: IKey; + /** + * The version of the prompt. + * @default - "DRAFT" + */ + readonly promptVersion?: string; +} + +/****************************************************************************** + * NEW CONSTRUCT DEFINITION + *****************************************************************************/ +/** + * Prompts are a specific set of inputs that guide FMs on Amazon Bedrock to + * generate an appropriate response or output for a given task or instruction. + * You can optimize the prompt for specific use cases and models. + * @resource AWS::Bedrock::Prompt + * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management.html + */ +export class Prompt extends Construct implements IPrompt { + // ------------------------------------------------------ + // Import Methods + // ------------------------------------------------------ + public static fromPromptAttributes(scope: Construct, id: string, attrs: PromptAttributes): IPrompt { + const formattedArn = Arn.split(attrs.promptArn, ArnFormat.SLASH_RESOURCE_NAME); + class Import extends PromptBase { + public readonly promptArn = attrs.promptArn; + public readonly promptId = formattedArn.resourceName!; + public readonly promptVersion = attrs.promptVersion ?? 'DRAFT'; + public readonly kmsKey = attrs.kmsKey; + } + + return new Import(scope, id); + } + // ------------------------------------------------------ + // Attributes + // ------------------------------------------------------ + /** + * The name of the prompt. + */ + public readonly promptName: string; + /** + * The KMS key that the prompt is encrypted with. + */ + public readonly kmsKey?: IKey; + /** + * The ARN of the prompt. + * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" + */ + public readonly promptArn: string; + /** + * The ID of the prompt. + * @example "PROMPT12345" + */ + public readonly promptId: string; + /** + * The version of the prompt. + */ + public promptVersion: string; + /** + * The variants of the prompt. + */ + readonly variants: PromptVariant[]; + /** + * The computed hash of the prompt properties. + * @internal + */ + protected readonly _hash: string; + /** + * L1 resource + */ + private readonly _resource: bedrock.CfnPrompt; + + // ------------------------------------------------------ + // Constructor + // ------------------------------------------------------ + constructor(scope: Construct, id: string, props: PromptProps) { + super(scope, id); + // ------------------------------------------------------ + // Set properties or defaults + // ------------------------------------------------------ + this.promptName = props.promptName; + this.kmsKey = props.kmsKey; + this.variants = props.variants ?? []; + + // ------------------------------------------------------ + // Validation + // ------------------------------------------------------ + this.node.addValidation({ validate: () => this.validatePromptName() }); + this.node.addValidation({ validate: () => this.validatePromptVariants() }); + + // ------------------------------------------------------ + // CFN Props - With Lazy support + // ------------------------------------------------------ + let cfnProps: bedrock.CfnPromptProps = { + customerEncryptionKeyArn: this.kmsKey?.keyArn, + defaultVariant: props.defaultVariant?.name, + description: props.description, + name: props.promptName, + variants: Lazy.any({ + produce: () => this.variants, + }), + }; + + // Hash calculation useful for versioning + this._hash = md5hash(JSON.stringify(cfnProps)); + + // ------------------------------------------------------ + // L1 Instantiation + // ------------------------------------------------------ + this._resource = new bedrock.CfnPrompt(this, 'Prompt', cfnProps); + + this.promptArn = this._resource.attrArn; + this.promptId = this._resource.attrId; + this.promptVersion = this._resource.attrVersion; + } + + // ------------------------------------------------------ + // Validation Methods + // ------------------------------------------------------ + /** + * Validates whether the prompt name is valid according to the specification. + * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-prompt.html#cfn-bedrock-prompt-name + */ + private validatePromptName() { + const errors: string[] = []; + + const matchesPattern = /^([0-9a-zA-Z][_-]?){1,100}$/.test(this.promptName); + if (!matchesPattern) { + errors.push( + 'Valid characters are a-z, A-Z, 0-9, _ (underscore) and - (hyphen). And must not begin with a hyphen', + ); + } + if (errors.length > 0) { + errors.unshift(`Invalid prompt name (value: ${this.promptName})`); + } + return errors; + } + + /** + * Validates whether the number of prompt variants is respected. + */ + private validatePromptVariants() { + const MAX_VARIANTS = 3; + const errors: string[] = []; + if (this.variants.length > MAX_VARIANTS) { + errors.push( + `Error: Too many variants specified. The maximum allowed is ${MAX_VARIANTS}, but you have provided ${this.variants.length} variants.`, + ); + } + return errors; + } + + // ------------------------------------------------------ + // Helper Methods + // ------------------------------------------------------ + /** + * Creates a prompt version, a static snapshot of your prompt that can be + * deployed to production. + */ + public createVersion(description?: string): string { + const version = new bedrock.CfnPromptVersion(this, `PromptVersion-${this._hash}`, { + promptArn: this.promptArn, + description, + }); + this.promptVersion = version.attrVersion; + return this.promptVersion; + } + + /** + * Adds a prompt variant. + */ + public addVariant(variant: PromptVariant) { + this.variants.push(variant); + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/jest.config.js b/packages/@aws-cdk/aws-bedrock-alpha/jest.config.js new file mode 100644 index 0000000000000..3a2fd93a1228a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('@aws-cdk/cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts new file mode 100644 index 0000000000000..a02fd8b44ba56 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts @@ -0,0 +1,7 @@ +// The index.ts files contains a list of files we want to +// include as part of the public API of this module. +// In general, all files including L2 classes will be listed here, +// while all files including only utility functions will be omitted from here. + +export * from '../bedrock'; + diff --git a/packages/@aws-cdk/aws-bedrock-alpha/package.json b/packages/@aws-cdk/aws-bedrock-alpha/package.json new file mode 100644 index 0000000000000..89f23c43c5386 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/package.json @@ -0,0 +1,92 @@ +{ + "name": "@aws-cdk/aws-bedrock-alpha", + "version": "0.0.1", + "description": "An example CDK Construct Library for aws-bedrock-alpha", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "targets": { + "java": { + "package": "software.amazon.awscdk.services.aws.bedrock.alpha", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "aws-bedrock-alpha" + } + }, + "dotnet": { + "namespace": "Amazon.CDK.Aws.Bedrock.Alpha", + "packageId": "Amazon.CDK.Aws.Bedrock.Alpha", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png" + }, + "python": { + "distName": "aws-cdk.aws-bedrock-alpha", + "module": "aws_cdk.aws_bedrock_alpha", + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 2" + ] + }, + "go": { + "moduleName": "github.com/aws/aws-cdk-go", + "packageName": "awsbedrockalpha" + } + }, + "projectReferences": true, + "metadata": { + "jsii": { + "rosetta": { + "strict": true + } + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-bedrock-alpha" + }, + "scripts": { + "build": "tsc", + "watch": "tsc-w", + "test": "jest", + "build+test": "yarn build && yarn test", + "rosetta:extract": "yarn --silent jsii-rosetta extract", + "build+extract": "yarn build && yarn rosetta:extract", + "build+test+extract": "yarn build+test && yarn rosetta:extract" + }, + "keywords": [ + "aws", + "cdk", + "example", + "construct", + "library" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "aws-cdk-lib": "^2.187.0", + "@types/jest": "^29.5.14", + "jest": "^29.7.0" + }, + "homepage": "https://github.com/aws/aws-cdk", + "peerDependencies": { + "aws-cdk-lib": "^2.187.0", + "constructs": "^10.0.0" + }, + "separate-module": false, + "engines": { + "node": ">= 14.15.0" + }, + "stability": "experimental", + "maturity": "experimental", + "cdk-build": { + "env": { + "AWSLINT_BASE_CONSTRUCT": true + } + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture new file mode 100644 index 0000000000000..e8deb6060d76d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture @@ -0,0 +1,11 @@ +// Fixture with packages imported, but nothing else +import { Construct } from 'constructs'; +import { Stack } from '@aws-cdk/core'; + +class Fixture extends Stack { + constructor(scope: Construct, id: string) { + super(scope, id); + + /// here + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json new file mode 100644 index 0000000000000..128b8a70cf628 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json @@ -0,0 +1,19 @@ +{ + "version": "20.0.0", + "files": { + "30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5": { + "source": { + "path": "ExampleResourceIntegTestStack.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json new file mode 100644 index 0000000000000..568740d0f387c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json @@ -0,0 +1,70 @@ +{ + "Resources": { + "ExampleResourceWaitConditionHandle9C53A8D3": { + "Type": "AWS::CloudFormation::WaitConditionHandle" + }, + "ExampleResourceAC53F4AE": { + "Type": "AWS::CloudFormation::WaitCondition", + "Properties": { + "Count": 0, + "Handle": { + "Ref": "ExampleResourceWaitConditionHandle9C53A8D3" + }, + "Timeout": "10" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "ExampleResourceRole0533653E": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "cloudformation.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out new file mode 100644 index 0000000000000..588d7b269d34f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"20.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json new file mode 100644 index 0000000000000..662f6bea69dc7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json @@ -0,0 +1,14 @@ +{ + "version": "20.0.0", + "testCases": { + "integ.example-resource": { + "stacks": [ + "ExampleResourceIntegTestStack" + ], + "diffAssets": false, + "stackUpdateWorkflow": true + } + }, + "synthContext": {}, + "enableLookups": false +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json new file mode 100644 index 0000000000000..fe46451dac688 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json @@ -0,0 +1,76 @@ +{ + "version": "20.0.0", + "artifacts": { + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + }, + "ExampleResourceIntegTestStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "ExampleResourceIntegTestStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "ExampleResourceIntegTestStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "ExampleResourceIntegTestStack.template.json", + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "ExampleResourceIntegTestStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "ExampleResourceIntegTestStack.assets" + ], + "metadata": { + "/ExampleResourceIntegTestStack/ExampleResource/WaitConditionHandle": [ + { + "type": "aws:cdk:logicalId", + "data": "ExampleResourceWaitConditionHandle9C53A8D3" + } + ], + "/ExampleResourceIntegTestStack/ExampleResource/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ExampleResourceAC53F4AE" + } + ], + "/ExampleResourceIntegTestStack/ExampleResource/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ExampleResourceRole0533653E" + } + ], + "/ExampleResourceIntegTestStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/ExampleResourceIntegTestStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "ExampleResourceIntegTestStack" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json new file mode 100644 index 0000000000000..6be8c802687f3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json @@ -0,0 +1,106 @@ +{ + "version": "tree-0.1", + "tree": { + "id": "App", + "path": "", + "children": { + "Tree": { + "id": "Tree", + "path": "Tree", + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.1.85" + } + }, + "ExampleResourceIntegTestStack": { + "id": "ExampleResourceIntegTestStack", + "path": "ExampleResourceIntegTestStack", + "children": { + "ExampleResource": { + "id": "ExampleResource", + "path": "ExampleResourceIntegTestStack/ExampleResource", + "children": { + "WaitConditionHandle": { + "id": "WaitConditionHandle", + "path": "ExampleResourceIntegTestStack/ExampleResource/WaitConditionHandle", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitConditionHandle", + "aws:cdk:cloudformation:props": {} + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.1.85" + } + }, + "Resource": { + "id": "Resource", + "path": "ExampleResourceIntegTestStack/ExampleResource/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitCondition", + "aws:cdk:cloudformation:props": { + "count": 0, + "handle": { + "Ref": "ExampleResourceWaitConditionHandle9C53A8D3" + }, + "timeout": "10" + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.1.85" + } + }, + "Role": { + "id": "Role", + "path": "ExampleResourceIntegTestStack/ExampleResource/Role", + "children": { + "Resource": { + "id": "Resource", + "path": "ExampleResourceIntegTestStack/ExampleResource/Role/Resource", + "attributes": { + "aws:cdk:cloudformation:type": "AWS::IAM::Role", + "aws:cdk:cloudformation:props": { + "assumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "cloudformation.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-iam.CfnRole", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/aws-iam.Role", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "@aws-cdk/example-construct-library.ExampleResource", + "version": "0.0.0" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.1.85" + } + } + }, + "constructInfo": { + "fqn": "constructs.Construct", + "version": "10.1.85" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json b/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json new file mode 100644 index 0000000000000..f61cc798beda3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + "declarationMap": false, + "inlineSourceMap": true, + "inlineSources": true, + "alwaysStrict": true, + "declaration": true, + "experimentalDecorators": true, + "incremental": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "noEmitOnError": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": false, + "target": "es2020", + "composite": true, + "tsBuildInfoFile": "tsconfig.tsbuildinfo" + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "node_modules" + ], + "references": [ + { + "path": "../../aws-cdk-lib" + }, + { + "path": "../../../tools/@aws-cdk/cdk-build-tools" + }, + { + "path": "../../../tools/@aws-cdk/pkglint" + } + ], + "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" +} From 60f6696fadd16403d812da569fa66e7397c187c3 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Tue, 8 Apr 2025 13:30:32 -0400 Subject: [PATCH 02/39] feat(bedrockl2):fixed naming issue --- .../knowledge-bases/vector-knowledge-base.ts | 29 ++++++- .../opensearch-collection.ts | 80 +++++++++++++++---- .../opensearch-vector-index.ts | 48 +++++++++-- 3 files changed, 131 insertions(+), 26 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts index 7a4d20246835e..76c169ae339e3 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts @@ -457,6 +457,26 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { this.handleOpenSearchDefaultVectorCollection()); } + // Grant necessary permissions for vector operations + this.role.addToPrincipalPolicy( + new iam.PolicyStatement({ + actions: [ + 'aoss:CreateIndex', + 'aoss:DeleteIndex', + 'aoss:UpdateIndex', + 'aoss:DescribeIndex', + 'aoss:ReadDocument', + 'aoss:WriteDocument', + 'aoss:DescribeCollectionItems', + ], + resources: [ + this.vectorStore.collectionArn, + `${this.vectorStore.collectionArn}/index/*`, + `${this.vectorStore.collectionArn}/index/${indexName}` + ], + }) + ); + // perform this validation after the vector store is handled since if the user // doesn't provide one, the method above will create it validateVectorType(this.vectorStore, vectorType); @@ -471,20 +491,23 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { this.vectorIndex = new VectorIndex(this, 'KBIndex', { collection: this.vectorStore as VectorCollection, indexName, + role: this.role, settings: { knn: true, }, mappings: { properties: { - vectorField: { + [vectorField]: { type: OpensearchFieldType.KNN_VECTOR, dimension: embeddingsModel.vectorDimensions!, - //data_type: props.vectorType === VectorType.BINARY ? 'Binary' : 'float', <- This is missing in L1 CfnIndex props method: { engine: EngineType.FAISS, spaceType: props.vectorType === VectorType.BINARY ? SpaceType.HAMMING : SpaceType.L2, name: AlgorithmNameType.HNSW, - parameters: {}, + parameters: { + efConstruction: 512, + m: 16 + }, }, }, AMAZON_BEDROCK_TEXT_CHUNK: { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts index 9025e205a665e..f7be5aa501b9b 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts @@ -317,7 +317,8 @@ export class VectorCollection extends VectorCollectionBase { }); this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'ImportedDataAccessPolicy', { - name: this.generatePhysicalName() + '-DataAccessPolicy-agent', + name: (this.physicalName.length > 32 ? this.physicalName.substring(0, 29) + 'dpa' : + this.physicalName + '-dpagent'), type: 'data', policy: '[]', }); @@ -352,6 +353,7 @@ export class VectorCollection extends VectorCollectionBase { // Ensure collection name stays within 32 chars while maintaining uniqueness const physicalName = this.generatePhysicalName(); + this.collectionName = props?.collectionName ?? (physicalName.length > 22 ? physicalName.substring(0, 22) + '-vec' : // truncate long names @@ -360,7 +362,10 @@ export class VectorCollection extends VectorCollectionBase { this.standbyReplicas = props?.standbyReplicas ?? VectorCollectionStandbyReplicas.ENABLED; this.collectionType = props?.collectionType ?? VectorCollectionType.VECTORSEARCH; - const encryptionPolicyName = this.generatePhysicalName() + '-EncryptionPolicy'; + const encryptionPolicyName = (physicalName.length > 32 ? + physicalName.substring(0, 30) + 'ep' : + physicalName + '-encryptpolicy'); + const encryptionPolicy = new oss.CfnSecurityPolicy(this, 'EncryptionPolicy', { name: encryptionPolicyName, type: 'encryption', @@ -375,7 +380,10 @@ export class VectorCollection extends VectorCollectionBase { }), }); - const networkPolicyName = this.generatePhysicalName() + '-NetworkPolicy'; + const networkPolicyName = (physicalName.length > 32 ? + physicalName.substring(0, 30) + 'np' : + physicalName + '-networkpolicy'); + const networkPolicy = new oss.CfnSecurityPolicy(this, 'NetworkPolicy', { name: networkPolicyName, @@ -421,6 +429,15 @@ export class VectorCollection extends VectorCollectionBase { effect: iam.Effect.ALLOW, actions: [ 'aoss:APIAccessAll', + 'aoss:CreateIndex', + 'aoss:DeleteIndex', + 'aoss:UpdateIndex', + 'aoss:DescribeIndex', + 'aoss:ReadDocument', + 'aoss:WriteDocument', + 'aoss:DescribeCollectionItems', + 'aoss:CreateCollectionItems', + 'aoss:UpdateCollectionItems' ], resources: [this._resource.attrArn], }), @@ -432,24 +449,51 @@ export class VectorCollection extends VectorCollectionBase { this._resource.node.addDependency(encryptionPolicy); this._resource.node.addDependency(networkPolicy); - const isDataAccessPolicyNotEmpty = new cdk.CfnCondition(this, 'IsDataAccessPolicyNotEmpty', { - expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(0, cdk.Lazy.number({ - produce: () => this.dataAccessPolicyDocument.length, - }))), - }); - - const dataAccessPolicyName = this.generatePhysicalName() + '-DataAccessPolicy'; - + + const dataAccessPolicyName = (physicalName.length > 32 ? physicalName.substring(0, 30) + 'dp' : + physicalName + 'dataaccesspolicy'); + this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'DataAccessPolicy', { name: dataAccessPolicyName, type: 'data', policy: cdk.Lazy.string({ - produce: () => JSON.stringify(this.dataAccessPolicyDocument), + produce: () => JSON.stringify(this.dataAccessPolicyDocument.length > 0 ? + this.dataAccessPolicyDocument : + [{ + Rules: [ + { + Resource: [`collection/${this.collectionName}`], + Permission: [ + 'aoss:DescribeCollectionItems', + 'aoss:CreateCollectionItems', + 'aoss:UpdateCollectionItems', + ], + ResourceType: 'collection', + }, + { + Resource: [ + `index/${this.collectionName}/*`, + `index/${this.collectionName}/bedrock-knowledge-base-default-index`, + `index/${this.collectionName}/${this.collectionName}-*` + ], + Permission: [ + 'aoss:UpdateIndex', + 'aoss:DescribeIndex', + 'aoss:ReadDocument', + 'aoss:WriteDocument', + 'aoss:CreateIndex', + 'aoss:DeleteIndex', + ], + ResourceType: 'index', + } + ], + Principal: ['*'], + Description: 'Default policy', + }] + ), }), }); - this.dataAccessPolicy.cfnOptions.condition = isDataAccessPolicyNotEmpty; - this.node.addValidation({ validate: () => { const errors: string[] = []; @@ -475,6 +519,7 @@ export class VectorCollection extends VectorCollectionBase { * @param grantee The role to grant access to. */ grantDataAccess(grantee: iam.IRole) { + // Update data access policy this.dataAccessPolicyDocument.push({ Rules: [ { @@ -487,7 +532,10 @@ export class VectorCollection extends VectorCollectionBase { ResourceType: 'collection', }, { - Resource: [`index/${this.collectionName}/*`], + Resource: [ + `index/${this.collectionName}/*`, + `index/${this.collectionName}/bedrock-knowledge-base-default-index` + ], Permission: [ 'aoss:UpdateIndex', 'aoss:DescribeIndex', @@ -503,6 +551,8 @@ export class VectorCollection extends VectorCollectionBase { ], Description: '', }); + + // Add IAM policy grantee.addManagedPolicy(this.aossPolicy); } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts index 8f08db1966953..dba5ec49429b1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts @@ -15,6 +15,7 @@ import * as cdk from 'aws-cdk-lib'; import * as oss from 'aws-cdk-lib/aws-opensearchserverless'; import { Construct } from 'constructs'; import { VectorCollection } from './opensearch-collection'; +import * as iam from 'aws-cdk-lib/aws-iam'; /** * The field data type. Must be a valid OpenSearch field type. @@ -166,10 +167,15 @@ export interface VectorIndexProps { * The metadata management fields. */ readonly mappings?: MappingsProperty; - /** + /* * The settings for the index. */ readonly settings?: IndexSettings; + + /* + * The role for the vector index. + */ + readonly role: iam.IRole; } export interface VectorIndexAttributes { @@ -195,6 +201,7 @@ export interface IVectorIndex extends cdk.IResource { * The name of the index */ readonly indexName: string; + } /** @@ -203,6 +210,7 @@ export interface IVectorIndex extends cdk.IResource { abstract class VectorIndexBase extends cdk.Resource implements IVectorIndex { public abstract readonly collectionEndpoint: string; public abstract readonly indexName: string; + public principalArn: string | undefined public static fromVectorIndexAttributes( scope: Construct, @@ -215,6 +223,7 @@ abstract class VectorIndexBase extends cdk.Resource implements IVectorIndex { } return new Import(scope, constructId); } + } /** @@ -235,6 +244,8 @@ export class VectorIndex extends VectorIndexBase { */ private readonly _resource: oss.CfnIndex; + + constructor(scope: Construct, id: string, props: VectorIndexProps) { super(scope, id); @@ -243,8 +254,16 @@ export class VectorIndex extends VectorIndexBase { // Set attributes or defaults // ------------------------------------------------------ this.indexName = props.indexName; + const physicalName = this.generatePhysicalName(); - const manageIndexPolicyName = this.generatePhysicalName() + '-ManageIndexPolicy'; + // Grant data access to the role first + props.collection.grantDataAccess(props.role); + + + const manageIndexPolicyName = physicalName.length > 29 ? + physicalName.substring(0, 29) + 'vip' : // vector-index-policy shortened to vip + physicalName + '-vip'; + const manageIndexPolicy = new oss.CfnAccessPolicy( this, 'ManageIndexPolicy', @@ -255,12 +274,17 @@ export class VectorIndex extends VectorIndexBase { { Rules: [ { - Resource: [`index/${props.collection.collectionName}/*`], + Resource: [ + `index/${props.collection.collectionName}/*`, + `index/${props.collection.collectionName}/${props.indexName}` + ], Permission: [ 'aoss:DescribeIndex', 'aoss:CreateIndex', 'aoss:DeleteIndex', 'aoss:UpdateIndex', + 'aoss:ReadDocument', + 'aoss:WriteDocument' ], ResourceType: 'index', }, @@ -270,27 +294,35 @@ export class VectorIndex extends VectorIndexBase { ResourceType: 'collection', }, ], - Principal: ['*'], + Principal: [props.role.roleArn], Description: '', }, ]), }, ); + // ------------------------------------------------------ // L1 Instantiation // ------------------------------------------------------ + + // Add explicit dependency on collection's endpoint + const collectionEndpoint = cdk.Token.asString(props.collection.collectionEndpoint); + this._resource = new oss.CfnIndex(this, 'VectorIndex', { indexName: props.indexName, - collectionEndpoint: props.collection.collectionEndpoint, + collectionEndpoint: collectionEndpoint, mappings: this._renderMappings(props.mappings), settings: this._renderIndexSettings(props.settings), }); this.collectionEndpoint = this._resource.collectionEndpoint; - this._resource.addDependency(manageIndexPolicy); - this._resource.addDependency(props.collection.dataAccessPolicy); + // Add explicit dependencies in correct order + this._resource.node.addDependency(manageIndexPolicy); + this._resource.node.addDependency(props.collection); + this._resource.node.addDependency(props.collection.dataAccessPolicy); + } /** @@ -323,4 +355,4 @@ export class VectorIndex extends VectorIndexBase { properties: convertedProps, }; } -} \ No newline at end of file +} From 228f814607fb12c0c81a629d5b0dd8b54b79c6a1 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Tue, 8 Apr 2025 18:51:58 -0400 Subject: [PATCH 03/39] feat(bedrockl2):added cfn role for creating vector index --- .../knowledge-bases/vector-knowledge-base.ts | 65 +++++++++---------- .../opensearch-collection.ts | 52 ++------------- .../opensearch-vector-index.ts | 23 ++++++- 3 files changed, 58 insertions(+), 82 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts index 76c169ae339e3..23105d00b7a68 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { ArnFormat, aws_bedrock as bedrock, Stack } from 'aws-cdk-lib'; +import { ArnFormat, aws_bedrock as bedrock, CfnOutput, Stack } from 'aws-cdk-lib'; import * as iam from 'aws-cdk-lib/aws-iam'; import { Construct } from 'constructs'; import { @@ -422,21 +422,28 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { const roleName = this.generatePhysicalName() + 'knowledgebaserole'; this.role = new iam.Role(this, 'Role', { roleName: roleName, - assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com', { - conditions: { - StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, - ArnLike: { - 'aws:SourceArn': Stack.of(this).formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: '*', - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }), + assumedBy: new iam.CompositePrincipal( + new iam.ServicePrincipal('bedrock.amazonaws.com', { + conditions: { + StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, + ArnLike: { + 'aws:SourceArn': Stack.of(this).formatArn({ + service: 'bedrock', + resource: 'knowledge-base', + resourceName: '*', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }), + }, }, - }, - }), + }), + new iam.ServicePrincipal('aoss.amazonaws.com'), + new iam.ServicePrincipal('cloudformation.amazonaws.com'), + + ), }); + + // Add required permissions for the embeddings model this.role.addToPrincipalPolicy( new iam.PolicyStatement({ actions: ['bedrock:InvokeModel'], @@ -457,26 +464,6 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { this.handleOpenSearchDefaultVectorCollection()); } - // Grant necessary permissions for vector operations - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: [ - 'aoss:CreateIndex', - 'aoss:DeleteIndex', - 'aoss:UpdateIndex', - 'aoss:DescribeIndex', - 'aoss:ReadDocument', - 'aoss:WriteDocument', - 'aoss:DescribeCollectionItems', - ], - resources: [ - this.vectorStore.collectionArn, - `${this.vectorStore.collectionArn}/index/*`, - `${this.vectorStore.collectionArn}/index/${indexName}` - ], - }) - ); - // perform this validation after the vector store is handled since if the user // doesn't provide one, the method above will create it validateVectorType(this.vectorStore, vectorType); @@ -488,6 +475,10 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { */ if (this.vectorStoreType === VectorStoreType.OPENSEARCH_SERVERLESS) { if (!props.vectorIndex) { + // Create vector index with the knowledge base role + new CfnOutput(this, 'CreatingIndexWithRole', { + value: `Creating index with role: ${this.role.roleArn} (${this.role.roleName})`, + }); this.vectorIndex = new VectorIndex(this, 'KBIndex', { collection: this.vectorStore as VectorCollection, indexName, @@ -637,6 +628,9 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { vectorStoreType: VectorStoreType; } { const vectorStore = props.vectorStore as VectorCollection; + new CfnOutput(this, 'GrantingCollectionAccess', { + value: `Granting collection access to role: ${this.role.roleName}`, + }); vectorStore.grantDataAccess(this.role); return { vectorStore: vectorStore, @@ -655,7 +649,12 @@ export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { vectorStoreType: VectorStoreType; } { const vectorStore = new VectorCollection(this, 'KBVectors'); + // Grant access to the CloudFormation role (which is this.role) + new CfnOutput(this, 'HandlingDefaultCollection', { + value: 'Creating default OpenSearch vector collection', + }); vectorStore.grantDataAccess(this.role); + return { vectorStore: vectorStore, vectorStoreType: VectorStoreType.OPENSEARCH_SERVERLESS, diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts index f7be5aa501b9b..ac60e52063693 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts @@ -428,17 +428,7 @@ export class VectorCollection extends VectorCollectionBase { new iam.PolicyStatement({ effect: iam.Effect.ALLOW, actions: [ - 'aoss:APIAccessAll', - 'aoss:CreateIndex', - 'aoss:DeleteIndex', - 'aoss:UpdateIndex', - 'aoss:DescribeIndex', - 'aoss:ReadDocument', - 'aoss:WriteDocument', - 'aoss:DescribeCollectionItems', - 'aoss:CreateCollectionItems', - 'aoss:UpdateCollectionItems' - ], + 'aoss:APIAccessAll'], resources: [this._resource.attrArn], }), ], @@ -457,40 +447,7 @@ export class VectorCollection extends VectorCollectionBase { name: dataAccessPolicyName, type: 'data', policy: cdk.Lazy.string({ - produce: () => JSON.stringify(this.dataAccessPolicyDocument.length > 0 ? - this.dataAccessPolicyDocument : - [{ - Rules: [ - { - Resource: [`collection/${this.collectionName}`], - Permission: [ - 'aoss:DescribeCollectionItems', - 'aoss:CreateCollectionItems', - 'aoss:UpdateCollectionItems', - ], - ResourceType: 'collection', - }, - { - Resource: [ - `index/${this.collectionName}/*`, - `index/${this.collectionName}/bedrock-knowledge-base-default-index`, - `index/${this.collectionName}/${this.collectionName}-*` - ], - Permission: [ - 'aoss:UpdateIndex', - 'aoss:DescribeIndex', - 'aoss:ReadDocument', - 'aoss:WriteDocument', - 'aoss:CreateIndex', - 'aoss:DeleteIndex', - ], - ResourceType: 'index', - } - ], - Principal: ['*'], - Description: 'Default policy', - }] - ), + produce: () => JSON.stringify(this.dataAccessPolicyDocument), }), }); @@ -537,22 +494,25 @@ export class VectorCollection extends VectorCollectionBase { `index/${this.collectionName}/bedrock-knowledge-base-default-index` ], Permission: [ + 'aoss:CreateIndex', 'aoss:UpdateIndex', 'aoss:DescribeIndex', 'aoss:ReadDocument', 'aoss:WriteDocument', - 'aoss:CreateIndex', ], ResourceType: 'index', }, ], Principal: [ grantee.roleArn, + `arn:aws:sts::${cdk.Stack.of(this).account}:assumed-role/cdk-${cdk.Stack.of(this).synthesizer.bootstrapQualifier}-cfn-exec-role-${cdk.Stack.of(this).account}-${cdk.Stack.of(this).region}/AWSCloudFormation` + ], Description: '', }); // Add IAM policy grantee.addManagedPolicy(this.aossPolicy); + } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts index dba5ec49429b1..e4e11eb57cfdc 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts @@ -257,7 +257,14 @@ export class VectorIndex extends VectorIndexBase { const physicalName = this.generatePhysicalName(); // Grant data access to the role first - props.collection.grantDataAccess(props.role); + // props.collection.grantDataAccess(props.role); + props.role.addManagedPolicy(props.collection.aossPolicy) + + // logging, cfnoutput the role name + new cdk.CfnOutput(this, 'RoleName', { + value: props.role.roleName, + }); + const manageIndexPolicyName = physicalName.length > 29 ? @@ -294,14 +301,20 @@ export class VectorIndex extends VectorIndexBase { ResourceType: 'collection', }, ], - Principal: [props.role.roleArn], + Principal: [ + props.role.roleArn, + `arn:aws:sts::${cdk.Stack.of(this).account}:assumed-role/cdk-${cdk.Stack.of(this).synthesizer.bootstrapQualifier}-cfn-exec-role-${cdk.Stack.of(this).account}-${cdk.Stack.of(this).region}/AWSCloudFormation` + + ], Description: '', }, ]), }, ); - + new cdk.CfnOutput(this, 'PoliciesCreated', { + value: 'All policies created, now creating index', + }); // ------------------------------------------------------ // L1 Instantiation // ------------------------------------------------------ @@ -316,6 +329,10 @@ export class VectorIndex extends VectorIndexBase { settings: this._renderIndexSettings(props.settings), }); + new cdk.CfnOutput(this, 'IndexCreated', { + value: 'Index created successfully', + }); + this.collectionEndpoint = this._resource.collectionEndpoint; // Add explicit dependencies in correct order From 21392917476770b6e7dc5b9558a045df93437e37 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 10 Apr 2025 20:46:35 -0400 Subject: [PATCH 04/39] feat(bedrockl2): removed other bedrpck features pushing only agent with alias --- package.json | 3 +- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 292 +++---- .../aws-bedrock-alpha/bedrock/agents/utils.ts | 207 +++++ .../bedrock/data-sources/base-data-source.ts | 263 ------ .../bedrock/data-sources/chunking.ts | 184 ---- .../data-sources/confluence-data-source.ts | 239 ------ .../data-sources/context-enrichment.ts | 92 -- .../data-sources/custom-data-source.ts | 111 --- .../data-sources/custom-transformation.ts | 117 --- .../data-sources/default-parsing-prompt.ts | 67 -- .../bedrock/data-sources/parsing.ts | 115 --- .../bedrock/data-sources/s3-data-source.ts | 131 --- .../data-sources/salesforce-data-source.ts | 213 ----- .../data-sources/sharepoint-data-source.ts | 233 ------ .../data-sources/web-crawler-data-source.ts | 217 ----- .../bedrock/guardrails/guardrail-filters.ts | 517 ------------ .../bedrock/guardrails/guardrail-version.ts | 148 ---- .../bedrock/guardrails/guardrails.ts | 791 ------------------ .../aws-bedrock-alpha/bedrock/index.ts | 52 -- .../application-inference-profile.ts | 209 ----- .../bedrock/inference-profiles/common.ts | 88 -- .../cross-region-inference-profile.ts | 159 ---- .../default-prompt-routers.ts | 125 --- .../knowledge-bases/kendra-knowledge-base.ts | 199 ----- .../kendra-knowledgebase/gen-ai-index.ts | 299 ------- .../kendra-knowledgebase/index.ts | 14 - .../bedrock/knowledge-bases/knowledge-base.ts | 224 ----- .../knowledge-bases/vector-knowledge-base.ts | 787 ----------------- .../analysis-plugins.ts | 82 -- .../vectorstore-knowledgebases/index.ts | 16 - .../opensearch-collection.ts | 518 ------------ .../opensearch-vector-index.ts | 375 --------- .../bedrock/prompts/prompt-variant.ts | 294 ------- .../bedrock/prompts/prompt-version.ts | 79 -- .../bedrock/prompts/prompt.ts | 290 ------- .../test/agents/agent.test.ts | 492 +++++++++++ .../BAgentIntegTestStack.assets.json | 21 + .../BAgentIntegTestStack.template.json | 154 ++++ ...faultTestDeployAssertE6F8548D.assets.json} | 9 +- ...ultTestDeployAssertE6F8548D.template.json} | 34 - .../agents/integ.agent.js.snapshot/cdk.out | 1 + .../agents/integ.agent.js.snapshot/integ.json | 12 + .../integ.agent.js.snapshot/manifest.json | 198 +++++ .../agents/integ.agent.js.snapshot/tree.json | 1 + .../test/agents/integ.agent.ts | 42 + .../cdk.out | 1 - .../integ.json | 14 - .../manifest.json | 76 -- .../tree.json | 106 --- 49 files changed, 1272 insertions(+), 7639 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json rename packages/@aws-cdk/aws-bedrock-alpha/test/{integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json => agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json} (53%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json => agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json} (50%) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json diff --git a/package.json b/package.json index 6a6f512d7d497..6132d14184fb0 100644 --- a/package.json +++ b/package.json @@ -179,5 +179,6 @@ }, "dependencies": { "string-width": "^4.2.3" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 2b15265c9276f..aad838ae05cd1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -11,20 +11,22 @@ * and limitations under the License. */ -import { Arn, ArnFormat, Duration, IResource, Lazy, Resource, Stack } from 'aws-cdk-lib'; +import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token } from 'aws-cdk-lib'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; +import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; +import * as events from 'aws-cdk-lib/aws-events'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as kms from 'aws-cdk-lib/aws-kms'; -import { Construct } from 'constructs'; +import { Construct, IConstruct } from 'constructs'; // Internal Libs import { AgentActionGroup } from './action-group'; import { AgentAlias, IAgentAlias } from './agent-alias'; import { AgentCollaborator, AgentCollaboratorType } from './agent-collaborator'; import { PromptOverrideConfiguration } from './prompt-override'; import * as validation from './validation-helpers'; -import { IGuardrail } from '../guardrails/guardrails'; -import { IKnowledgeBase } from '../knowledge-bases/knowledge-base'; -import { IInvokable } from '../models'; +//import { IGuardrail } from '../guardrails/guardrails'; +//import { IKnowledgeBase } from '../knowledge-bases/knowledge-base'; +import { IInvokable } from '.././models'; import { Memory } from './memory'; import { OrchestrationType, CustomOrchestration } from './orchestration'; @@ -34,7 +36,7 @@ import { OrchestrationType, CustomOrchestration } from './orchestration'; /** * Represents an Agent, either created with CDK or imported. */ -export interface IAgent extends IResource { +export interface IAgent extends IResource, iam.IGrantable { /** * The ARN of the agent. * @example "arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO" @@ -59,6 +61,21 @@ export interface IAgent extends IResource { * When this agent was last updated. */ readonly lastUpdated?: string; + + /** + * Grant invoke permissions on this agent to an IAM principal. + */ + grantInvoke(grantee: iam.IGrantable): iam.Grant; + + /** + * Defines a CloudWatch event rule triggered by agent events. + */ + onEvent(id: string, options?: events.OnEventOptions): events.Rule; + + /** + * Return the CloudWatch metric for agent count. + */ + metricCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric; } /****************************************************************************** * ABSTRACT BASE CLASS @@ -74,6 +91,38 @@ export abstract class AgentBase extends Resource implements IAgent { public abstract readonly kmsKey?: kms.IKey; public abstract readonly lastUpdated?: string; public abstract agentVersion: string; + public abstract readonly grantPrincipal: iam.IPrincipal; + + public grantInvoke(grantee: iam.IGrantable): iam.Grant { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeAgent'], + resourceArns: [this.agentArn], + }); + } + + public onEvent(id: string, options: events.OnEventOptions = {}): events.Rule { + const rule = new events.Rule(this, id, options); + rule.addTarget(options.target); + rule.addEventPattern({ + source: ['aws.bedrock'], + detail: { + 'agent-id': [this.agentId], + }, + }); + return rule; + } + + public metricCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return new cloudwatch.Metric({ + namespace: 'AWS/Bedrock', + metricName: 'Invocations', + dimensionsMap: { + AgentId: this.agentId, + }, + ...props, + }).attachTo(this); + } } /****************************************************************************** @@ -133,18 +182,11 @@ export interface AgentProps { * @default - No description is provided. */ readonly description?: string; - /** - * The KnowledgeBases associated with the agent. - */ - readonly knowledgeBases?: IKnowledgeBase[]; /** * The Action Groups associated with the agent. */ readonly actionGroups?: AgentActionGroup[]; - /** - * The guardrail that will be associated with the agent. - */ - readonly guardrail?: IGuardrail; + /** * Overrides some prompt templates in different parts of an agent sequence configuration. * @@ -257,6 +299,7 @@ export class Agent extends AgentBase { public readonly kmsKey = attrs.kmsKeyArn ? kms.Key.fromKeyArn(scope, `${id}Key`, attrs.kmsKeyArn) : undefined; public readonly lastUpdated = attrs.lastUpdated; public readonly agentVersion = attrs.agentVersion ?? 'DRAFT'; + public readonly grantPrincipal = this.role; } // Return new Agent @@ -289,6 +332,10 @@ export class Agent extends AgentBase { * When this agent was last updated. */ public readonly lastUpdated?: string; + /** + * The principal to grant permissions to + */ + public readonly grantPrincipal: iam.IPrincipal; // ------------------------------------------------------ // CDK-only attributes // ------------------------------------------------------ @@ -371,14 +418,6 @@ export class Agent extends AgentBase { * The action groups associated with the agent. */ public actionGroups: AgentActionGroup[]; - /** - * The KnowledgeBases associated with the agent. - */ - public knowledgeBases: IKnowledgeBase[]; - /** - * The guardrail associated with the agent. - */ - public guardrail?: IGuardrail; // ------------------------------------------------------ // Internal Only // ------------------------------------------------------ @@ -387,17 +426,30 @@ export class Agent extends AgentBase { */ private readonly __resource: bedrock.CfnAgent; + private readonly ROLE_NAME_SUFFIX = '-bedrockagent'; + + private readonly MAXLENGTH_FOR_ROLE_NAME = 64; + // ------------------------------------------------------ // CONSTRUCTOR // ------------------------------------------------------ constructor(scope: Construct, id: string, props: AgentProps) { super(scope, id); + // ------------------------------------------------------ + // Validate props + // ------------------------------------------------------ + if (props.instruction !== undefined && + !Token.isUnresolved(props.instruction) && + props.instruction.length < 40) { + throw new Error('instruction must be at least 40 characters'); + } + // ------------------------------------------------------ // Set properties and defaults // ------------------------------------------------------ this.name = - props.name ?? this.generatePhysicalName() + '-bedrock-agent'; + props.name ?? this.generatePhysicalName() + this.ROLE_NAME_SUFFIX; this.idleSessionTTL = props.idleSessionTTL ?? Duration.hours(1); this.shouldPrepareAgent = props.shouldPrepareAgent ?? false; this.userInputEnabled = props.userInputEnabled ?? false; @@ -421,15 +473,16 @@ export class Agent extends AgentBase { // If existing role is provided, use it. if (props.existingRole) { this.role = props.existingRole; + this.grantPrincipal = this.role; // Otherwise, create a new one } else { this.role = new iam.Role(this, 'Role', { // generate a role name - roleName: this.generatePhysicalName() + 'bedrockagentrole', + roleName: this.generatePhysicalName() + this.ROLE_NAME_SUFFIX, // ensure the role has a trust policy that allows the Bedrock service to assume the role assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com').withConditions({ StringEquals: { - 'aws:SourceAccount': Stack.of(this).account, + 'aws:SourceAccount': { 'Ref': 'AWS::AccountId' }, }, ArnLike: { 'aws:SourceArn': Stack.of(this).formatArn({ @@ -441,11 +494,11 @@ export class Agent extends AgentBase { }, }), }); + this.grantPrincipal = this.role; } // ------------------------------------------------------ // Set Lazy Props initial values // ------------------------------------------------------ - this.knowledgeBases = []; this.actionGroups = []; this.agentCollaborators = []; // Add Default Action Groups @@ -454,18 +507,12 @@ export class Agent extends AgentBase { // Add specified elems through methods to handle permissions // this needs to happen after role creation / assignment - props.knowledgeBases?.forEach(kb => { - this.addKnowledgeBase(kb); - }); props.actionGroups?.forEach(ag => { this.addActionGroup(ag); }); props.agentCollaborators?.forEach(ac => { this.addAgentCollaborator(ac); }); - if (props.guardrail) { - this.addGuardrail(props.guardrail); - } // Grant permissions for custom orchestration if provided if (this.customOrchestration?.executor?.lambdaFunction) { @@ -480,9 +527,6 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // Set Lazy Validations // ------------------------------------------------------ - this.node.addValidation({ - validate: () => this.validateKnowledgeBaseAssocations(), - }); // ------------------------------------------------------ // CFN Props - With Lazy support @@ -495,10 +539,8 @@ export class Agent extends AgentBase { customerEncryptionKeyArn: props.kmsKey?.keyArn, description: props.description, foundationModel: this.foundationModel.invokableArn, - guardrailConfiguration: Lazy.any({ produce: () => this.renderGuardrail() }), idleSessionTtlInSeconds: this.idleSessionTTL.toSeconds(), instruction: props.instruction, - knowledgeBases: Lazy.any({ produce: () => this.renderKnowledgeBases() }, { omitEmptyArray: true }), memoryConfiguration: props.memory, promptOverrideConfiguration: this.promptOverrideConfiguration?._render(), skipResourceInUseCheckOnDelete: this.forceDelete, @@ -513,8 +555,13 @@ export class Agent extends AgentBase { // ------------------------------------------------------ this.__resource = new bedrock.CfnAgent(this, 'AgentResource', cfnProps); - this.agentId = this.__resource.attrAgentId; - this.agentArn = this.__resource.attrAgentArn; + this.agentId = this.getResourceNameAttribute(this.__resource.attrAgentId); + this.agentArn = this.getResourceArnAttribute(this.__resource.attrAgentArn, { + service: 'bedrock', + resource: 'agent', + resourceName: this.physicalName, + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }); this.agentVersion = this.__resource.attrAgentVersion; this.lastUpdated = this.__resource.attrUpdatedAt; @@ -537,30 +584,7 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // HELPER METHODS - addX() // ------------------------------------------------------ - /** - * Add knowledge base to the agent. - */ - public addKnowledgeBase(knowledgeBase: IKnowledgeBase) { - // Do some checks - validation.throwIfInvalid(this.validateKnowledgeBase, knowledgeBase); - // Add it to the array - this.knowledgeBases.push(knowledgeBase); - // Add the appropriate Permissions to query the Knowledge Base - knowledgeBase.grantQuery(this.role); - } - - /** - * Add guardrail to the agent. - */ - public addGuardrail(guardrail: IGuardrail) { - // Do some checks - validation.throwIfInvalid(this.validateGuardrail, guardrail); - // Add it to the construct - this.guardrail = guardrail; - // Handle permissions - guardrail.grantApply(this.role); - } - + /** * Add an action group to the agent. */ @@ -596,38 +620,6 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // Lazy Renderers // ------------------------------------------------------ - /** - * Render the guardrail configuration. - * - * @internal This is an internal core function and should not be called directly. - */ - private renderGuardrail(): bedrock.CfnAgent.GuardrailConfigurationProperty | undefined { - return this.guardrail - ? { - guardrailIdentifier: this.guardrail.guardrailId, - guardrailVersion: this.guardrail.guardrailVersion, - } - : undefined; - } - - /** - * Render the knowledge base associations. - * - * @internal This is an internal core function and should not be called directly. - */ - private renderKnowledgeBases(): bedrock.CfnAgent.AgentKnowledgeBaseProperty[] { - const knowledgeBaseAssociationsCfn: bedrock.CfnAgent.AgentKnowledgeBaseProperty[] = []; - // Build the associations in the CFN format - this.knowledgeBases.forEach(kb => { - knowledgeBaseAssociationsCfn.push({ - knowledgeBaseId: kb.knowledgeBaseId, - knowledgeBaseState: 'ENABLED', - // at least one is defined as it has been validated when adding the kb - description: kb.instruction ?? kb.description!, - }); - }); - return knowledgeBaseAssociationsCfn; - } /** * Render the action groups @@ -681,65 +673,6 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // Validators // ------------------------------------------------------ - /** - * Checks if the KB Association is valid - * - * @internal This is an internal core function and should not be called directly. - */ - private validateKnowledgeBase = (knowledgeBase: IKnowledgeBase): string[] => { - const MAX_LENGTH = 200; - const description = knowledgeBase.instruction ?? knowledgeBase.description; - const errors: string[] = []; - // If at least one of the previous has been defined - if (description) { - errors.push( - ...validation.validateStringFieldLength({ - value: description, - fieldName: 'description', - minLength: 0, - maxLength: MAX_LENGTH, - }), - ); - } else { - errors.push( - 'If instructionForAgents is not provided, the description property of the KnowledgeBase ' + - `${knowledgeBase.knowledgeBaseId} must be provided.`, - ); - } - return errors; - }; - /** - * Checks if the KB Associations are valid - * - * @internal This is an internal core function and should not be called directly. - */ - private validateKnowledgeBaseAssocations = (): string[] => { - const MAX_KB_ASSOCIATIONS = 10; - const errors: string[] = []; - if (this.knowledgeBases.length > MAX_KB_ASSOCIATIONS) { - errors.push(`The maximum number of knowledge bases associations is ${MAX_KB_ASSOCIATIONS}.`); - } - for (const kb of this.knowledgeBases) { - this.validateKnowledgeBase(kb); - } - return errors; - }; - /** - * Checks if the Guardrail is valid - * - * @internal This is an internal core function and should not be called directly. - */ - private validateGuardrail = (guardrail: IGuardrail): string[] => { - const errors: string[] = []; - if (this.guardrail) { - errors.push( - `Cannot add Guardrail ${guardrail.guardrailId}. ` + - `Guardrail ${this.guardrail.guardrailId} has already been specified for this agent.`, - ); - } - errors.push(...validation.validateFieldPattern(guardrail.guardrailVersion, 'version', /^(([0-9]{1,8})|(DRAFT))$/)); - return errors; - }; /** * Check if the action group is valid */ @@ -753,7 +686,56 @@ export class Agent extends AgentBase { return errors; }; + + + private generatePhysicalNameHash( + scope: IConstruct, + prefix: string, + options?: { + maxLength?: number; + lower?: boolean; + separator?: string; + allowedSpecialCharacters?: string; + destroyCreate?: any; + }, + ): string { + const objectToHash = (obj: any): string => { + if (obj === undefined) { return ''; } + const jsonString = JSON.stringify(obj); + const hash = require('crypto').createHash('sha256'); + return hash.update(jsonString).digest('hex').slice(0, 7); + }; + + const { + maxLength = 256, + lower = false, + separator = '', + allowedSpecialCharacters = undefined, + destroyCreate = undefined, + } = options ?? {}; + + const hash = objectToHash(destroyCreate); + if (maxLength < (prefix + hash + separator).length) { + throw new Error('The prefix is longer than the maximum length.'); + } + + const uniqueName = Names.uniqueResourceName( + scope, + { maxLength: maxLength - (prefix + hash + separator).length, separator, allowedSpecialCharacters }, + ); + const name = `${prefix}${hash}${separator}${uniqueName}`; + if (name.length > maxLength) { + throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + } + return lower ? name.toLowerCase() : name; + } + protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); + const maxLength = this.MAXLENGTH_FOR_ROLE_NAME - this.ROLE_NAME_SUFFIX.length; + return this.generatePhysicalNameHash(this, 'agent-', { + maxLength, + lower: true, + separator: '-', + }); } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts new file mode 100644 index 0000000000000..fc7020a273c43 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts @@ -0,0 +1,207 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance + * with the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES + * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { createHash } from 'crypto'; +import * as cdk from 'aws-cdk-lib'; +import { IConstruct } from 'constructs'; + +/** + * The CFN NAG suppress rule interface + * @interface CfnNagSuppressRule + */ +export interface CfnNagSuppressRule { + readonly id: string; + readonly reason: string; +} + +/** + * The version of this package + */ +// eslint-disable-next-line @typescript-eslint/no-require-imports +export const version = require('../../../package.json').version; +/** + * @internal This is an internal core function and should not be called directly by Solutions Constructs clients. + * + * @summary Creates a physical resource name in the style of the CDK (string+hash) - this value incorporates Stack ID, + * so it will remain static in multiple updates of a single stack, but will be different in a separate stack instance + * @param {string} prefix - the prefix for the name + * @param {string[]} parts - the various string components of the name (eg - stackName, solutions construct ID, L2 construct ID) + * @param {number} maxLength - the longest string that can be returned + * @returns {string} - a string with concatenated parts (truncated if necessary) + a hash of the full concatenated parts + * + * @deprecated This function is deprecated and will be removed in a future major version. + * Please use the new function generatePhysicalNameV2 instead. + */ +export function generatePhysicalName( + prefix: string, + parts: string[], + maxLength: number, +): string { + // The result will consist of: + // -The prefix - unaltered + // -The parts concatenated, but reduced in size to meet the maxLength limit for the overall name + // -A hyphen delimiter + // -The GUID portion of the stack arn + + const stackIdGuidLength = 36; + const prefixLength = prefix.length; + const maxPartsLength = maxLength - prefixLength - 1 - stackIdGuidLength; // 1 is the hyphen + + // Extract the Stack ID Guid + const uniqueStackIdPart = cdk.Fn.select(2, cdk.Fn.split('/', `${cdk.Aws.STACK_ID}`)); + + let allParts: string = ''; + + parts.forEach((part) => { + allParts += part; + }); + + if (allParts.length > maxPartsLength) { + const subStringLength = maxPartsLength / 2; + allParts = allParts.substring(0, subStringLength) + allParts.substring(allParts.length - subStringLength); + } + + if (prefix.length + allParts.length + stackIdGuidLength + 1 /* hyphen */ > maxLength) { + throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + } + + return prefix.toLowerCase() + allParts + '-' + uniqueStackIdPart; +} + + +export interface GeneratePhysicalNameV2Options extends cdk.UniqueResourceNameOptions { + /** + * Whether to convert the name to lower case. + * + * @default false + */ + lower?: boolean; + + /** + * This object is hashed for uniqueness and can force a destroy instead of a replace. + * @default: undefined + */ + destroyCreate?: any; +} +/** + * @internal This is an internal core function and should not be called directly by Solutions Constructs clients. + * + * @summary Creates a physical resource name in the style of the CDK (string+hash) - this value incorporates + * the Stack Name and node ID, so it will remain static in multiple updates of a single stack, but will be + * different in a separate stack instance. + * + * This new version allows for names shorter than 36 characters with control over casing. + * + * The minimum length is the length of the prefix and separator plus 10. + */ +export function generatePhysicalNameV2( + /** + * The CDK scope of the resource. + */ + scope: IConstruct, + /** + * The prefix for the name. + */ + prefix: string, + /** + * Options for generating the name. + */ + options?: GeneratePhysicalNameV2Options, +): string { + function objectToHash(obj: any): string { + // Nothing to hash if undefined + if (obj === undefined) { return ''; } + + // Convert the object to a JSON string + const jsonString = JSON.stringify(obj); + + // Create a SHA-256 hash + const hash = createHash('sha256'); + + // Update the hash with the JSON string and get the digest in hexadecimal format + // Shorten it (modeled after seven characters like git commit hash shortening) + return hash.update(jsonString).digest('hex').slice(0, 7); + } + const { + maxLength = 256, + lower = false, + separator = '', + allowedSpecialCharacters = undefined, + destroyCreate = undefined, + } = options ?? {}; + const hash = objectToHash(destroyCreate); + if (maxLength < (prefix + hash + separator).length) { + throw new Error('The prefix is longer than the maximum length.'); + } + const uniqueName = cdk.Names.uniqueResourceName( + scope, + { maxLength: maxLength - (prefix + hash + separator).length, separator, allowedSpecialCharacters }, + ); + const name = `${prefix}${hash}${separator}${uniqueName}`; + if (name.length > maxLength) { + throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + } + return lower ? name.toLowerCase() : name; +} + +export const maximumLambdaMemorySizeContextItem = 'maximumLambdaMemorySize'; +export const recommendedMaximumLambdaMemorySize = 7076; +export function lambdaMemorySizeLimiter(construct: IConstruct, requestedMemorySizeInMegabytes: number) { + const maximumLambaMemorySize = construct.node.tryGetContext(maximumLambdaMemorySizeContextItem) === undefined ? + recommendedMaximumLambdaMemorySize : + parseInt(construct.node.tryGetContext(maximumLambdaMemorySizeContextItem)); + if (maximumLambaMemorySize < recommendedMaximumLambdaMemorySize) { + console.warn(`Maximum Lambda memorySize, ${maximumLambaMemorySize}, is less than the recommended ${recommendedMaximumLambdaMemorySize}.`); + } + if (requestedMemorySizeInMegabytes > maximumLambaMemorySize) { + console.warn(`Reducing Lambda memorySize, ${requestedMemorySizeInMegabytes} to ${maximumLambaMemorySize} for ${construct.constructor.name}`); + return maximumLambaMemorySize; + } else { + return requestedMemorySizeInMegabytes; + } +} + +/** + * Adds CFN NAG suppress rules to the CDK resource. + * @param resource The CDK resource + * @param rules The CFN NAG suppress rules + */ +export function addCfnSuppressRules(resource: cdk.Resource | cdk.CfnResource, rules: CfnNagSuppressRule[]) { + if (resource instanceof cdk.Resource) { + resource = resource.node.defaultChild as cdk.CfnResource; + } + + if (resource.cfnOptions.metadata?.cfn_nag?.rules_to_suppress) { + resource.cfnOptions.metadata?.cfn_nag.rules_to_suppress.push(...rules); + } else { + resource.addMetadata('cfn_nag', { + rules_to_suppress: rules, + }); + } +} + +function isObject(val: object) { + return val !== null && typeof val === 'object' && !Array.isArray(val); +} + +export function isPlainObject(o: object) { + if (!isObject(o)) return false; + + if (Object.getPrototypeOf(o) === null) return true; + + let proto = o; + while (Object.getPrototypeOf(proto) !== null) { + proto = Object.getPrototypeOf(proto); + } + return Object.getPrototypeOf(o) === proto; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts deleted file mode 100644 index 7f9943c2c34a7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/base-data-source.ts +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { IResource, Resource } from 'aws-cdk-lib'; -import { CfnDataSource, CfnDataSourceProps } from 'aws-cdk-lib/aws-bedrock'; -import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; -import * as kms from 'aws-cdk-lib/aws-kms'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { ChunkingStrategy } from './chunking'; -import { ContextEnrichment } from './context-enrichment'; -import { CustomTransformation } from './custom-transformation'; -import { ParsingStategy } from './parsing'; -/** - * Specifies the policy for handling data when a data source resource is deleted. - * This policy affects the vector embeddings created from the data source. - */ -export enum DataDeletionPolicy { - /** - * Deletes all vector embeddings derived from the data source upon deletion - * of a data source resource. - */ - DELETE = 'DELETE', - - /** - * Retains all vector embeddings derived from the data source even after - * deletion of a data source resource. - */ - RETAIN = 'RETAIN', -} - -/** - * Represents the types of data sources that can be associated to an Knowledge Base. - */ -export enum DataSourceType { - /** - * Amazon S3 Bucket data source. - */ - S3 = 'S3', - - /** - * Confluence Cloud Instance data source. - */ - CONFLUENCE = 'CONFLUENCE', - - /** - * Salesforce instance data source. - */ - SALESFORCE = 'SALESFORCE', - - /** - * Microsoft SharePoint instance data source. - */ - SHAREPOINT = 'SHAREPOINT', - - /** - * Web Crawler data source. - * Extracts content from authorized public web pages using a crawler. - */ - WEB_CRAWLER = 'WEB', - - /** - * Custom data source. - * A custom data source allows the flexibility to automatically ingest documents - * into your vector database directly. - */ - CUSTOM = 'CUSTOM', - - /** - * Redshift Metadata data source. - */ - REDSHIFT_METADATA = 'REDSHIFT_METADATA', -} - -/** - * Specifies interface for resources created with CDK or imported into CDK. - */ -export interface IDataSource extends IResource { - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - readonly dataSourceId: string; -} - -/** - * Specifies the base class for all data source resources (imported and new). - */ -export abstract class DataSourceBase extends Resource implements IDataSource { - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public abstract readonly dataSourceId: string; - - // Common methods for imported and new data sources go here -} - -/** - * Properties common for creating any of the different data source types. - */ -export interface DataSourceAssociationProps { - /** - * The name of the data source. - * - * @default - A new name will be generated. - */ - readonly dataSourceName?: string; - - /** - * A description of the data source. - * - * @default - No description is provided. - */ - readonly description?: string; - - /** - * The KMS key to use to encrypt the data source. - * - * @default - Service owned and managed key. - */ - readonly kmsKey?: kms.IKey; - - /** - * The data deletion policy to apply to the data source. - * - * @default - Sets the data deletion policy to the default of the data source type. - */ - readonly dataDeletionPolicy?: DataDeletionPolicy; - - /** - * The chunking stategy to use for splitting your documents or content. - * The chunks are then converted to embeddings and written to the vector - * index allowing for similarity search and retrieval of the content. - * - * @default ChunkingStrategy.DEFAULT - */ - readonly chunkingStrategy?: ChunkingStrategy; - - /** - * The parsing strategy to use. - * - * @default - No Parsing Stategy is used. - */ - readonly parsingStrategy?: ParsingStategy; - - /** - * The custom transformation strategy to use. - * - * @default - No custom transformation is used. - */ - readonly customTransformation?: CustomTransformation; - - /** - * The context enrichment configuration to use. - * @default - No context enrichment is used. - */ - readonly contextEnrichment?: ContextEnrichment; -} - -/** - * Specifies the base class for all NEW data source resources of ANY type. - */ -export abstract class DataSourceNew extends DataSourceBase { - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public abstract readonly dataSourceId: string; - /** - * The type of data source. - */ - public abstract readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public abstract readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public abstract readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public abstract readonly kmsKey?: kms.IKey; - - // ------------------------------------------------------ - // Common methods for ALL NEW data sources - // ------------------------------------------------------ - - /** - * Adds appropriate permissions to the KB execution role needed by the data source. - */ - public handleCommonPermissions(props: DataSourceAssociationProps) { - let statementsToAdd: PolicyStatement[] = []; - // Parsing strategy requires access to the parsing FM, so be sure to add permissions - if (props.parsingStrategy) { - statementsToAdd.push(...props.parsingStrategy.generatePolicyStatements()); - } - // Custom transformation requires invoke permissions for the Lambda - if (props.customTransformation) { - statementsToAdd.push(...props.customTransformation.generatePolicyStatements(this)); - } - // Add the permission statements to the KB execution role - statementsToAdd.forEach((statement) => { - this.knowledgeBase.role.addToPrincipalPolicy(statement); - }); - } - - /** - * Formats the data source configuration properties for CloudFormation. - */ - public formatAsCfnProps( - props: DataSourceAssociationProps, - dataSourceConfiguration: CfnDataSource.DataSourceConfigurationProperty, - ): CfnDataSourceProps { - return { - dataDeletionPolicy: props.dataDeletionPolicy, - dataSourceConfiguration: dataSourceConfiguration, - description: props.description, - knowledgeBaseId: this.knowledgeBase.knowledgeBaseId, - name: this.dataSourceName, - serverSideEncryptionConfiguration: props.kmsKey - ? { - kmsKeyArn: props.kmsKey.keyArn, - } - : undefined, - vectorIngestionConfiguration: - props.chunkingStrategy || props.parsingStrategy || props.customTransformation || props.contextEnrichment - ? { - chunkingConfiguration: props.chunkingStrategy?.configuration, - parsingConfiguration: props.parsingStrategy?.configuration, - customTransformationConfiguration: props.customTransformation?.configuration, - contextEnrichmentConfiguration: props.contextEnrichment?.configuration, - } - : undefined, - }; - } -} - -export class DataSource extends DataSourceBase { - public static fromDataSourceId(scope: Construct, id: string, dataSourceId: string): IDataSource { - return new DataSource(scope, id, dataSourceId); - } - - public readonly dataSourceId: string; - - private constructor(scope: Construct, id: string, dataSourceId: string) { - super(scope, id); - this.dataSourceId = dataSourceId; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts deleted file mode 100644 index 9e4d170f9baf2..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/chunking.ts +++ /dev/null @@ -1,184 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; - -/** - * Knowledge base can split your source data into chunks. A chunk refers to an - * excerpt from a data source that is returned when the knowledge base that it - * belongs to is queried. You have the following options for chunking your - * data. If you opt for NONE, then you may want to pre-process your files by - * splitting them up such that each file corresponds to a chunk. - */ -enum ChunkingStrategyType { - /** - * Amazon Bedrock splits your source data into chunks of the approximate size - * that you set in the `fixedSizeChunkingConfiguration`. - */ - FIXED_SIZE = 'FIXED_SIZE', - /** - * Splits documents into layers of chunks where the first layer contains large - * chunks, and the second layer contains smaller chunks derived from the first - * layer. You set the maximum parent chunk token size and the maximum child - * chunk token size. You also set the absolute number of overlap tokens between - * consecutive parent chunks and consecutive child chunks. - */ - HIERARCHICAL = 'HIERARCHICAL', - /** - * Splits documents into semantically similar text chunks or groups of - * sentences by using a foundation model. Note that there are additional - * costs to using semantic chunking due to its use of a foundation model. - */ - SEMANTIC = 'SEMANTIC', - /** - * Amazon Bedrock treats each file as one chunk. If you choose this option, - * you may want to pre-process your documents by splitting them into separate - * files. - */ - NONE = 'NONE', -} - -export interface HierarchicalChunkingProps { - /** - * The overlap tokens between adjacent chunks. - */ - readonly overlapTokens: number; - /** - * Maximum number of tokens that a parent chunk can contain. - * Keep in mind the maximum chunk size depends on the embedding model chosen. - */ - readonly maxParentTokenSize: number; - /** - * Maximum number of tokens that a child chunk can contain. - * Keep in mind the maximum chunk size depends on the embedding model chosen. - */ - readonly maxChildTokenSize: number; -} - -export abstract class ChunkingStrategy { - // ------------------------------------------------------ - // Static Constants for Easy Customization - // ------------------------------------------------------ - /** - * Fixed Sized Chunking with the default chunk size of 300 tokens and 20% overlap. - */ - public static readonly DEFAULT = ChunkingStrategy.fixedSize( - { maxTokens: 300, overlapPercentage: 20 }, - ); - /** - * Fixed Sized Chunking with the default chunk size of 300 tokens and 20% overlap. - * You can adjust these values based on your specific requirements using the - * `ChunkingStrategy.fixedSize(params)` method. - */ - public static readonly FIXED_SIZE = ChunkingStrategy.fixedSize( - { maxTokens: 300, overlapPercentage: 20 }, - ); - /** - * Hierarchical Chunking with the default for Cohere Models. - * - Overlap tokens: 30 - * - Max parent token size: 500 - * - Max child token size: 100 - */ - public static readonly HIERARCHICAL_COHERE = ChunkingStrategy.hierarchical( - { overlapTokens: 60, maxParentTokenSize: 500, maxChildTokenSize: 300 }, - ); - - /** - * Hierarchical Chunking with the default for Titan Models. - * - Overlap tokens: 60 - * - Max parent token size: 1500 - * - Max child token size: 300 - */ - public static readonly HIERARCHICAL_TITAN = ChunkingStrategy.hierarchical( - { overlapTokens: 60, maxParentTokenSize: 1500, maxChildTokenSize: 300 }, - ); - /** - * Semantic Chunking with the default of bufferSize: 0, - * breakpointPercentileThreshold: 95, and maxTokens: 300. - * You can adjust these values based on your specific requirements using the - * `ChunkingStrategy.semantic(params)` method. - */ - public static readonly SEMANTIC = ChunkingStrategy.semantic( - { bufferSize: 0, breakpointPercentileThreshold: 95, maxTokens: 300 }, - ); - /** - * Amazon Bedrock treats each file as one chunk. Suitable for documents that - * are already pre-processed or text split. - */ - public static readonly NONE = ChunkingStrategy.noChunking(); - - // ------------------------------------------------------ - // Static Methods for Customization - // ------------------------------------------------------ - /** Method for customizing a fixed sized chunking strategy. */ - public static fixedSize(props: CfnDataSource.FixedSizeChunkingConfigurationProperty): ChunkingStrategy { - return { - configuration: { - chunkingStrategy: ChunkingStrategyType.FIXED_SIZE, - fixedSizeChunkingConfiguration: props, - }, - }; - } - - /** - * Method for customizing a hierarchical chunking strategy. - * For custom chunking, the maximum token chunk size depends on the model. - * - Amazon Titan Text Embeddings: 8192 - * - Cohere Embed models: 512 - */ - public static hierarchical(props: HierarchicalChunkingProps): ChunkingStrategy { - return { - configuration: { - chunkingStrategy: ChunkingStrategyType.HIERARCHICAL, - hierarchicalChunkingConfiguration: { - overlapTokens: props.overlapTokens, - levelConfigurations: [ - { maxTokens: props.maxParentTokenSize }, - { maxTokens: props.maxChildTokenSize }, - ], - }, - }, - }; - } - - /** - * Method for customizing a semantic chunking strategy. - * For custom chunking, the maximum token chunk size depends on the model. - * - Amazon Titan Text Embeddings: 8192 - * - Cohere Embed models: 512 - */ - public static semantic(props: CfnDataSource.SemanticChunkingConfigurationProperty): ChunkingStrategy { - return { - configuration: { - chunkingStrategy: ChunkingStrategyType.SEMANTIC, - semanticChunkingConfiguration: props, - }, - }; - } - - /** Method for defining a no chunking strategy. */ - private static noChunking(): ChunkingStrategy { - return { - configuration: { - chunkingStrategy: ChunkingStrategyType.NONE, - }, - }; - } - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - /** The CloudFormation property representation of this configuration */ - public abstract configuration: CfnDataSource.ChunkingConfigurationProperty; - - private constructor() { } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts deleted file mode 100644 index 7570bbb6bafd3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/confluence-data-source.ts +++ /dev/null @@ -1,239 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; - -/** - * The different authentication types available to connect to your Confluence instance. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/confluence-data-source-connector.html#configuration-confluence-connector - */ -export enum ConfluenceDataSourceAuthType { - /** - * Your secret authentication credentials in AWS Secrets Manager should include: - * - `confluenceAppKey` - * - `confluenceAppSecret` - * - `confluenceAccessToken` - * - `confluenceRefreshToken` - */ - OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', - /** - * Your secret authentication credentials in AWS Secrets Manager should include: - * - `username` (email of admin account) - * - `password` (API token) - */ - BASIC = 'BASIC', -} - -/** - * Represents the different types of content objects in Confluence that can be - * crawled by the data source. - */ -export enum ConfluenceObjectType { - SPACE = 'Space', - PAGE = 'Page', - BLOG = 'Blog', - COMMENT = 'Comment', - ATTACHMENT = 'Attachment', -} - -/** - * Defines filters for crawling Confluence content. - * These filters allow you to include or exclude specific content based on object types and patterns. - * - * - For Spaces: Use the unique space key - * - For Pages: Use the main page title - * - For Blogs: Use the main blog title - * - For Comments: Use "Re: Page/Blog Title" - * - For Attachments: Use the filename with extension - * @remarks - * - You can specify inclusion and exclusion patterns using regular expressions. - * - If both inclusion and exclusion patterns match a document, the exclusion takes precedence. - * - * @example - * { - * objectType: ConfluenceObjectType.ATTACHMENT, - * excludePatterns: [".*private.*\\.pdf"] - * } - */ -export interface ConfluenceCrawlingFilters { - /** - * The type of Confluence object to apply the filters to. - */ - readonly objectType: ConfluenceObjectType; - - /** - * Regular expression patterns to include content. - * If specified, only content matching these patterns will be crawled. - */ - readonly includePatterns?: string[]; - - /** - * Regular expression patterns to exclude content. - * Content matching these patterns will not be crawled, even if it matches an include pattern. - */ - readonly excludePatterns?: string[]; -} - -/** - * Interface to add a new data source to an existing KB. - */ -export interface ConfluenceDataSourceAssociationProps extends DataSourceAssociationProps { - /** - * The Confluence host URL or instance URL. - * @example https://example.atlassian.net - */ - readonly confluenceUrl: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials - * for your Confluence instance URL. Secret must start with "AmazonBedrock-". - */ - readonly authSecret: ISecret; - /** - * The supported authentication method to connect to the data source. - * @default ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS - */ - readonly authType?: ConfluenceDataSourceAuthType; - /** - * The filters (regular expression patterns) for the crawling. - * If there's a conflict, the exclude pattern takes precedence. - * @default None - all your content is crawled. - */ - readonly filters?: ConfluenceCrawlingFilters[]; -} - -/** - * Interface to create a new standalone data source object. - */ -export interface ConfluenceDataSourceProps extends ConfluenceDataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up a Confluence Data Source to be added to a knowledge base. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/confluence-data-source-connector.html - */ -export class ConfluenceDataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - /** - * The Confluence host URL or instance URL. - */ - public readonly confluenceUrl: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials. - */ - public readonly authSecret: ISecret; - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: ConfluenceDataSourceProps) { - super(scope, id); - // Assign common attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.CONFLUENCE; - this.dataSourceName = - props.dataSourceName ?? - this.generatePhysicalName() + '-confluence-ds'; - this.kmsKey = props.kmsKey; - // Assign unique attributes - this.confluenceUrl = props.confluenceUrl; - this.authSecret = props.authSecret; - - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - this.authSecret.grantRead(this.knowledgeBase.role); - - // Grant write permissions to the knowledge base role for updating the secret. - // This is necessary when using OAuth 2.0 authentication with a refresh token. - if (props.authType === ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS) { - this.authSecret.grantWrite(this.knowledgeBase.role); - } - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - confluenceConfiguration: { - sourceConfiguration: { - authType: props.authType ?? ConfluenceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, - credentialsSecretArn: this.authSecret.secretArn, - hostUrl: this.confluenceUrl, - hostType: 'SAAS', - }, - crawlerConfiguration: props.filters - ? { - filterConfiguration: { - type: 'PATTERN', - patternObjectFilter: { - filters: props.filters?.map(item => ({ - objectType: item.objectType, - inclusionFilters: item.includePatterns, - exclusionFilters: item.excludePatterns, - })), - }, - }, - } - : undefined, - }, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts deleted file mode 100644 index 6673dbe9b8479..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/context-enrichment.ts +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; -import { IInvokable } from '../models'; - -/** - * Enum representing the type of context enrichment. - */ -export enum ContextEnrichmentType { - /** - * Uses a Bedrock Foundation Model for context enrichment. - */ - BEDROCK_FOUNDATION_MODEL = 'BEDROCK_FOUNDATION_MODEL', -} - -/** - * Enum representing the method to be used for enrichment strategy. - */ -export enum EnrichmentStrategyConfigurationType { - - CHUNK_ENTITY_EXTRACTION = 'CHUNK_ENTITY_EXTRACTION', -} - -/** - * Properties for configuring a Foundation Model enrichment strategy. - */ -export interface FoundationModelContextEnrichmentProps { - /** - * The Bedrock Foundation Model configuration for context enrichment. - */ - readonly enrichmentModel: IInvokable; -} - -/** - * Abstract class representing a context enrichment strategy. - * The enrichment stategy used to provide additional context. - * For example, Neptune GraphRAG uses Amazon Bedrock foundation - * models to perform chunk entity extraction. - */ -export abstract class ContextEnrichment { - - // ------------------------------------------------------ - // FM Enrichment Strategy - // ------------------------------------------------------ - /** - * Creates a Foundation Model-based enrichment strategy used to provide additional context - * to the RAG application. - */ - public static foundationModel(props: FoundationModelContextEnrichmentProps): ContextEnrichment { - class FoundationModelContextEnrichment extends ContextEnrichment { - public readonly configuration = { - type: ContextEnrichmentType.BEDROCK_FOUNDATION_MODEL, - bedrockFoundationModelConfiguration: { - modelArn: props.enrichmentModel.invokableArn, - enrichmentStrategyConfiguration: { - method: EnrichmentStrategyConfigurationType.CHUNK_ENTITY_EXTRACTION, - }, - }, - }; - - public generatePolicyStatements(): PolicyStatement[] { - return [ - new PolicyStatement({ - actions: ['bedrock:InvokeModel*'], - resources: [props.enrichmentModel.invokableArn], - }), - ]; - } - } - - return new FoundationModelContextEnrichment(); - } - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - /** The CloudFormation property representation of this configuration */ - public abstract configuration: CfnDataSource.ContextEnrichmentConfigurationProperty; - - public abstract generatePolicyStatements(): PolicyStatement[]; -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts deleted file mode 100644 index 45176b948baa1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-data-source.ts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; -/** - * Interface to add a new CustomDataSource to an existing KB - */ -export interface CustomDataSourceAssociationProps extends DataSourceAssociationProps {} - -/** - * Interface to create a new Custom Data Source object. - */ -export interface CustomDataSourceProps extends CustomDataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up a custom Data Source to be added to a knowledge base. - */ -export class CustomDataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - // No unique attributes at the moment ... - // - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: CustomDataSourceProps) { - super(scope, id); - // Assign attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.CUSTOM; - - // Turns out chunking and parsing are not replace so pass - // const chunkingStrategy = props.chunkingStrategy; - // const parsingStrategy = props.parsingStrategy; - //const theseAreNotReplacable = { chunkingStrategy, parsingStrategy }; - this.dataSourceName = - props.dataSourceName ?? - this.generatePhysicalName() + '-custom-ds'; - this.kmsKey = props.kmsKey; - - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts deleted file mode 100644 index 96c15440b07d8..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/custom-transformation.ts +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { Stack } from 'aws-cdk-lib'; -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; -import { IFunction } from 'aws-cdk-lib/aws-lambda'; -import { Construct } from 'constructs'; - -/** - * Defines the step in the ingestion process where the custom transformation is applied. - */ -export enum TransformationStep { - /** - * Processes documents after they have been converted into chunks. - * This allows for custom chunk-level metadata addition or custom post-chunking logic. - */ - POST_CHUNKING = 'POST_CHUNKING', -} - -/** - * Properties for configuring a Lambda-based custom transformation. - */ -export interface LambdaCustomTransformationProps { - /** - * The Lambda function to use for custom document processing. - */ - readonly lambdaFunction: IFunction; - - /** - * An S3 bucket URL/path to store input documents for Lambda processing - * and to store the output of the processed documents. - * @example "s3://my-bucket/chunk-processor/" - */ - readonly s3BucketUri: string; - - // Commented as only one supported at the time this code is written. - // /** - // * When in the ingestion process to apply the transformation step. - // * @default TransformationStep.POST_CHUNKING - // */ - // readonly stepToApply?: TransformationStep; -} - -/** - * Represents a custom transformation configuration for a data source ingestion. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-chunking-parsing.html#kb-custom-transformation - */ -export abstract class CustomTransformation { - - // ------------------------------------------------------ - // Lambda Transformation Strategy - // ------------------------------------------------------ - /** - * This feature allows you to use a Lambda function to inject your own logic - * into the knowledge base ingestion process. - * @see https://github.com/aws-samples/amazon-bedrock-samples/blob/main/knowledge-bases/features-examples/02-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb - */ - public static lambda(props: LambdaCustomTransformationProps): CustomTransformation { - - class LambdaCustomTransformation extends CustomTransformation { - public readonly configuration = { - intermediateStorage: { - s3Location: { - uri: props.s3BucketUri, - }, - }, - transformations: [ - { - stepToApply: TransformationStep.POST_CHUNKING, - // To uncomment when more steps are available - // stepToApply: props.stepToApply ?? TransformationStep.POST_CHUNKING, - transformationFunction: { - transformationLambdaConfiguration: { - lambdaArn: props.lambdaFunction.functionArn, - }, - }, - }, - ], - }; - public generatePolicyStatements(scope: Construct): PolicyStatement[] { - return [ - new PolicyStatement({ - actions: ['lambda:InvokeFunction'], - resources: [`${props.lambdaFunction.functionArn}:*`], - conditions: { - StringEquals: { - 'aws:ResourceAccount': Stack.of(scope).account, - }, - }, - }), - ]; - } - } - return new LambdaCustomTransformation(); - } - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - /** - * The CloudFormation property representation of this custom transformation configuration. - */ - public abstract configuration: CfnDataSource.CustomTransformationConfigurationProperty; - - public abstract generatePolicyStatements(scope: Construct): PolicyStatement[]; - -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts deleted file mode 100644 index f826d121c7034..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/default-parsing-prompt.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -export const DEFAULT_PARSING_PROMPT = `Transcribe the text content from an image page and output in Markdown syntax (not code blocks). Follow these steps: - -1. Examine the provided page carefully. - -2. Identify all elements present in the page, including headers, body text, footnotes, tables, visulizations, captions, and page numbers, etc. - -3. Use markdown syntax to format your output: - - Headings: # for main, ## for sections, ### for subsections, etc. - - Lists: * or - for bulleted, 1. 2. 3. for numbered - - Do not repeat yourself - -4. If the element is a visulization - - Provide a detailed description in natural language - - Do not transcribe text in the visualization after providing the description - -5. If the element is a table - - Create a markdown table, ensuring every row has the same number of columns - - Maintain cell alignment as closely as possible - - Do not split a table into multiple tables - - If a merged cell spans multiple rows or columns, place the text in the top-left cell and output ' ' for other - - Use | for column separators, |-|-| for header row separators - - If a cell has multiple items, list them in separate rows - - If the table contains sub-headers, separate the sub-headers from the headers in another row - -6. If the element is a paragraph - - Transcribe each text element precisely as it appears - -7. If the element is a header, footer, footnote, page number - - Transcribe each text element precisely as it appears - -Output Example: - -A bar chart showing annual sales figures, with the y-axis labeled "Sales ($Million)" and the x-axis labeled "Year". The chart has bars for 2018 ($12M), 2019 ($18M), 2020 ($8M), and 2021 ($22M). -Figure 3: This chart shows annual sales in millions. The year 2020 was significantly down due to the COVID-19 pandemic. - -# Annual Report - -## Financial Highlights - -* Revenue: $40M -* Profit: $12M -* EPS: $1.25 - - -| | Year Ended December 31, | | -| | 2021 | 2022 | -|-|-|-| -| Cash provided by (used in): | | | -| Operating activities | $ 46,327 | $ 46,752 | -| Investing activities | (58,154) | (37,601) | -| Financing activities | 6,291 | 9,718 | - -Here is the image. -`; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts deleted file mode 100644 index a9ce73dee5d24..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/parsing.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; -import { DEFAULT_PARSING_PROMPT } from './default-parsing-prompt'; -import { IInvokable } from '../models'; - -export enum ParsingModality { - /** - * Specifies whether to enable parsing of multimodal data, including both text and/or images. - */ - MULTIMODAL = 'MULTIMODAL', -} -/** - * Enum representing the types of parsing strategies available for Amazon Bedrock Knowledge Bases. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-advanced-parsing.html - */ -export enum ParsingStategyType { - /** - * Uses a Bedrock Foundation Model for advanced parsing of non-textual information from documents. - */ - FOUNDATION_MODEL = 'BEDROCK_FOUNDATION_MODEL', - /** - * Processes multimodal data using Bedrock Data Automation (BDA). It leverages - * generative AI to automate the transformation of multi-modal data into structured formats. - * If you choose a foundation model or Amazon Bedrock Data Automation for parsing and it fails - * to parse a file, the Amazon Bedrock default parser is used instead. - */ - DATA_AUTOMATION = 'BEDROCK_DATA_AUTOMATION', -} - -/** - * Properties for configuring a Foundation Model parsing strategy. - */ -export interface FoundationModelParsingStategyProps { - /** - * The Foundation Model to use for parsing non-textual information. - * Currently supported models are Claude 3 Sonnet and Claude 3 Haiku. - */ - readonly parsingModel: IInvokable; - - /** - * Custom prompt to instruct the parser on how to interpret the document. - * - * @default - Uses the default instruction prompt as provided in the AWS Console. - */ - readonly parsingPrompt?: string; - - /** - * Specifies whether to enable parsing of multimodal data, including both text and/or images. - * - * @default undefined - Text only - */ - readonly parsingModality?: ParsingModality; -} - -/** - * Represents an advanced parsing strategy configuration for Knowledge Base ingestion. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-chunking-parsing.html#kb-advanced-parsing - */ -export abstract class ParsingStategy { - // ------------------------------------------------------ - // FM Parsing Strategy - // ------------------------------------------------------ - /** - * Creates a Foundation Model-based parsing strategy for extracting non-textual information - * from documents such as tables and charts. - * - Additional costs apply when using advanced parsing due to foundation model usage. - * - There are limits on file types (PDF) and total data that can be parsed using advanced parsing. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits - */ - public static foundationModel(props: FoundationModelParsingStategyProps): ParsingStategy { - class FoundationModelTransformation extends ParsingStategy { - /** The CloudFormation property representation of this configuration */ - public readonly configuration = { - bedrockFoundationModelConfiguration: { - modelArn: props.parsingModel.invokableArn, - parsingPrompt: { - parsingPromptText: props.parsingPrompt ?? DEFAULT_PARSING_PROMPT, - }, - }, - parsingStrategy: ParsingStategyType.FOUNDATION_MODEL, - }; - - public generatePolicyStatements(): PolicyStatement[] { - return [ - new PolicyStatement({ - actions: ['bedrock:InvokeModel'], - resources: [props.parsingModel.invokableArn], - }), - ]; - } - } - - return new FoundationModelTransformation(); - } - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - /** The CloudFormation property representation of this configuration */ - public abstract configuration: CfnDataSource.ParsingConfigurationProperty; - - public abstract generatePolicyStatements(): PolicyStatement[]; -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts deleted file mode 100644 index 17f59a868b542..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/s3-data-source.ts +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { IBucket } from 'aws-cdk-lib/aws-s3'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; -/** - * Interface to add a new S3DataSource to an existing KB - */ -export interface S3DataSourceAssociationProps extends DataSourceAssociationProps { - /** - * The bucket that contains the data source. - */ - readonly bucket: IBucket; - - /** - * The prefixes of the objects in the bucket that should be included in the data source. - * - * @default - All objects in the bucket. - */ - readonly inclusionPrefixes?: string[]; -} - -/** - * Interface to create a new S3 Data Source object. - */ -export interface S3DataSourceProps extends S3DataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up an S3 Data Source to be added to a knowledge base. - */ -export class S3DataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - /** - * The bucket associated with the data source. - */ - public readonly bucket: IBucket; - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: S3DataSourceProps) { - super(scope, id); - // Assign attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.S3; - - // Store chunking and parsing strategies from props - //const chunkingStrategy = props.chunkingStrategy; - //const parsingStrategy = props.parsingStrategy; - this.dataSourceName = - props.dataSourceName ?? - this.generatePhysicalName() + '-s3-ds'; - this.bucket = props.bucket; - this.kmsKey = props.kmsKey; - - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - this.bucket.grantRead(this.knowledgeBase.role); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - s3Configuration: { - bucketArn: props.bucket.bucketArn, - inclusionPrefixes: props.inclusionPrefixes, - }, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts deleted file mode 100644 index 24840505f6d9c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/salesforce-data-source.ts +++ /dev/null @@ -1,213 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceNew, DataSourceAssociationProps, DataSourceType } from './base-data-source'; -/** - * Represents the authentication types available for connecting to a Salesforce data source. - */ -export enum SalesforceDataSourceAuthType { - /** - * Your secret authentication credentials in AWS Secrets Manager should include: - * - `consumerKey` (app client ID) - * - `consumerSecret` (client secret) - * - `authenticationUrl` - */ - OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', -} - -/** - * Represents the Salesforce object types that can be accessed by the data source connector. - */ -export enum SalesforceObjectType { - ACCOUNT = 'Account', - ATTACHMENT = 'Attachment', - CAMPAIGN = 'Campaign', - CONTENT_VERSION = 'ContentVersion', - PARTNER = 'Partner', - PRICEBOOK_2 = 'Pricebook2', - CASE = 'Case', - CONTACT = 'Contact', - CONTRACT = 'Contract', - DOCUMENT = 'Document', - IDEA = 'Idea', - LEAD = 'Lead', - OPPORTUNITY = 'Opportunity', - PRODUCT_2 = 'Product2', - SOLUTION = 'Solution', - TASK = 'Task', - FEED_ITEM = 'FeedItem', - FEED_COMMENT = 'FeedComment', - KNOWLEDGE_KAV = 'Knowledge__kav', - USER = 'User', - COLLABORATION_GROUP = 'CollaborationGroup', -} - -/** - * Defines the crawling filters for Salesforce data ingestion. - */ -export interface SalesforceCrawlingFilters { - /** - * The Salesforce object type to which this filter applies. - */ - readonly objectType: SalesforceObjectType; - /** - * Regular expression patterns to include specific content. - */ - readonly includePatterns?: string[]; - /** - * Regular expression patterns to exclude specific content. - */ - readonly excludePatterns?: string[]; -} - -/** - * Interface to add a new data source to an existing KB. - */ -export interface SalesforceDataSourceAssociationProps extends DataSourceAssociationProps { - /** - * The Salesforce host URL or instance URL. - * @example "https://company.salesforce.com/" - */ - readonly endpoint: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials - * for your Salesforce instance URL. Secret must start with "AmazonBedrock-". - */ - readonly authSecret: ISecret; - /** - * The filters (regular expression patterns) for the crawling. - * If there's a conflict, the exclude pattern takes precedence. - * @default None - all your content is crawled. - */ - readonly filters?: SalesforceCrawlingFilters[]; -} - -/** - * Interface to create a new standalone data source object. - */ -export interface SalesforceDataSourceProps extends SalesforceDataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up an data source to be added to a knowledge base. - */ -export class SalesforceDataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - /** - * The Salesforce host URL or instance URL. - */ - public readonly endpoint: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials. - */ - public readonly authSecret: ISecret; - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: SalesforceDataSourceProps) { - super(scope, id); - // Assign attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.SALESFORCE; - this.dataSourceName = - props.dataSourceName ?? this.generatePhysicalName() + '-sfdc-ds'; - this.endpoint = props.endpoint; - this.authSecret = props.authSecret; - this.kmsKey = props.kmsKey; - - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - this.authSecret.grantRead(this.knowledgeBase.role); - - // ------------------------------------------------------ - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - salesforceConfiguration: { - sourceConfiguration: { - authType: SalesforceDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, - credentialsSecretArn: this.authSecret.secretArn, - hostUrl: this.endpoint, - }, - crawlerConfiguration: props.filters - ? { - filterConfiguration: { - type: 'PATTERN', - patternObjectFilter: { - filters: props.filters?.map(item => ({ - objectType: item.objectType, - inclusionFilters: item.includePatterns, - exclusionFilters: item.excludePatterns, - })), - }, - }, - } - : undefined, - }, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts deleted file mode 100644 index 3472310b124c3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/sharepoint-data-source.ts +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { ISecret } from 'aws-cdk-lib/aws-secretsmanager'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceAssociationProps, DataSourceNew, DataSourceType } from './base-data-source'; -/** - * Represents the authentication types available for connecting to a SharePoint data source. - */ -export enum SharePointDataSourceAuthType { - /** - * OAuth 2.0 Client Credentials flow for authentication with SharePoint. - * Your secret authentication credentials in AWS Secrets Manager should include: - * - `username`: The admin username for SharePoint authentication - * - `password`: The admin password associated with the username - * - `clientId`: The client ID (also known as application ID) - * - `clientSecret`: The client secret - */ - OAUTH2_CLIENT_CREDENTIALS = 'OAUTH2_CLIENT_CREDENTIALS', -} - -/** - * Represents the SharePoint object types that can be accessed by the data source connector. - */ -export enum SharePointObjectType { - /** - * Represents a SharePoint page, which typically contains web parts and content. - */ - PAGE = 'Page', - - /** - * Represents a calendar event in SharePoint. - */ - EVENT = 'Event', - - /** - * Represents a file stored in SharePoint document libraries. - */ - FILE = 'File', -} - -/** - * Defines the crawling filters for SharePoint data ingestion. These filters allow - * you to specify which content should be included or excluded during the crawling process. - * If you specify an inclusion and exclusion filter and both match a document, - * the exclusion filter takes precedence and the document isn’t crawled. - */ -export interface SharePointCrawlingFilters { - /** - * The SharePoint object type this filter applies to. - */ - readonly objectType: SharePointObjectType; - /** - * Optional array of regular expression patterns to include specific content. - * Only content matching these patterns will be crawled. - * @example ['.*public.*', '.*shared.*'] - */ - readonly includePatterns?: string[]; - /** - * Optional array of regular expression patterns to exclude specific content. - * Content matching these patterns will be skipped during crawling. - * @example ['.*private.*', '.*confidential.*'] - */ - readonly excludePatterns?: string[]; -} - -/** - * Interface to add a new data source to an existing KB - */ -export interface SharePointDataSourceAssociationProps extends DataSourceAssociationProps { - /** - * The domain of your SharePoint instance or site URL/URLs. - * @example "yourdomain" - */ - readonly domain: string; - /** - * The SharePoint site URL/URLs. - * Must start with “https”. All URLs must start with same protocol. - * @example ["https://yourdomain.sharepoint.com/sites/mysite"] - */ - readonly siteUrls: string[]; - /** - * The identifier of your Microsoft 365 tenant. - * @example "d1c035a6-1dcf-457d-97e3" - */ - readonly tenantId: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials - * for your Sharepoint instance URL. Secret must start with "AmazonBedrock-". - */ - readonly authSecret: ISecret; - /** - * The filters (regular expression patterns) for the crawling. - * If there's a conflict, the exclude pattern takes precedence. - * @default None - all your content is crawled. - */ - readonly filters?: SharePointCrawlingFilters[]; -} - -/** - * Interface to create a new standalone data source object - */ -export interface SharePointDataSourceProps extends SharePointDataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up an data source to be added to a knowledge base. - */ -export class SharePointDataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - /** - * The domain name of your SharePoint instance. - */ - public readonly domain: string; - /** - * The AWS Secrets Manager secret that stores your authentication credentials. - */ - public readonly authSecret: ISecret; - /** - * The SharePoint site URL/URLs. - */ - public readonly siteUrls: string[]; - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: SharePointDataSourceProps) { - super(scope, id); - // Assign attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.SHAREPOINT; - this.dataSourceName = - props.dataSourceName ?? - this.generatePhysicalName() + '-sharepoint-ds'; - this.siteUrls = props.siteUrls; - this.domain = props.domain; - this.authSecret = props.authSecret; - this.kmsKey = props.kmsKey; - - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - this.authSecret.grantRead(this.knowledgeBase.role); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - sharePointConfiguration: { - sourceConfiguration: { - authType: SharePointDataSourceAuthType.OAUTH2_CLIENT_CREDENTIALS, - credentialsSecretArn: this.authSecret.secretArn, - hostType: 'ONLINE', - domain: props.domain, - siteUrls: this.siteUrls, - tenantId: props.tenantId, - }, - crawlerConfiguration: props.filters - ? { - filterConfiguration: { - type: 'PATTERN', - patternObjectFilter: { - filters: props.filters?.map(item => ({ - objectType: item.objectType, - inclusionFilters: item.includePatterns, - exclusionFilters: item.excludePatterns, - })), - }, - }, - } - : undefined, - }, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts deleted file mode 100644 index 78a4325db211e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/data-sources/web-crawler-data-source.ts +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnDataSource } from 'aws-cdk-lib/aws-bedrock'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { Construct } from 'constructs'; - -import { IKnowledgeBase } from './../knowledge-bases/knowledge-base'; -import { DataSourceNew, DataSourceAssociationProps, DataSourceType } from './base-data-source'; -/** - * The scope of the crawling. - */ -export enum CrawlingScope { - /** - * Crawls only web pages that belong to the same host or primary domain. - */ - HOST_ONLY = 'HOST_ONLY', - /** - * Includes subdomains in addition to the host or primary domain, i.e. - * web pages that contain "aws.amazon.com" can also include - * sub domain "docs.aws.amazon.com" - */ - SUBDOMAINS = 'SUBDOMAINS', - /** - * Limit crawling to web pages that belong to the same host and with the - * same initial URL path. - */ - DEFAULT = 'DEFAULT', -} - -/** - * The filters (regular expression patterns) to include or exclude in the crawling - * in accordance with your scope. - */ -export interface CrawlingFilters { - /** - * Include patterns. - */ - readonly includePatterns?: string[]; - /** - * Exclude paths. - */ - readonly excludePatterns?: string[]; -} - -/** - * Interface to add a new data source to an existing KB. - */ -export interface WebCrawlerDataSourceAssociationProps extends DataSourceAssociationProps { - /** - * The source urls in the format `https://www.sitename.com`. - * Maximum of 100 URLs. - */ - readonly sourceUrls: string[]; - /** - * The scope of the crawling. - * @default - CrawlingScope.DEFAULT - */ - readonly crawlingScope?: CrawlingScope; - /** - * The max rate at which pages are crawled, up to 300 per minute per host. - * Higher values will decrease sync time but increase the load on the host. - * @default 300 - */ - readonly crawlingRate?: number; - /** - * The filters (regular expression patterns) for the crawling. - * If there's a conflict, the exclude pattern takes precedence. - * @default None - */ - readonly filters?: CrawlingFilters; - /** - * The user agent string to use when crawling. - * @default - Default user agent string - */ - readonly userAgent?: string; - /** - * The user agent header to use when crawling. A string used for identifying - * the crawler or bot when it accesses a web server. The user agent header value - * consists of the bedrockbot, UUID, and a user agent suffix for your crawler (if one is provided). - * By default, it is set to bedrockbot_UUID. You can optionally append a custom suffix to bedrockbot_UUID - * to allowlist a specific user agent permitted to access your source URLs. - * @default - Default user agent header (bedrockbot_UUID) - */ - readonly userAgentHeader?: string; - /** - * The maximum number of pages to crawl. The max number of web pages crawled from your source URLs, - * up to 25,000 pages. If the web pages exceed this limit, the data source sync will fail and - * no web pages will be ingested. - * @default - No limit - */ - readonly maxPages?: number; -} - -/** - * Interface to create a new standalone data source object. - */ -export interface WebCrawlerDataSourceProps extends WebCrawlerDataSourceAssociationProps { - /** - * The knowledge base to associate with the data source. - */ - readonly knowledgeBase: IKnowledgeBase; -} - -/** - * Sets up a web crawler data source to be added to a knowledge base. - */ -export class WebCrawlerDataSource extends DataSourceNew { - // ------------------------------------------------------ - // Common attributes for all new data sources - // ------------------------------------------------------ - /** - * The unique identifier of the data source. - * @example 'JHUEVXUZMU' - */ - public readonly dataSourceId: string; - /** - * The type of data source. - */ - public readonly dataSourceType: DataSourceType; - /** - * The name of the data source. - */ - public readonly dataSourceName: string; - /** - * The knowledge base associated with the data source. - */ - public readonly knowledgeBase: IKnowledgeBase; - /** - * The KMS key to use to encrypt the data source. - */ - public readonly kmsKey?: IKey; - // ------------------------------------------------------ - // Unique to this class - // ------------------------------------------------------ - /** - * The max rate at which pages are crawled. - */ - public readonly siteUrls: string[]; - /** - * The max rate at which pages are crawled. - */ - public readonly crawlingRate: number; - /** - * The maximum number of pages to crawl. - */ - public readonly maxPages: number; - // ------------------------------------------------------ - // Internal Only - // ------------------------------------------------------ - /** - * The Data Source cfn resource. - */ - private readonly __resource: CfnDataSource; - - constructor(scope: Construct, id: string, props: WebCrawlerDataSourceProps) { - super(scope, id); - // Assign attributes - this.knowledgeBase = props.knowledgeBase; - this.dataSourceType = DataSourceType.WEB_CRAWLER; - this.dataSourceName = - props.dataSourceName ?? - this.generatePhysicalName() + '-crawler-ds'; - this.kmsKey = props.kmsKey; - this.crawlingRate = props.crawlingRate ?? 300; - this.siteUrls = props.sourceUrls; - this.maxPages = props.maxPages ?? 25000; - // ------------------------------------------------------ - // Manage permissions for the data source - // ------------------------------------------------------ - this.handleCommonPermissions(props); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - - this.__resource = new CfnDataSource(this, 'DataSource', { - ...this.formatAsCfnProps(props, { - type: this.dataSourceType, - webConfiguration: { - crawlerConfiguration: { - crawlerLimits: { - rateLimit: this.crawlingRate, - maxPages: this.maxPages, - }, - scope: props.crawlingScope !== CrawlingScope.DEFAULT ? props.crawlingScope : undefined, - inclusionFilters: props.filters?.includePatterns, - exclusionFilters: props.filters?.excludePatterns, - userAgent: props.userAgent, - userAgentHeader: props.userAgentHeader, - }, - sourceConfiguration: { - urlConfiguration: { - seedUrls: props.sourceUrls.map(item => ({ url: item })), - }, - }, - }, - }), - }); - - this.dataSourceId = this.__resource.attrDataSourceId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts deleted file mode 100644 index 930aff5c9e702..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-filters.ts +++ /dev/null @@ -1,517 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -/****************************************************************************** - * CONTENT FILTERS - *****************************************************************************/ -/** - * The strength of the content filter. As you increase the filter strength, - * the likelihood of filtering harmful content increases and the probability - * of seeing harmful content in your application reduces. - */ -export enum ContentFilterStrength { - NONE = 'NONE', - LOW = 'LOW', - MEDIUM = 'MEDIUM', - HIGH = 'HIGH', -} - -/** - * The type of harmful category usable in a content filter. - */ -export enum ContentFilterType { - /** - * Describes input prompts and model responses that indicates sexual interest, activity, - * or arousal using direct or indirect references to body parts, physical traits, or sex. - */ - SEXUAL = 'SEXUAL', - /** - * Describes input prompts and model responses that includes glorification of or threats - * to inflict physical pain, hurt, or injury toward a person, group or thing. - */ - VIOLENCE = 'VIOLENCE', - /** - * Describes input prompts and model responses that discriminate, criticize, insult, - * denounce, or dehumanize a person or group on the basis of an identity (such as race, - * ethnicity, gender, religion, sexual orientation, ability, and national origin). - */ - HATE = 'HATE', - /** - * Describes input prompts and model responses that includes demeaning, humiliating, - * mocking, insulting, or belittling language. This type of language is also labeled - * as bullying. - */ - INSULTS = 'INSULTS', - /** - * Describes input prompts and model responses that seeks or provides information - * about engaging in misconduct activity, or harming, defrauding, or taking advantage - * of a person, group or institution. - */ - MISCONDUCT = 'MISCONDUCT', - /** - * Enable to detect and block user inputs attempting to override system instructions. - * To avoid misclassifying system prompts as a prompt attack and ensure that the filters - * are selectively applied to user inputs, use input tagging. - */ - PROMPT_ATTACK = 'PROMPT_ATTACK', -} - -/** - * Interface to declare a content filter. - */ -export interface ContentFilter { - /** - * The type of harmful category that the content filter is applied to - */ - readonly type: ContentFilterType; - /** - * The strength of the content filter to apply to prompts / user input. - */ - readonly inputStrength: ContentFilterStrength; - /** - * The strength of the content filter to apply to model responses. - */ - readonly outputStrength: ContentFilterStrength; -} - -/****************************************************************************** - * TOPIC FILTERS - *****************************************************************************/ -/** - * Interface for creating a custom Topic - */ -export interface CustomTopicProps { - /** - * The name of the topic to deny. - */ - readonly name: string; - /** - * Provide a clear definition to detect and block user inputs and FM responses - * that fall into this topic. Avoid starting with "don't". - * @example `Investment advice refers to inquiries, guidance, or recommendations - * regarding the management or allocation of funds or assets with the goal of - * generating returns or achieving specific financial objectives.` - */ - readonly definition: string; - /** - * Representative phrases that refer to the topic. These phrases can represent - * a user input or a model response. Add up to 5 phrases, up to 100 characters - * each. - * @example "Where should I invest my money?" - */ - readonly examples: string[]; -} - -/** - * Defines a topic to deny. - */ -export class Topic { - public static readonly FINANCIAL_ADVICE = new Topic({ - name: 'Financial_Advice', - definition: - "'Discussions that involve providing guidance, recommendations, or suggestions related to managing, investing, or handling finances, investments, or assets.", - examples: [ - 'Can you suggest some good stocks to invest in right now?', - "What's the best way to save for retirement?", - 'Should I put my money in a high-risk investment?', - 'How can I maximize my returns on investments?', - 'Is it a good time to buy real estate?', - ], - }); - - public static readonly POLITICAL_ADVICE = new Topic({ - name: 'Political_Advice', - definition: - 'Conversations that express views, opinions, or endorsements related to political parties, political ideologies, elections, or political figures.', - examples: [ - "What's your stance on the current government policies?", - 'Do you support party X or Y in the upcoming election?', - 'Can you tell me which political party is better?', - 'What do you think about the new policy introduced by the president?', - 'Should I vote for this candidate?', - ], - }); - - public static readonly MEDICAL_ADVICE = new Topic({ - name: 'Medical_Advice', - definition: - 'Providing recommendations, diagnosis, treatment options, or guidance on medical conditions, symptoms, medications, or health-related issues.', - examples: [ - 'What should I do to treat a persistent cough?', - 'Can you recommend some medication for my headache?', - 'What are the symptoms of a specific medical condition?', - 'Is this drug effective for treating my illness?', - "Do I need to see a doctor for this pain I'm experiencing?", - ], - }); - - public static readonly INAPPROPRIATE_CONTENT = new Topic({ - name: 'Inappropriate_Content', - definition: - 'Any discussions or references that include hate speech, discriminatory remarks, sexual content, or explicit language.', - examples: [ - 'Why are people from X country so [discriminatory remark]?', - 'Can you tell me a dirty joke?', - '[Use of explicit language]', - 'This service is as bad as [hate speech].', - 'Do you have any adult content or products?', - ], - }); - - public static readonly LEGAL_ADVICE = new Topic({ - name: 'Legal_Advice', - definition: - 'Offering guidance or suggestions on legal matters, legal actions, interpretation of laws, or legal rights and responsibilities.', - examples: [ - 'Can I sue someone for this?', - 'What are my legal rights in this situation?', - 'Is this action against the law?', - 'What should I do to file a legal complaint?', - 'Can you explain this law to me?', - ], - }); - - public static custom(props: CustomTopicProps) { - return new Topic(props); - } - - /** - * The name of the topic to deny. - */ - readonly name: string; - /** - * Definition of the topic. - */ - readonly definition: string; - /** - * Representative phrases that refer to the topic. - */ - readonly examples?: string[]; - - protected constructor(props: CustomTopicProps) { - (this.name = props.name), (this.definition = props.definition), (this.examples = props.examples); - } -} - -/****************************************************************************** - * WORD FILTERS - *****************************************************************************/ -/** - * The managed word type filter available for guardrails. - */ -export enum ManagedWordFilterType { - PROFANITY = 'PROFANITY', -} - -/****************************************************************************** - * SENSITIVE INFORMATION FILTERS - PII - *****************************************************************************/ -export namespace PIIType { - /** - * Types of PII that are general, and not domain-specific. - */ - export enum General { - /** - * A physical address, such as "100 Main Street, Anytown, USA" or "Suite #12, - * Building 123". An address can include information such as the street, building, - * location, city, state, country, county, zip code, precinct, and neighborhood. - */ - ADDRESS = 'ADDRESS', - /** - * An individual's age, including the quantity and unit of time. - */ - AGE = 'AGE', - /** - * The number assigned to a driver's license, which is an official document - * permitting an individual to operate one or more motorized vehicles on a - * public road. A driver's license number consists of alphanumeric characters. - */ - DRIVER_ID = 'DRIVER_ID', - /** - * An email address, such as marymajor@email.com. - */ - EMAIL = 'EMAIL', - /** - * A license plate for a vehicle is issued by the state or country where the - * vehicle is registered. The format for passenger vehicles is typically five - * to eight digits, consisting of upper-case letters and numbers. The format - * varies depending on the location of the issuing state or country. - */ - LICENSE_PLATE = 'LICENSE_PLATE', - /** - * An individual's name. This entity type does not include titles, such as Dr., - * Mr., Mrs., or Miss. - */ - NAME = 'NAME', - /** - * An alphanumeric string that is used as a password, such as "*very20special#pass*". - */ - PASSWORD = 'PASSWORD', - /** - * A phone number. This entity type also includes fax and pager numbers. - */ - PHONE = 'PHONE', - /** - * A user name that identifies an account, such as a login name, screen name, - * nick name, or handle. - */ - USERNAME = 'USERNAME', - /** - * A Vehicle Identification Number (VIN) uniquely identifies a vehicle. VIN - * content and format are defined in the ISO 3779 specification. Each country - * has specific codes and formats for VINs. - */ - VEHICLE_IDENTIFICATION_NUMBER = 'VEHICLE_IDENTIFICATION_NUMBER', - } - - /** - * Types of PII in the domain of Finance. - */ - export enum Finance { - /** - * A three-digit card verification code (CVV) that is present on VISA, MasterCard, - * and Discover credit and debit cards. For American Express credit or debit cards, - * the CVV is a four-digit numeric code. - */ - CREDIT_DEBIT_CARD_CVV = 'CREDIT_DEBIT_CARD_CVV', - /** - * The expiration date for a credit or debit card. This number is usually four digits - * long and is often formatted as month/year or MM/YY. Guardrails recognizes expiration - * dates such as 01/21, 01/2021, and Jan 2021. - */ - CREDIT_DEBIT_CARD_EXPIRY = 'CREDIT_DEBIT_CARD_EXPIRY', - /** - * The number for a credit or debit card. These numbers can vary from 13 to 16 digits - * in length. - */ - CREDIT_DEBIT_CARD_NUMBER = 'CREDIT_DEBIT_CARD_NUMBER', - /** - * A four-digit personal identification number (PIN) with which you can access your - * bank account. - */ - PIN = 'PIN', - /** - * A SWIFT code is a standard format of Bank Identifier Code (BIC) used to specify a - * particular bank or branch. Banks use these codes for money transfers such as - * international wire transfers. SWIFT codes consist of eight or 11 characters. - */ - SWIFT_CODE = 'SWIFT_CODE', - /** - * An International Bank Account Number (IBAN). It has specific formats in each country. - */ - INTERNATIONAL_BANK_ACCOUNT_NUMBER = 'INTERNATIONAL_BANK_ACCOUNT_NUMBER', - } - - /** - * Types of PII in the domain of IT (Information Technology). - */ - export enum InformationTechnology { - /** - * A web address, such as www.example.com. - */ - URL = 'URL', - /** - * An IPv4 address, such as 198.51.100.0. - */ - IP_ADDRESS = 'IP_ADDRESS', - /** - * A media access control (MAC) address assigned to a network interface. - */ - MAC_ADDRESS = 'MAC_ADDRESS', - /** - * A unique identifier that's associated with a secret access key. You use - * the access key ID and secret access key to sign programmatic AWS requests - * cryptographically. - */ - AWS_ACCESS_KEY = 'AWS_ACCESS_KEY', - /** - * A unique identifier that's associated with a secret access key. You use - * the access key ID and secret access key to sign programmatic AWS requests - * cryptographically. - */ - AWS_SECRET_KEY = 'AWS_SECRET_KEY', - } - - /** - * Types of PII specific to the USA. - */ - export enum USASpecific { - /** - * A US bank account number, which is typically 10 to 12 digits long. - */ - US_BANK_ACCOUNT_NUMBER = 'US_BANK_ACCOUNT_NUMBER', - /** - * A US bank account routing number. These are typically nine digits long. - */ - US_BANK_ROUTING_NUMBER = 'US_BANK_ROUTING_NUMBER', - /** - * A US Individual Taxpayer Identification Number (ITIN) is a nine-digit number - * that starts with a "9" and contain a "7" or "8" as the fourth digit. - */ - US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER = 'US_INDIVIDUAL_TAX_IDENTIFICATION_NUMBER', - /** - * A US passport number. Passport numbers range from six to nine alphanumeric characters. - */ - US_PASSPORT_NUMBER = 'US_PASSPORT_NUMBER', - /** - * A US Social Security Number (SSN) is a nine-digit number that is issued to US citizens, - * permanent residents, and temporary working residents. - */ - US_SOCIAL_SECURITY_NUMBER = 'US_SOCIAL_SECURITY_NUMBER', - } - - /** - * Types of PII specific to Canada. - */ - export enum CanadaSpecific { - /** - * A Canadian Health Service Number is a 10-digit unique identifier, - * required for individuals to access healthcare benefits. - */ - CA_HEALTH_NUMBER = 'CA_HEALTH_NUMBER', - /** - * A Canadian Social Insurance Number (SIN) is a nine-digit unique identifier, - * required for individuals to access government programs and benefits. - */ - CA_SOCIAL_INSURANCE_NUMBER = 'CA_SOCIAL_INSURANCE_NUMBER', - } - - /** - * Types of PII specific to the United Kingdom (UK). - */ - export enum UKSpecific { - /** - * A UK National Health Service Number is a 10-17 digit number, such as 485 777 3456. - */ - UK_NATIONAL_HEALTH_SERVICE_NUMBER = 'UK_NATIONAL_HEALTH_SERVICE_NUMBER', - /** - * A UK National Insurance Number (NINO) provides individuals with access to National - * Insurance (social security) benefits. It is also used for some purposes in the UK - * tax system. - */ - UK_NATIONAL_INSURANCE_NUMBER = 'UK_NATIONAL_INSURANCE_NUMBER', - /** - * A UK Unique Taxpayer Reference (UTR) is a 10-digit number that identifies a - * taxpayer or a business. - */ - UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER = 'UK_UNIQUE_TAXPAYER_REFERENCE_NUMBER', - } -} - -/** - * Guardrail action when a sensitive entity is detected. - */ -export enum GuardrailAction { - /** - * If sensitive information is detected in the prompt or response, the guardrail - * blocks all the content and returns a message that you configure. - */ - BLOCK = 'BLOCK', - /** - * If sensitive information is detected in the model response, the guardrail masks - * it with an identifier, the sensitive information is masked and replaced with - * identifier tags (for example: [NAME-1], [NAME-2], [EMAIL-1], etc.). - */ - ANONYMIZE = 'ANONYMIZE', -} - -/** - * Interface to define a PII Filter. - */ -export interface PIIFilter { - /** - * The type of PII to filter. - */ - readonly type: - | PIIType.General - | PIIType.Finance - | PIIType.InformationTechnology - | PIIType.USASpecific - | PIIType.CanadaSpecific - | PIIType.UKSpecific; - /** - * The action to take when PII is detected. - */ - readonly action: GuardrailAction; -} - -/****************************************************************************** - * SENSITIVE INFORMATION FILTERS - REGEX - *****************************************************************************/ -/** - * A Regular expression (regex) filter for sensitive information. - * - * @example - * const regexFilter: RegexFilter = { - * name: "my-custom-filter", - * action: SensitiveInfoGuardrailAction.BLOCK, - * pattern: "\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b", - * }; - */ -export interface RegexFilter { - /** - * The name of the regex filter. - */ - readonly name: string; - /** - * The description of the regex filter. - */ - readonly description?: string; - /** - * The action to take when a regex match is detected. - */ - readonly action: GuardrailAction; - /** - * The regular expression pattern to match. - */ - readonly pattern: string; -} - -/****************************************************************************** - * CONTEXTUAL GROUNDING FILTERS - *****************************************************************************/ -/** - * The type of contextual grounding filter. - */ -export enum ContextualGroundingFilterType { - /** - * Grounding score represents the confidence that the model response is factually - * correct and grounded in the source. If the model response has a lower score than - * the defined threshold, the response will be blocked and the configured blocked - * message will be returned to the user. A higher threshold level blocks more responses. - */ - GROUNDING = 'GROUNDING', - /** - * Relevance score represents the confidence that the model response is relevant - * to the user's query. If the model response has a lower score than the defined - * threshold, the response will be blocked and the configured blocked message will - * be returned to the user. A higher threshold level blocks more responses. - */ - RELEVANCE = 'RELEVANCE', -} - -/** - * Interface to define a Contextual Grounding Filter. - */ -export interface ContextualGroundingFilter { - /** - * The type of contextual grounding filter. - */ - readonly type: ContextualGroundingFilterType; - /** - * The threshold for the contextual grounding filter. - * - `0` (blocks nothing) - * - `0.99` (blocks almost everything) - */ - readonly threshold: number; -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts deleted file mode 100644 index 26ebcc3bf3dea..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrail-version.ts +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { IResource, Resource } from 'aws-cdk-lib'; -import { CfnGuardrailVersion } from 'aws-cdk-lib/aws-bedrock'; -import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; -import { Construct } from 'constructs'; -import { Guardrail, IGuardrail } from './guardrails'; - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Represents a Guardrail Version, either created with CDK or imported. - */ -export interface IGuardrailVersion extends IResource { - /** - * The Guardrail to which this version belongs. - */ - readonly guardrail: IGuardrail; - - /** - * The ID of the guardrail version. - * @example "1" - */ - readonly guardrailVersion: string; -} - -/****************************************************************************** - * ABSTRACT BASE CLASS - *****************************************************************************/ - -/** - * Abstract base class for a Guardrail Version. - * Contains methods and attributes valid for Guardrail Versions either created - * with CDK or imported. - */ -export abstract class GuardrailVersionBase extends Resource implements IGuardrailVersion { - public abstract readonly guardrail: IGuardrail; - public abstract readonly guardrailVersion: string; - constructor(scope: Construct, id: string) { - super(scope, id); - } -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for creating a CDK-Managed Guardrail Version. - */ - -/** - * Properties for creating a Guardrail Version. - */ -export interface GuardrailVersionProps { - /** - * The guardrail to create a version for. - */ - readonly guardrail: IGuardrail; - /** - * The description of the guardrail version. - * - * @example "This is a description of the guardrail version." - * @default - No description is provided. - */ - readonly description?: string; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -/** - * Attributes needed to create an import - */ -export interface GuardrailVersionAttributes { - /** - * The ARN of the guardrail. - * @example "arn:aws:bedrock:us-east-1:123456789012:guardrail/yympzo398ipq" - */ - readonly guardrailArn: string; - /** - * The ID of the guardrail version. - * @example "1" - */ - readonly guardrailVersion: string; -} -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Class to create a Guardrail Version with CDK. - * @cloudformationResource AWS::Bedrock::GuardrailVersion - */ -export class GuardrailVersion extends GuardrailVersionBase { - /** - * Import a Guardrail Version from its attributes. - */ - public static fromGuardrailVersionAttributes( - scope: Construct, - id: string, - attrs: GuardrailVersionAttributes, - ): IGuardrailVersion { - class Import extends GuardrailVersionBase { - public readonly guardrail = Guardrail.fromGuardrailAttributes(scope, `Guardrail-${id}`, { - guardrailArn: attrs.guardrailArn, - guardrailVersion: attrs.guardrailVersion, - }); - public readonly guardrailVersion = attrs.guardrailVersion; - } - return new Import(scope, id); - } - - public readonly guardrail: IGuardrail; - public readonly guardrailVersion: string; - /** - * The underlying CfnGuardrailVersion resource. - */ - private readonly _resource: CfnGuardrailVersion; - - /** - * - */ - constructor(scope: Construct, id: string, props: GuardrailVersionProps) { - super(scope, id); - this.guardrail = props.guardrail; - - // Compute hash from guardrail, to recreate the resource when guardrail has changed - const hash = md5hash(props.guardrail.lastUpdated ?? 'Default'); - - this._resource = new CfnGuardrailVersion(this, `GuardrailVersion-${hash.slice(0, 16)}`, { - guardrailIdentifier: this.guardrail.guardrailId, - description: props.description, - }); - - this.guardrailVersion = this._resource.attrVersion; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts deleted file mode 100644 index 4f9e29a0117dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/guardrails/guardrails.ts +++ /dev/null @@ -1,791 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import * as fs from 'fs'; -import { Arn, ArnFormat, IResolvable, IResource, Lazy, Resource } from 'aws-cdk-lib'; -import * as bedrock from 'aws-cdk-lib/aws-bedrock'; -import { Metric, MetricOptions, MetricProps } from 'aws-cdk-lib/aws-cloudwatch'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { IKey, Key } from 'aws-cdk-lib/aws-kms'; -import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; -import { Construct } from 'constructs'; -import * as filters from './guardrail-filters'; - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Represents a Guardrail, either created with CDK or imported. - */ -export interface IGuardrail extends IResource { - /** - * The ARN of the guardrail. - * @example "arn:aws:bedrock:us-east-1:123456789012:guardrail/yympzo398ipq" - * @attribute - */ - readonly guardrailArn: string; - /** - * The ID of the guardrail. - * @example "yympzo398ipq" - * @attribute - */ - readonly guardrailId: string; - /** - * Optional KMS encryption key associated with this guardrail - */ - readonly kmsKey?: IKey; - /** - * When this guardrail was last updated. - */ - readonly lastUpdated?: string; - /** - * The version of the guardrail. If no explicit version is created, - * this will default to "DRAFT" - */ - guardrailVersion: string; - - /** - * Grant the given principal identity permissions to perform actions on this guardrail. - */ - grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant; - /** - * Grant the given identity permissions to apply the guardrail. - */ - grantApply(grantee: iam.IGrantable): iam.Grant; - - /** - * Return the given named metric for this guardrail. - */ - metric(metricName: string, props?: MetricOptions): Metric; - - /** - * Return the invocations metric for this guardrail. - */ - metricInvocations(props?: MetricOptions): Metric; - - /** - * Return the invocation latency metric for this guardrail. - */ - metricInvocationLatency(props?: MetricOptions): Metric; - - /** - * Return the invocation client errors metric for this guardrail. - */ - metricInvocationClientErrors(props?: MetricOptions): Metric; - - /** - * Return the invocation server errors metric for this guardrail. - */ - metricInvocationServerErrors(props?: MetricOptions): Metric; - - /** - * Return the invocation throttles metric for this guardrail. - */ - metricInvocationThrottles(props?: MetricOptions): Metric; - - /** - * Return the text unit count metric for this guardrail. - */ - metricTextUnitCount(props?: MetricOptions): Metric; - - /** - * Return the invocations intervened metric for this guardrail. - */ - metricInvocationsIntervened(props?: MetricOptions): Metric; -} - -/** - * Abstract base class for a Guardrail. - * Contains methods and attributes valid for Guardrails either created with CDK or imported. - */ -export abstract class GuardrailBase extends Resource implements IGuardrail { - /** - * Return the given named metric for all guardrails. - * - * By default, the metric will be calculated as a sum over a period of 5 minutes. - * You can customize this by using the `statistic` and `period` properties. - */ - public static metricAll(metricName: string, props?: MetricOptions): Metric { - return new Metric({ - namespace: 'AWS/Bedrock/Guardrails', - dimensionsMap: { Operation: 'ApplyGuardrail' }, - metricName, - ...props, - }); - } - - /** - * Return the invocations metric for all guardrails. - */ - public static metricAllInvocations(props?: MetricOptions): Metric { - return this.metricAll('Invocations', props); - } - - /** - * Return the text unit count metric for all guardrails. - */ - public static metricAllTextUnitCount(props?: MetricOptions): Metric { - return this.metricAll('TextUnitCount', props); - } - - /** - * Return the invocations intervened metric for all guardrails. - */ - public static metricAllInvocationsIntervened(props?: MetricOptions): Metric { - return this.metricAll('InvocationsIntervened', props); - } - - /** - * Return the invocation latency metric for all guardrails. - */ - public static metricAllInvocationLatency(props?: MetricOptions): Metric { - return this.metricAll('InvocationLatency', props); - } - - /** - * The ARN of the guardrail. - */ - public abstract readonly guardrailArn: string; - /** - * The ID of the guardrail. - */ - public abstract readonly guardrailId: string; - /** - * The ID of the guardrail. - */ - public abstract guardrailVersion: string; - /** - * The KMS key of the guardrail if custom encryption is configured. - */ - public abstract readonly kmsKey?: IKey; - /** - * When this guardrail was last updated - */ - public abstract readonly lastUpdated?: string; - /** - * Grant the given principal identity permissions to perform actions on this agent alias. - */ - public grant(grantee: iam.IGrantable, ...actions: string[]) { - return iam.Grant.addToPrincipal({ - grantee, - actions, - resourceArns: [this.guardrailArn], - scope: this, - }); - } - /** - * Grant the given identity permissions to apply the guardrail. - */ - public grantApply(grantee: iam.IGrantable): iam.Grant { - const baseGrant = this.grant(grantee, 'bedrock:ApplyGuardrail'); - - if (this.kmsKey) { - // If KMS key exists, create encryption grant and combine with base grant - const kmsGrant = this.kmsKey.grantEncryptDecrypt(grantee); - return kmsGrant.combine(baseGrant); - } else { - // If no KMS key exists, return only the base grant - return baseGrant; - } - } - - /** - * Return the given named metric for this guardrail. - * - * By default, the metric will be calculated as a sum over a period of 5 minutes. - * You can customize this by using the `statistic` and `period` properties. - */ - public metric(metricName: string, props?: MetricOptions): Metric { - const metricProps: MetricProps = { - namespace: 'AWS/Bedrock/Guardrails', - metricName, - dimensionsMap: { GuardrailArn: this.guardrailArn, GuardrailVersion: this.guardrailVersion }, - ...props, - }; - return this.configureMetric(metricProps); - } - - /** - * Return the invocations metric for this guardrail. - */ - public metricInvocations(props?: MetricOptions): Metric { - return this.metric('Invocations', props); - } - - /** - * Return the invocation latency metric for this guardrail. - */ - public metricInvocationLatency(props?: MetricOptions): Metric { - return this.metric('InvocationLatency', props); - } - - /** - * Return the invocation client errors metric for this guardrail. - */ - public metricInvocationClientErrors(props?: MetricOptions): Metric { - return this.metric('InvocationClientErrors', props); - } - - /** - * Return the invocation server errors metric for this guardrail. - */ - public metricInvocationServerErrors(props?: MetricOptions): Metric { - return this.metric('InvocationServerErrors', props); - } - - /** - * Return the invocation throttles metric for this guardrail. - */ - public metricInvocationThrottles(props?: MetricOptions): Metric { - return this.metric('InvocationThrottles', props); - } - - /** - * Return the text unit count metric for this guardrail. - */ - public metricTextUnitCount(props?: MetricOptions): Metric { - return this.metric('TextUnitCount', props); - } - - /** - * Return the invocations intervened metric for this guardrail. - */ - public metricInvocationsIntervened(props?: MetricOptions): Metric { - return this.metric('InvocationsIntervened', props); - } - - private configureMetric(props: MetricProps) { - return new Metric({ - ...props, - region: props?.region ?? this.stack.region, - account: props?.account ?? this.stack.account, - }); - } -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for creating a Guardrail. - */ -export interface GuardrailProps { - /** - * The name of the guardrail. - */ - readonly name: string; - /** - * The description of the guardrail. - */ - readonly description?: string; - /** - * The message to return when the guardrail blocks a prompt. - * - * @default "Sorry, your query violates our usage policy." - */ - readonly blockedInputMessaging?: string; - /** - * The message to return when the guardrail blocks a model response. - * - * @default "Sorry, I am unable to answer your question because of our usage policy." - */ - readonly blockedOutputsMessaging?: string; - /** - * A custom KMS key to use for encrypting data. - * - * @default "Your data is encrypted by default with a key that AWS owns and manages for you." - */ - readonly kmsKey?: IKey; - /** - * The content filters to apply to the guardrail. - * Note, if one of - */ - readonly contentFilters?: filters.ContentFilter[]; - /** - * Up to 30 denied topics to block user inputs or model responses associated with the topic. - */ - readonly deniedTopics?: filters.Topic[]; - /** - * The word filters to apply to the guardrail. - */ - readonly wordFilters?: string[]; - /** - * The managed word filters to apply to the guardrail. - */ - readonly managedWordListFilters?: filters.ManagedWordFilterType[]; - /** - * The PII filters to apply to the guardrail. - */ - readonly piiFilters?: filters.PIIFilter[]; - /** - * The regular expression (regex) filters to apply to the guardrail. - */ - readonly regexFilters?: filters.RegexFilter[]; - /** - * The contextual grounding filters to apply to the guardrail. - */ - readonly contextualGroundingFilters?: filters.ContextualGroundingFilter[]; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -export interface GuardrailAttributes { - /** - * The ARN of the guardrail. At least one of guardrailArn or guardrailId must be - * defined in order to initialize a guardrail ref. - */ - readonly guardrailArn: string; - /** - * The KMS key of the guardrail if custom encryption is configured. - * - * @default undefined - Means data is encrypted by default with a AWS-managed key - */ - readonly kmsKey?: IKey; - /** - * The version of the guardrail. - * - * @default "DRAFT" - */ - readonly guardrailVersion?: string; -} - -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Class to create a Guardrail with CDK. - * @cloudformationResource AWS::Bedrock::Guardrail - */ -export class Guardrail extends GuardrailBase { - /** - * Import a guardrail given its attributes - */ - public static fromGuardrailAttributes(scope: Construct, id: string, attrs: GuardrailAttributes): IGuardrail { - class Import extends GuardrailBase { - public readonly guardrailArn = attrs.guardrailArn; - public readonly guardrailId = Arn.split(attrs.guardrailArn, ArnFormat.SLASH_RESOURCE_NAME).resourceName!; - public readonly guardrailVersion = attrs.guardrailVersion ?? 'DRAFT'; - public readonly kmsKey = attrs.kmsKey; - public readonly lastUpdated = undefined; - } - - return new Import(scope, id); - } - - /** - * Import a low-level L1 Cfn Guardrail - */ - public static fromCfnGuardrail(cfnGuardrail: bedrock.CfnGuardrail): IGuardrail { - return new (class extends GuardrailBase { - public readonly guardrailArn = cfnGuardrail.attrGuardrailArn; - public readonly guardrailId = cfnGuardrail.attrGuardrailId; - public readonly guardrailVersion = cfnGuardrail.attrVersion; - public readonly kmsKey = cfnGuardrail.kmsKeyArn - ? Key.fromKeyArn(this, '@FromCfnGuardrailKey', cfnGuardrail.kmsKeyArn) - : undefined; - public readonly lastUpdated = cfnGuardrail.attrUpdatedAt; - })(cfnGuardrail, '@FromCfnGuardrail'); - } - - /** - * The ARN of the guardrail. - */ - public readonly guardrailArn: string; - /** - * The ID of the guardrail. - */ - public readonly guardrailId: string; - /** - * The name of the guardrail. - */ - public readonly name: string; - /** - * The version of the guardrail. - * By default, this value will always be `DRAFT` unless an explicit version is created. - * For an explicit version created, this will usually be a number (e.g. for Version 1 just enter "1") - * - * @example "1" - * @default - "DRAFT" - */ - public guardrailVersion: string; - /** - * The KMS key used to encrypt data. - * - * @default undefined - "Data is encrypted by default with a key that AWS owns and manages for you" - */ - public readonly kmsKey?: IKey; - /** - * The content filters applied by the guardrail. - */ - public readonly contentFilters: filters.ContentFilter[]; - /** - * The PII filters applied by the guardrail. - */ - public readonly piiFilters: filters.PIIFilter[]; - /** - * The regex filters applied by the guardrail. - */ - public readonly regexFilters: filters.RegexFilter[]; - /** - * The denied topic filters applied by the guardrail. - */ - public readonly deniedTopics: filters.Topic[]; - /** - * The contextual grounding filters applied by the guardrail. - */ - public readonly contextualGroundingFilters: filters.ContextualGroundingFilter[]; - /** - * The word filters applied by the guardrail. - */ - public readonly wordFilters: string[]; - /** - * The managed word list filters applied by the guardrail. - */ - public readonly managedWordListFilters: filters.ManagedWordFilterType[]; - /** - * When this guardrail was last updated - */ - public readonly lastUpdated?: string; - /** - * The computed hash of the guardrail properties. - */ - public readonly hash: string; - /** - * The L1 representation of the guardrail - */ - private readonly __resource: bedrock.CfnGuardrail; - - constructor(scope: Construct, id: string, props: GuardrailProps) { - super(scope, id, { - physicalName: props.name, - }); - - // ------------------------------------------------------ - // Set properties or defaults - // ------------------------------------------------------ - this.name = this.physicalName; - this.contentFilters = props.contentFilters ?? []; - this.piiFilters = props.piiFilters ?? []; - this.regexFilters = props.regexFilters ?? []; - this.deniedTopics = props.deniedTopics ?? []; - this.contextualGroundingFilters = props.contextualGroundingFilters ?? []; - this.wordFilters = props.wordFilters ?? []; - this.managedWordListFilters = props.managedWordListFilters ?? []; - - const defaultBlockedInputMessaging = 'Sorry, your query violates our usage policy.'; - const defaultBlockedOutputsMessaging = 'Sorry, I am unable to answer your question because of our usage policy.'; - - // ------------------------------------------------------ - // CFN Props - With Lazy support - // ------------------------------------------------------ - let cfnProps: bedrock.CfnGuardrailProps = { - name: this.name, - description: props.description, - kmsKeyArn: props.kmsKey?.keyArn, - blockedInputMessaging: props.blockedInputMessaging ?? defaultBlockedInputMessaging, - blockedOutputsMessaging: props.blockedOutputsMessaging ?? defaultBlockedOutputsMessaging, - // Lazy props - contentPolicyConfig: this.generateCfnContentPolicyConfig(), - contextualGroundingPolicyConfig: this.generateCfnContextualPolicyConfig(), - topicPolicyConfig: this.generateCfnTopicPolicy(), - wordPolicyConfig: this.generateCfnWordPolicyConfig(), - sensitiveInformationPolicyConfig: this.generateCfnSensitiveInformationPolicyConfig(), - }; - - // Hash calculation useful for versioning of the guardrail - this.hash = md5hash(JSON.stringify(cfnProps)); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this.__resource = new bedrock.CfnGuardrail(this, 'MyGuardrail', cfnProps); - - this.guardrailId = this.__resource.attrGuardrailId; - this.guardrailArn = this.__resource.attrGuardrailArn; - this.guardrailVersion = this.__resource.attrVersion; - this.lastUpdated = this.__resource.attrUpdatedAt; - } - - // ------------------------------------------------------ - // METHODS - // ------------------------------------------------------ - /** - * Adds a content filter to the guardrail. - * @param filter The content filter to add. - */ - public addContentFilter(filter: filters.ContentFilter): void { - this.contentFilters.push(filter); - } - - /** - * Adds a PII filter to the guardrail. - * @param filter The PII filter to add. - */ - public addPIIFilter(filter: filters.PIIFilter): void { - this.piiFilters.push(filter); - } - - /** - * Adds a regex filter to the guardrail. - * @param filter The regex filter to add. - */ - public addRegexFilter(filter: filters.RegexFilter): void { - this.regexFilters.push(filter); - } - - /** - * Adds a denied topic filter to the guardrail. - * @param filter The denied topic filter to add. - */ - public addDeniedTopicFilter(filter: filters.Topic): void { - this.deniedTopics.push(filter); - } - - /** - * Adds a contextual grounding filter to the guardrail. - * @param filter The contextual grounding filter to add. - */ - public addContextualGroundingFilter(filter: filters.ContextualGroundingFilter): void { - this.contextualGroundingFilters.push(filter); - } - - /** - * Adds a word filter to the guardrail. - * @param filter The word filter to add. - */ - public addWordFilter(filter: string): void { - this.wordFilters.push(filter); - } - - /** - * Adds a word filter to the guardrail. - * @param filePath The location of the word filter file. - */ - public addWordFilterFromFile(filePath: string): void { - const fileContents = fs.readFileSync(filePath, 'utf8'); - const words = fileContents.trim().split(','); - for (const word of words) this.addWordFilter(word); - } - - /** - * Adds a managed word list filter to the guardrail. - * @param filter The managed word list filter to add. - */ - public addManagedWordListFilter(filter: filters.ManagedWordFilterType): void { - this.managedWordListFilters.push(filter); - } - - /** - * Create a version for the guardrail. - * @param description The description of the version. - * @returns The guardrail version. - */ - public createVersion(description?: string): string { - const cfnVersion = new bedrock.CfnGuardrailVersion(this, `GuardrailVersion-${this.hash.slice(0, 16)}`, { - description: description, - guardrailIdentifier: this.guardrailId, - }); - - this.guardrailVersion = cfnVersion.attrVersion; - return this.guardrailVersion; - } - - // ------------------------------------------------------ - // CFN Generators - // ------------------------------------------------------ - /** - * Returns the content filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnContentPolicyConfig(): IResolvable { - return Lazy.any({ - produce: () => { - if (this.contentFilters.length > 0) { - return { filtersConfig: this.contentFilters } as bedrock.CfnGuardrail.ContentPolicyConfigProperty; - } else { - return undefined; - } - }, - }); - } - - /** - * Returns the topic filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnTopicPolicy(): IResolvable { - return Lazy.any({ - produce: () => { - if (this.deniedTopics.length > 0) { - return { - topicsConfig: this.deniedTopics.flatMap((topic: filters.Topic) => { - return { - definition: topic.definition, - name: topic.name, - examples: topic.examples, - type: 'DENY', - } as bedrock.CfnGuardrail.TopicConfigProperty; - }), - }; - } else { - return undefined; - } - }, - }); - } - - /** - * Returns the contectual filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnContextualPolicyConfig(): IResolvable { - return Lazy.any({ - produce: () => { - if (this.contextualGroundingFilters.length > 0) { - return { - filtersConfig: this.contextualGroundingFilters.flatMap((filter: filters.ContextualGroundingFilter) => { - return { - type: filter.type, - threshold: filter.threshold, - } as bedrock.CfnGuardrail.ContextualGroundingFilterConfigProperty; - }), - }; - } else { - return undefined; - } - }, - }); - } - - /** - * Returns the word config applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnWordPolicyConfig(): IResolvable { - return Lazy.any({ - produce: () => { - if (this.wordFilters.length > 0 || this.managedWordListFilters.length > 0) { - return { - wordsConfig: this.generateCfnWordConfig(), - managedWordListsConfig: this.generateCfnManagedWordListsConfig(), - } as bedrock.CfnGuardrail.WordPolicyConfigProperty; - } else { - return undefined; - } - }, - }); - } - - /** - * Returns the word filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnWordConfig(): IResolvable { - return Lazy.any( - { - produce: () => { - return this.wordFilters.flatMap((word: string) => { - return { - text: word, - } as bedrock.CfnGuardrail.WordConfigProperty; - }); - }, - }, - { omitEmptyArray: true }, - ); - } - - /** - * Returns the word filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnManagedWordListsConfig(): IResolvable { - return Lazy.any( - { - produce: () => { - return this.managedWordListFilters.flatMap((filter: filters.ManagedWordFilterType) => { - return { - type: filter.toString(), - } as bedrock.CfnGuardrail.ManagedWordsConfigProperty; - }); - }, - }, - { omitEmptyArray: true }, - ); - } - - /** - * Returns the sensitive information config applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnSensitiveInformationPolicyConfig(): IResolvable { - return Lazy.any( - { - produce: () => { - if (this.regexFilters.length > 0 || this.piiFilters.length > 0) { - return { - regexesConfig: this.generateCfnRegexesConfig(), - piiEntitiesConfig: this.generateCfnPiiEntitiesConfig(), - }; - } else { - return undefined; - } - }, - }, - { omitEmptyArray: true }, - ); - } - - /** - * Returns the regex filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnRegexesConfig(): IResolvable { - return Lazy.any( - { - produce: () => { - return this.regexFilters.flatMap((regex: filters.RegexFilter) => { - return { - name: regex.name, - description: regex.description, - pattern: regex.pattern, - action: regex.action, - } as bedrock.CfnGuardrail.RegexConfigProperty; - }); - }, - }, - { omitEmptyArray: true }, - ); - } - - /** - * Returns the Pii filters applied to the guardrail. This method defers the computation - * to synth time. - */ - private generateCfnPiiEntitiesConfig(): IResolvable { - return Lazy.any( - { - produce: () => { - return this.piiFilters.flatMap((filter: filters.PIIFilter) => { - return { - type: filter.type, - action: filter.action, - } as bedrock.CfnGuardrail.PiiEntityConfigProperty; - }); - }, - }, - { omitEmptyArray: true }, - ); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts index a167f6d8093cb..d43c5f6a51c36 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts @@ -1,13 +1,3 @@ -// The index.ts files contains a list of files we want to -// include as part of the public API of this module. -// In general, all files including L2 classes will be listed here, -// while all files including only utility functions will be omitted from here. - -// obviously, the ExampleResource L2 should be exported -//export * from './example-resource'; -// notice that private/example-resource-common.ts is not exported! - - //=================================== // Agents //=================================== @@ -21,47 +11,5 @@ export * from './agents/memory'; export * from './agents/agent-collaborator'; export * from './agents/orchestration'; export * from './agents/orchestration-executor'; - -//=================================== -// Data Sources -//=================================== -export * from './data-sources/base-data-source'; -export * from './data-sources/chunking'; -export * from './data-sources/parsing'; -export * from './data-sources/custom-transformation'; -export * from './data-sources/context-enrichment'; -export * from './data-sources/web-crawler-data-source'; -export * from './data-sources/sharepoint-data-source'; -export * from './data-sources/confluence-data-source'; -export * from './data-sources/salesforce-data-source'; -export * from './data-sources/s3-data-source'; -export * from './data-sources/custom-data-source'; - -//=================================== -// Guardrails -//=================================== -export * from './guardrails/guardrail-filters'; -export * from './guardrails/guardrails'; - -//=================================== -// Models and Inference Profiles -//=================================== export * from './models'; -export * from './inference-profiles/common'; -export * from './inference-profiles/default-prompt-routers'; -export * from './inference-profiles/cross-region-inference-profile'; -export * from './inference-profiles/application-inference-profile'; - -//=================================== -// Knowledge Bases -//=================================== -export * from './knowledge-bases/knowledge-base'; -export * from './knowledge-bases/vector-knowledge-base'; -export * from './knowledge-bases/kendra-knowledge-base'; -//=================================== -// Prompts -//=================================== -export * from './prompts/prompt'; -export * from './prompts/prompt-version'; -export * from './prompts/prompt-variant'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts deleted file mode 100644 index eb50a69c6cda1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/application-inference-profile.ts +++ /dev/null @@ -1,209 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { CfnTag, Arn, ArnFormat } from 'aws-cdk-lib'; -import * as bedrock from 'aws-cdk-lib/aws-bedrock'; -import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; -import { Construct } from 'constructs'; -import { IInferenceProfile, InferenceProfileBase, InferenceProfileType } from './common'; -import { IInvokable } from '../models'; - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for creating a ApplicationInferenceProfile. - */ -export interface ApplicationInferenceProfileProps { - /** - * Description of the inference profile. - * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-applicationinferenceprofile.html#cfn-bedrock-applicationinferenceprofile-description - */ - readonly description?: string; - /** - * The name of the inference profile. - * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-applicationinferenceprofile.html#cfn-bedrock-applicationinferenceprofile-inferenceprofilename - */ - readonly inferenceProfileName: string; - /** - * To create an application inference profile for one Region, specify a foundation model. - * Usage and costs for requests made to that Region with that model will be tracked. - * - * To create an application inference profile for multiple Regions, - * specify a cross region (system-defined) inference profile. - * The inference profile will route requests to the Regions defined in - * the cross region (system-defined) inference profile that you choose. - * Usage and costs for requests made to the Regions in the inference profile will be tracked. - */ - readonly modelSource: IInvokable; - /** - * A list of tags associated with the inference profile. - * */ - readonly tags?: CfnTag[]; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -export interface ApplicationInferenceProfileAttributes { - /** - * The ARN of the application inference profile. - */ - readonly inferenceProfileArn: string; - /** - * The ID or Amazon Resource Name (ARN) of the inference profile. - */ - readonly inferenceProfileIdentifier: string; -} - -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Class to create a ApplicationInferenceProfile with CDK. - * These are inference profiles created by users (user defined). - * This helps to track costs and model usage. - * @resource AWS::Bedrock::ApplicationInferenceProfile - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-create.html - */ -export class ApplicationInferenceProfile extends InferenceProfileBase implements IInvokable { - /** - * Import a ApplicationInferenceProfile given its attributes - */ - public static fromApplicationInferenceProfileAttributes( - scope: Construct, - id: string, - attrs: ApplicationInferenceProfileAttributes, - ): IInferenceProfile { - class Import extends InferenceProfileBase { - public readonly inferenceProfileArn = attrs.inferenceProfileArn; - public readonly inferenceProfileId = Arn.split(attrs.inferenceProfileArn, ArnFormat.SLASH_RESOURCE_NAME) - .resourceName!; - public readonly type = InferenceProfileType.APPLICATION; - } - - return new Import(scope, id); - } - /** - * Import a low-level L1 Cfn ApplicationInferenceProfile - */ - public static fromCfnApplicationInferenceProfile( - CfnApplicationInferenceProfile: bedrock.CfnApplicationInferenceProfile, - ): IInferenceProfile { - return new (class extends InferenceProfileBase { - public readonly inferenceProfileArn = CfnApplicationInferenceProfile.attrInferenceProfileArn; - public readonly inferenceProfileId = CfnApplicationInferenceProfile.attrInferenceProfileId; - public readonly type = InferenceProfileType.APPLICATION; - })(CfnApplicationInferenceProfile, '@FromCfnApplicationInferenceProfile'); - } - /** - * The name of the application inference profile. - */ - public readonly inferenceProfileName: string; - /** - * The ARN of the application application inference profile. - */ - public readonly inferenceProfileArn: string; - /** - * The unique identifier of the application inference profile. - */ - public readonly inferenceProfileId: string; - /** - * The underlying model/cross-region model used by the application inference profile. - */ - public readonly inferenceProfileModel: IInvokable; - /** - * The status of the application inference profile. ACTIVE means that the inference profile is ready to be used. - */ - public readonly status: string; - /** - * The type of the inference profile. The following types are possible: - * SYSTEM_DEFINED – The inference profile is defined by Amazon Bedrock. - * You can route inference requests across regions with these inference profiles. - * APPLICATION – The inference profile was created by a user. - * This type of inference profile can track metrics and costs when invoking the model in it. - * The inference profile may route requests to one or multiple regions. - */ - public readonly type: InferenceProfileType; - /** - * Time Stamp for ApplicationInferenceProfile creation. - */ - public readonly createdAt: string; - /** - * Time Stamp for ApplicationInferenceProfile update. - */ - public readonly updatedAt: string; - /** - * This equals to the inferenceProfileArn property, useful just to implement IInvokable interface. - */ - public readonly invokableArn: string; - /** - * Instance of CfnApplicationInferenceProfile. - */ - private readonly _resource: bedrock.CfnApplicationInferenceProfile; - - constructor(scope: Construct, id: string, props: ApplicationInferenceProfileProps) { - super(scope, id); - - this.inferenceProfileModel = props.modelSource; - this.inferenceProfileName = props.inferenceProfileName; - this.type = InferenceProfileType.APPLICATION; - - // L1 instantiation - this._resource = new bedrock.CfnApplicationInferenceProfile(this, id, { - description: props.description, - inferenceProfileName: props.inferenceProfileName, - modelSource: { - copyFrom: props.modelSource.invokableArn, - }, - tags: props.tags, - }); - - // build attributes - this.inferenceProfileArn = this._resource.attrInferenceProfileArn; - this.inferenceProfileId = this._resource.attrInferenceProfileId; - this.status = this._resource.attrStatus; - this.type = this._resource.attrType as InferenceProfileType; - this.createdAt = this._resource.attrCreatedAt; - this.updatedAt = this._resource.attrUpdatedAt; - - // Needed to Implement IInvokable - this.invokableArn = this.inferenceProfileArn; - } - - /** - * Gives the appropriate policies to invoke and use the application inference profile. - */ - public grantInvoke(grantee: IGrantable): Grant { - // This method ensures the appropriate permissions are given - // to use either the inference profile or the vanilla FM - this.inferenceProfileModel.grantInvoke(grantee); - - // plus we add permissions to now invoke the application inference profile itself. - - return this.grantProfileUsage(grantee); - } - - /** - * Grants appropriate permissions to use the application inference profile (AIP). - * Does not grant permissions to use the model/cross-region profile in the AIP. - */ - grantProfileUsage(grantee: IGrantable): Grant { - const grant = Grant.addToPrincipal({ - grantee: grantee, - actions: ['bedrock:GetInferenceProfile', 'bedrock:InvokeModel'], - resourceArns: [this.inferenceProfileArn], - }); - return grant; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts deleted file mode 100644 index 431b0b0108a9f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/common.ts +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { IResource, Resource } from 'aws-cdk-lib'; -import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; - -/** These are the values used by the API when using aws bedrock get-inference-profile --inference-profile-identifier XXXXXXX */ -export enum InferenceProfileType { - /** - * An inference profile that is created by AWS. These are profiles such as cross-region - * which help you distributed traffic across a geographic region. - */ - SYSTEM_DEFINED = 'SYSTEM_DEFINED', - /** - * An inference profile that is user-created. These are profiles that help - * you track costs or metrics. - */ - APPLICATION = 'APPLICATION', -} - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Represents a ApplicationInferenceProfile, either created with CDK or imported. - */ -export interface IInferenceProfile { - /** - * The ARN of the application inference profile. - */ - readonly inferenceProfileArn: string; - /** - * The unique identifier of the inference profile. - */ - readonly inferenceProfileId: string; - /** - * The type of inference profile. - */ - readonly type: InferenceProfileType; - - /** - * Grants appropriate permissions to use the inference profile. - */ - grantProfileUsage(grantee: IGrantable): Grant; -} - -/** - * Abstract base class for a ApplicationInferenceProfile. - * Contains methods and attributes valid for ApplicationInferenceProfiles either created with CDK or imported. - */ -export abstract class InferenceProfileBase extends Resource implements IInferenceProfile, IResource { - /** - * The ARN of the application inference profile. - */ - public abstract readonly inferenceProfileArn: string; - /** - * The unique identifier of the inference profile. - */ - public abstract readonly inferenceProfileId: string; - /** - * The ID or Amazon Resource Name (ARN) of the inference profile. - */ - public abstract readonly type: InferenceProfileType; - - /** - * Grants appropriate permissions to use the cross-region inference profile. - * Does not grant permissions to use the model in the profile. - */ - grantProfileUsage(grantee: IGrantable): Grant { - const grant = Grant.addToPrincipal({ - grantee: grantee, - actions: ['bedrock:GetInferenceProfile', 'bedrock:ListInferenceProfiles'], - resourceArns: [this.inferenceProfileArn], - scope: this, - }); - return grant; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts deleted file mode 100644 index b9b749514297f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/cross-region-inference-profile.ts +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; -import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; -import { BedrockFoundationModel, IInvokable } from '../models'; -import { IInferenceProfile, InferenceProfileType } from './common'; - -export enum CrossRegionInferenceProfileRegion { - /** - * Cross-region Inference Identifier for the European area. - * According to the model chosen, this might include: - * - Frankfurt (`eu-central-1`) - * - Ireland (`eu-west-1`) - * - Paris (`eu-west-3`) - */ - EU = 'eu', - /** - * Cross-region Inference Identifier for the United States area. - * According to the model chosen, this might include: - * - N. Virginia (`us-east-1`) - * - Oregon (`us-west-2`) - * - Ohio (`us-east-2`) - */ - US = 'us', - /** - * Cross-region Inference Identifier for the Asia-Pacific area. - * According to the model chosen, this might include: - * - Tokyo (`ap-northeast-1`) - * - Seoul (`ap-northeast-2`) - * - Mumbai (`ap-south-1`) - * - Singapore (`ap-southeast-1`) - * - Sydney (`ap-southeast-2`) - */ - APAC = 'apac', -} - -export const REGION_TO_GEO_AREA: { [key: string]: CrossRegionInferenceProfileRegion } = { - // US Regions - 'us-east-1': CrossRegionInferenceProfileRegion.US, // N. Virginia - 'us-east-2': CrossRegionInferenceProfileRegion.US, // Ohio - 'us-west-2': CrossRegionInferenceProfileRegion.US, // Oregon - - // EU Regions - 'eu-central-1': CrossRegionInferenceProfileRegion.EU, // Frankfurt - 'eu-west-1': CrossRegionInferenceProfileRegion.EU, // Ireland - 'eu-west-3': CrossRegionInferenceProfileRegion.EU, // Paris - - // APAC Regions - 'ap-northeast-1': CrossRegionInferenceProfileRegion.APAC, // Tokyo - 'ap-northeast-2': CrossRegionInferenceProfileRegion.APAC, // Seoul - 'ap-south-1': CrossRegionInferenceProfileRegion.APAC, // Mumbai - 'ap-southeast-1': CrossRegionInferenceProfileRegion.APAC, // Singapore - 'ap-southeast-2': CrossRegionInferenceProfileRegion.APAC, // Sydney -}; - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -export interface CrossRegionInferenceProfileProps { - /** - * The geographic region where the traffic is going to be distributed. Routing - * factors in user traffic, demand and utilization of resources. - */ - readonly geoRegion: CrossRegionInferenceProfileRegion; - /** - * A model supporting cross-region inference. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference-support.html - */ - readonly model: BedrockFoundationModel; -} - -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Cross-region inference enables you to seamlessly manage unplanned traffic - * bursts by utilizing compute across different AWS Regions. With cross-region - * inference, you can distribute traffic across multiple AWS Regions, enabling - * higher throughput and enhanced resilience during periods of peak demands. - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html - */ -export class CrossRegionInferenceProfile implements IInvokable, IInferenceProfile { - public static fromConfig(config: CrossRegionInferenceProfileProps): CrossRegionInferenceProfile { - return new CrossRegionInferenceProfile(config); - } - /** - * @example 'us.anthropic.claude-3-5-sonnet-20240620-v1:0' - */ - public readonly inferenceProfileId: string; - /** - * @example 'arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0' - */ - public readonly inferenceProfileArn: string; - /** - * @example InferenceProfileType.SYSTEM_DEFINED - */ - public readonly type: InferenceProfileType; - /** - * The underlying model supporting cross-region inference. - */ - public readonly inferenceProfileModel: BedrockFoundationModel; - /** This equals to the inferenceProfileArn property, useful just to implement IInvokable interface*/ - public readonly invokableArn: string; - - private constructor(props: CrossRegionInferenceProfileProps) { - if (!props.model.supportsCrossRegion) { - throw new Error(`Model ${props.model.modelId} does not support cross-region inference`); - } - this.type = InferenceProfileType.SYSTEM_DEFINED; - this.inferenceProfileModel = props.model; - this.inferenceProfileId = `${props.geoRegion}.${props.model.modelId}`; - this.inferenceProfileArn = Arn.format({ - partition: Aws.PARTITION, - service: 'bedrock', - account: Aws.ACCOUNT_ID, - region: Aws.REGION, - resource: 'inference-profile', - resourceName: this.inferenceProfileId, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); - // Needed to Implement IInvokable - this.invokableArn = this.inferenceProfileArn; - } - - /** - * Gives the appropriate policies to invoke and use the Foundation Model. - */ - public grantInvoke(grantee: IGrantable): Grant { - // for CRIS, we need to provide permissions to invoke the model in all regions - // where the inference profile can route requests - this.inferenceProfileModel.grantInvokeAllRegions(grantee); - // and we need to provide permissions to invoke the inference profile itself - return this.grantProfileUsage(grantee); - } - - /** - * Grants appropriate permissions to use the cross-region inference profile. - * Does not grant permissions to use the model in the profile. - */ - grantProfileUsage(grantee: IGrantable): Grant { - const grant = Grant.addToPrincipal({ - grantee: grantee, - actions: ['bedrock:GetInferenceProfile', 'bedrock:InvokeModel*'], - resourceArns: [this.inferenceProfileArn], - }); - return grant; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts deleted file mode 100644 index 722b9c2e286fb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/inference-profiles/default-prompt-routers.ts +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; -import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; -import { - CrossRegionInferenceProfile, - REGION_TO_GEO_AREA, -} from './cross-region-inference-profile'; -import { BedrockFoundationModel, IInvokable } from './../models'; - -export interface IPromptRouter { - /** - * The ARN of the prompt router. - */ - readonly promptRouterArn: string; - /** - * The Id of the prompt router. - */ - readonly promptRouterId: string; - /** - * The foundation models / profiles this router will route to. - */ - readonly routingEndpoints: IInvokable[]; -} - -export interface PromptRouterProps { - /** - * Prompt Router Id - */ - readonly promptRouterId: string; - /** - * The foundation models this router will route to. - */ - readonly routingModels: BedrockFoundationModel[]; -} - -/** - * Represents identifiers for default prompt routers in Bedrock - */ -export class DefaultPromptRouterIdentifier { - /** - * Anthropic Claude V1 router configuration - */ - public static readonly ANTHROPIC_CLAUDE_V1 = new DefaultPromptRouterIdentifier({ - promptRouterId: 'anthropic.claude:1', - routingModels: [ - BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, - BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0, - ], - }); - - /** - * Meta Llama 3.1 router configuration - */ - public static readonly META_LLAMA_3_1 = new DefaultPromptRouterIdentifier({ - promptRouterId: 'meta.llama:1', - routingModels: [ - BedrockFoundationModel.META_LLAMA_3_1_8B_INSTRUCT_V1, - BedrockFoundationModel.META_LLAMA_3_1_70B_INSTRUCT_V1, - ], - }); - - public readonly promptRouterId: string; - public readonly routingModels: BedrockFoundationModel[]; - private constructor(props: PromptRouterProps) { - (this.promptRouterId = props.promptRouterId), (this.routingModels = props.routingModels); - } -} - -export class PromptRouter implements IInvokable, IPromptRouter { - public static fromDefaultId(defaultRouter: DefaultPromptRouterIdentifier, region: string) { - return new PromptRouter(defaultRouter, region); - } - public readonly promptRouterArn: string; - public readonly promptRouterId: string; - public readonly invokableArn: string; - public readonly routingEndpoints: IInvokable[]; - - constructor(props: PromptRouterProps, region: string) { - this.promptRouterId = props.promptRouterId; - this.promptRouterArn = Arn.format({ - partition: Aws.PARTITION, - service: 'bedrock', - region: region, - account: Aws.ACCOUNT_ID, - resource: 'default-prompt-router', - resourceName: this.promptRouterId, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); - // needed to implement IInvokable - this.invokableArn = this.promptRouterArn; - - // build inference profiles from routing endpoints - this.routingEndpoints = props.routingModels.flatMap(model => { - return CrossRegionInferenceProfile.fromConfig({ - model: model, - geoRegion: REGION_TO_GEO_AREA[region], - }); - }); - } - - grantInvoke(grantee: IGrantable): Grant { - // Grant invoke on every model of the router - this.routingEndpoints.forEach(model => { - model.grantInvoke(grantee); - }); - // Grant invoke to the prompt router - return Grant.addToPrincipal({ - grantee, - actions: ['bedrock:GetPromptRouter', 'bedrock:InvokeModel'], - resourceArns: [this.promptRouterArn], - }); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts deleted file mode 100644 index ec8721ff71586..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledge-base.ts +++ /dev/null @@ -1,199 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -export { KnowledgeBaseBase } from './knowledge-base'; -import { ArnFormat, Stack } from 'aws-cdk-lib'; -import * as bedrock from 'aws-cdk-lib/aws-bedrock'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { Construct } from 'constructs'; -import { - CommonKnowledgeBaseAttributes, - CommonKnowledgeBaseProps, - IKnowledgeBase, - KnowledgeBaseBase, - KnowledgeBaseType, -} from './knowledge-base'; -import { IKendraGenAiIndex } from './kendra-knowledgebase'; - -/****************************************************************************** - * COMMON INTERFACES - *****************************************************************************/ -export interface IKendraKnowledgeBase extends IKnowledgeBase { - /** - * The GenAI Kendra Index. - */ - readonly kendraIndex: IKendraGenAiIndex; -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for creating a Kendra Index Knowledge Base. - */ -export interface KendraKnowledgeBaseProps extends CommonKnowledgeBaseProps { - /** - * The Kendra Index to use for the knowledge base. - */ - readonly kendraIndex: IKendraGenAiIndex; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -/** - * Properties for importing a knowledge base outside of this stack - */ -export interface KendraKnowledgeBaseAttributes extends CommonKnowledgeBaseAttributes { - /** - * The GenAI Kendra Index ARN. - */ - readonly kendraIndex: IKendraGenAiIndex; -} - -/****************************************************************************** - * ABSTRACT CLASS - *****************************************************************************/ -export abstract class KendraKnowledgeBaseBase extends KnowledgeBaseBase { - public abstract readonly knowledgeBaseArn: string; - public abstract readonly knowledgeBaseId: string; - public abstract readonly role: iam.IRole; - public abstract readonly kendraIndex: IKendraGenAiIndex; - public abstract readonly description?: string; - public abstract readonly instruction?: string; - public readonly type: KnowledgeBaseType = KnowledgeBaseType.KENDRA; -} - -/****************************************************************************** - * CONSTRUCT - *****************************************************************************/ -export class KendraKnowledgeBase extends KendraKnowledgeBaseBase { - // ------------------------------------------------------ - // Import Methods - // ------------------------------------------------------ - public static fromKnowledgeBaseAttributes( - scope: Construct, - id: string, - attrs: KendraKnowledgeBaseAttributes, - ): IKendraKnowledgeBase { - const stack = Stack.of(scope); - - class Import extends KendraKnowledgeBaseBase { - public readonly role = iam.Role.fromRoleArn(this, `kb-${attrs.knowledgeBaseId}-role`, attrs.executionRoleArn); - public readonly description = attrs.description; - public readonly instruction = attrs.instruction; - public readonly knowledgeBaseId = attrs.knowledgeBaseId; - public readonly kendraIndex = attrs.kendraIndex; - public readonly knowledgeBaseArn = stack.formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: attrs.knowledgeBaseId, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); - } - return new Import(scope, id); - } - // ------------------------------------------------------ - // Attributes - // ------------------------------------------------------ - // inherited - public readonly knowledgeBaseArn: string; - public readonly knowledgeBaseId: string; - public readonly role: iam.IRole; - public readonly description?: string; - public readonly instruction?: string; - - /** - * The name of the knowledge base. - */ - public readonly name: string; - - /** - * The GenAI Kendra Index. - */ - public readonly kendraIndex: IKendraGenAiIndex; - /** - * The type of Knowledge Base - */ - public readonly type: KnowledgeBaseType = KnowledgeBaseType.KENDRA; - - private readonly _resource: bedrock.CfnKnowledgeBase; - - constructor(scope: Construct, id: string, props: KendraKnowledgeBaseProps) { - super(scope, id); - // ------------------------------------------------------ - // Set properties or defaults - // ------------------------------------------------------ - this.kendraIndex = props.kendraIndex; - this.name = props.name ?? this.generatePhysicalName() + '-kendra-kb'; - this.instruction = props.instruction; - this.description = props.description; - - // ------------------------------------------------------ - // Role - // ------------------------------------------------------ - let policyAddition: iam.AddToPrincipalPolicyResult | undefined; - if (props.existingRole) { - this.role = props.existingRole; - } else { - const roleName = this.generatePhysicalName() + '-AmazonBedrockExecutionRoleForKnowledgeBase'; - this.role = new iam.Role(this, 'Role', { - roleName: roleName, - assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com', { - conditions: { - StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, - ArnLike: { - 'aws:SourceArn': Stack.of(this).formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: '*', - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }), - }, - }, - }), - }); - policyAddition = this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - sid: 'AmazonBedrockKnowledgeBaseKendraIndexAccessStatement', - actions: ['kendra:Retrieve', 'kendra:DescribeIndex'], - resources: [this.kendraIndex.indexArn], - }), - ); - } - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this._resource = new bedrock.CfnKnowledgeBase(this, 'MyCfnKnowledgeBase', { - name: this.name, - roleArn: this.role.roleArn, - description: props.description, - knowledgeBaseConfiguration: { - type: KnowledgeBaseType.KENDRA, - kendraKnowledgeBaseConfiguration: { - kendraIndexArn: props.kendraIndex.indexArn, - }, - }, - }); - - // Ensure policy statement is added before creating KnowledgeBase - this._resource.node.addDependency(policyAddition?.policyDependable!); - - this.knowledgeBaseArn = this._resource.attrKnowledgeBaseArn; - this.knowledgeBaseId = this._resource.attrKnowledgeBaseId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts deleted file mode 100644 index 2c284e6ba579d..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/gen-ai-index.ts +++ /dev/null @@ -1,299 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { ArnFormat, IResource, Resource, Stack } from 'aws-cdk-lib'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import * as kendra from 'aws-cdk-lib/aws-kendra'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { Construct } from 'constructs'; - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Represents a Kendra Index, either created with CDK or imported. - */ -export interface IKendraGenAiIndex extends IResource { - /** - * The Amazon Resource Name (ARN) of the index. - * @example 'arn:aws:kendra:us-east-1:123456789012:index/af04c7ea-22bc-46b7-a65e-6c21e604fc11' - */ - readonly indexArn: string; - - /** - * The identifier of the index. - * @example 'af04c7ea-22bc-46b7-a65e-6c21e604fc11'. - */ - readonly indexId: string; - - /** - * An IAM role that gives Amazon Kendra permissions to access - * your Amazon CloudWatch logs and metrics. This is also the - * role used when you use the BatchPutDocument operation to index - * documents from an Amazon S3 bucket. - */ - readonly role: iam.IRole; -} - -export namespace Kendra { - /** - * Represents an Amazon Kendra Index Edition. - */ - export enum Edition { - DEVELOPER_EDITION = 'DEVELOPER_EDITION', - ENTERPRISE_EDITION = 'ENTERPRISE_EDITION', - GEN_AI_ENTERPRISE_EDITION = 'GEN_AI_ENTERPRISE_EDITION', - } - - /** - * Represents an Amazon Kendra Index Field Type. - */ - export enum IndexFieldTypes { - STRING = 'STRING_VALUE', - STRING_LIST = 'STRING_LIST_VALUE', - LONG = 'LONG_VALUE', - DATE = 'DATE_VALUE', - } - - /** - * The different policies available to filter search results based on user context. - */ - export enum UserContextPolicy { - /** All indexed content is searchable and displayable for all users. - * If you want to filter search results on user context, you can use - * the attribute filters of _user_id and _group_ids or you can provide - * user and group information in UserContext . */ - ATTRIBUTE_FILTER = 'ATTRIBUTE_FILTER', - /** - * Enables token-based user access control to filter search results on - * user context. All documents with no access control and all documents - * accessible to the user will be searchable and displayable. - */ - USER_TOKEN = 'USER_TOKEN', - } -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for creating a GenAI Index. - */ -export interface KendraGenAiIndexProps { - /** - * The name of the index. - * @default - A name is generated by CDK. - */ - readonly name?: string; - /** - * The identifier of the AWS KMS customer managed key (CMK) to use - * to encrypt data indexed by Amazon Kendra. Amazon Kendra doesn't support - * asymmetric CMKs. - * @default - AWS managed encryption key is used. - */ - readonly kmsKey?: IKey; - /** - * The document capacity units. Every unit increases the baseline capacity by 20,000 documents. - * E.g. `documentCapacityUnits: 1` means Baseline + 20,000 documents = 40,000 documents - * @default 0 - baseline capacity of 20,000 documents - */ - readonly documentCapacityUnits?: number; - /** - * The query capacity units. Every unit increases the baseline capacity by 0.1 QPS. - * E.g. `queryCapacityUnits: 7` means Baseline + 0.1 QPS * 7 = 0.8 QPS - * @default 0 - baseline capacity of 0.1 QPS - */ - readonly queryCapacityUnits?: number; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -/** - * Properties needed for importing an existing Kendra Index. - */ -export interface KendraGenAiIndexAttributes { - /** - * The Id of the index. - * @example 'af04c7ea-22bc-46b7-a65e-6c21e604fc11' - */ - readonly indexId: string; - /** - * An IAM role that gives your Amazon Kendra index permissions. - */ - readonly role: iam.IRole; -} - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Abstract base class for a Kendra GenAI index. - * Contains methods and attributes valid for Kendra GenAI Indexes either created with CDK or imported. - */ -export abstract class KendraGenAiIndexBase extends Resource implements IKendraGenAiIndex { - public abstract readonly indexArn: string; - public abstract readonly indexId: string; - public abstract readonly role: iam.IRole; -} - -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Class to create a Kendra GenAI Index with CDK. - * @cloudformationResource AWS::Kendra::Index - */ -export class KendraGenAiIndex extends KendraGenAiIndexBase { - /** - * Import a guardrail given its attributes - */ - public static fromAttrs(scope: Construct, id: string, attrs: KendraGenAiIndexAttributes): IKendraGenAiIndex { - class Import extends KendraGenAiIndexBase { - public readonly role = attrs.role; - public readonly indexId = attrs.indexId; - public readonly indexArn = Stack.of(this).formatArn({ - service: 'kendra', - resource: 'index', - resourceName: attrs.indexId, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); - } - return new Import(scope, id); - } - - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - // inherited - public readonly indexArn: string; - public readonly indexId: string; - public readonly role: iam.IRole; - - /** - * The edition of the Gen AI index - */ - public readonly edition: Kendra.Edition = Kendra.Edition.GEN_AI_ENTERPRISE_EDITION; - /** - * The name of the Gen AI index - */ - public readonly name: string; - /** - * The AWS KMS key (CMK) used to encrypt data - */ - public readonly kmsKey?: IKey; - /** - * The document capacity units used for the Gen AI index - */ - public readonly documentCapacityUnits: number; - /** - * The query capacity units used for the Gen AI index - */ - public readonly queryCapacityUnits: number; - /** - * The L1 representation of the Kendra Index - */ - private readonly _resource: kendra.CfnIndex; - - constructor(scope: Construct, id: string, props: KendraGenAiIndexProps) { - super(scope, id); - - // ------------------------------------------------------ - // Set properties or defaults - // ------------------------------------------------------ - this.name = - props.name ?? this.generatePhysicalName() + '-genai-index'; - - this.documentCapacityUnits = props.documentCapacityUnits ?? 0; - this.queryCapacityUnits = props.queryCapacityUnits ?? 0; - this.kmsKey = props.kmsKey; - - // ------------------------------------------------------ - // Role Creation - // ------------------------------------------------------ - const roleName = this.generatePhysicalName() + '-AmazonKendraRoleForIndex'; - this.role = new iam.Role(this, 'Role', { - roleName: roleName, - assumedBy: new iam.ServicePrincipal('kendra.amazonaws.com'), - }); - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: ['logs:DescribeLogGroups'], - resources: ['*'], - }), - ); - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: ['cloudwatch:PutMetricData'], - resources: ['*'], - conditions: { - StringEquals: { - 'cloudwatch:namespace': 'AWS/Kendra', - }, - }, - }), - ); - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: ['logs:CreateLogGroup'], - resources: [ - Stack.of(this).formatArn({ - service: 'logs', - resource: 'log-group', - resourceName: '/aws/kendra/*', - arnFormat: ArnFormat.COLON_RESOURCE_NAME, - }), - ], - }), - ); - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: ['logs:DescribeLogStreams', 'logs:CreateLogStream', 'logs:PutLogEvents'], - resources: [ - Stack.of(this).formatArn({ - service: 'logs', - resource: 'log-group', - resourceName: '/aws/kendra/*:log-stream:*', - arnFormat: ArnFormat.COLON_RESOURCE_NAME, - }), - ], - }), - ); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this._resource = new kendra.CfnIndex(this, 'GenAiIndex', { - name: this.name, - edition: Kendra.Edition.GEN_AI_ENTERPRISE_EDITION, - roleArn: this.role.roleArn, - serverSideEncryptionConfiguration: props.kmsKey - ? { - kmsKeyId: props.kmsKey.keyId, - } - : undefined, - capacityUnits: { - storageCapacityUnits: this.documentCapacityUnits, - queryCapacityUnits: this.queryCapacityUnits, - }, - userContextPolicy: Kendra.UserContextPolicy.ATTRIBUTE_FILTER, - }); - - this.indexArn = this._resource.attrArn; - this.indexId = this._resource.attrId; - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts deleted file mode 100644 index 387e135d44b99..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/kendra-knowledgebase/index.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -export * from './gen-ai-index'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts deleted file mode 100644 index 842789c06602b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/knowledge-base.ts +++ /dev/null @@ -1,224 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { IResource, Resource } from 'aws-cdk-lib'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { Construct } from 'constructs'; - -/****************************************************************************** - * ENUMS - *****************************************************************************/ -/** - * Types of possible knowledge bases supported by Amazon Bedrock Knowledge Bases. - */ -export enum KnowledgeBaseType { - /** - * Vector database with emebeddings vectors - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/kb-how-it-works.html - */ - VECTOR = 'VECTOR', - /** - * Kendra GenAI Index - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-build-kendra-genai-index.html - */ - KENDRA = 'KENDRA', - /** - * Structured data store (e.g. REDSHIFT) - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-build-structured.html - */ - SQL = 'SQL', -} - -/****************************************************************************** - * COMMON INTERFACE - *****************************************************************************/ -/** - * Represents a Knowledge Base, either created with CDK or imported, of any type. - */ -export interface IKnowledgeBase extends IResource { - /** - * The ARN of the knowledge base. - * @example "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KB12345678" - */ - readonly knowledgeBaseArn: string; - - /** - * The ID of the knowledge base. - * @example "KB12345678" - */ - readonly knowledgeBaseId: string; - - /** - * The role associated with the knowledge base. - */ - readonly role: iam.IRole; - - /** - * The type of knowledge base. - */ - readonly type: KnowledgeBaseType; - - /** - * The description of the knowledge base. - */ - readonly description?: string; - - /** - * A narrative instruction of the knowledge base. - * A Bedrock Agent can use this instruction to determine if it should - * query this Knowledge Base. - */ - readonly instruction?: string; - - /** - * Grant the given principal identity permissions to perform actions on this knowledge base. - */ - grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant; - - /** - * Grant the given identity permissions to query the knowledge base. - */ - grantQuery(grantee: iam.IGrantable): iam.Grant; -} - -/****************************************************************************** - * COMMON PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Common properties for creating any type of new Knowledge Base. - */ -export interface CommonKnowledgeBaseProps { - /** - * The name of the knowledge base. - */ - readonly name?: string; - - /** - * The description of the knowledge base. - * - * @default - No description provided. - */ - readonly description?: string; - - /** - * Existing IAM role with policy statements granting appropriate permissions - * to invoke the specific embeddings models. - * Any entity (e.g., an AWS service or application) that assumes - * this role will be able to invoke or use the - * specified embeddings model within the Bedrock service. - */ - readonly existingRole?: iam.IRole; - - /** - * A narrative description of the knowledge base. - * - * A Bedrock Agent can use this instruction to determine if it should - * query this Knowledge Base. - * - * @default - No description provided. - */ - readonly instruction?: string; -} - -/****************************************************************************** - * COMMON ATTRS FOR IMPORTS - *****************************************************************************/ -/** - * Common properties for importing a knowledge base (of any type) created outside of this stack. - */ -export interface CommonKnowledgeBaseAttributes { - /** - * The ID of the knowledge base. - * @example "KB12345678" - */ - readonly knowledgeBaseId: string; - /** - * The Service Execution Role associated with the knowledge base. - * @example "arn:aws:iam::123456789012:role/AmazonBedrockExecutionRoleForKnowledgeBaseawscdkbdgeBaseKB12345678" - */ - readonly executionRoleArn: string; - /** - * The description of the knowledge base. - * - * @default - No description provided. - */ - readonly description?: string; - /** - * Instructions for agents based on the design and type of information of the - * Knowledge Base. This will impact how Agents interact with the Knowledge Base. - * - * @default - No description provided. - */ - readonly instruction?: string; - /** - * Specifies whether to use the knowledge base or not when sending an InvokeAgent request. - * @default - ENABLED - */ - readonly knowledgeBaseState?: string; -} - -/****************************************************************************** - * ABSTRACT CLASS - *****************************************************************************/ -/** - * Abstract base class for Knowledge Base (regarless the type). - * Contains methods valid for KBs either created with CDK or imported and - * applicable to Knowledge Bases of any type. - */ -export abstract class KnowledgeBaseBase extends Resource implements IKnowledgeBase { - public abstract readonly knowledgeBaseArn: string; - public abstract readonly knowledgeBaseId: string; - public abstract readonly role: iam.IRole; - public abstract readonly description?: string; - public abstract readonly instruction?: string; - public abstract readonly type: KnowledgeBaseType; - - constructor(scope: Construct, id: string) { - super(scope, id); - } - - /** - * Grant the given principal identity permissions to perform actions on this knowledge base. - */ - public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { - return iam.Grant.addToPrincipal({ - grantee, - resourceArns: [this.knowledgeBaseArn], - actions, - }); - } - - /** - * Grant the given identity permissions to retrieve content from the knowledge base. - */ - public grantRetrieve(grantee: iam.IGrantable): iam.Grant { - return this.grant(grantee, 'bedrock:Retrieve'); - } - - /** - * Grant the given identity permissions to retrieve content from the knowledge base. - */ - public grantRetrieveAndGenerate(grantee: iam.IGrantable): iam.Grant { - return this.grant(grantee, 'bedrock:RetrieveAndGenerate'); - } - - /** - * Grant the given identity permissions to query the knowledge base. - * This contains: - * - Retrieve - * - RetrieveAndGenerate - */ - public grantQuery(grantee: iam.IGrantable): iam.Grant { - return this.grant(grantee, 'bedrock:Retrieve', 'bedrock:RetrieveAndGenerate'); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts deleted file mode 100644 index 23105d00b7a68..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vector-knowledge-base.ts +++ /dev/null @@ -1,787 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { ArnFormat, aws_bedrock as bedrock, CfnOutput, Stack } from 'aws-cdk-lib'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { Construct } from 'constructs'; -import { - CommonKnowledgeBaseAttributes, - CommonKnowledgeBaseProps, - IKnowledgeBase, - KnowledgeBaseBase, - KnowledgeBaseType, -} from './knowledge-base'; -import { VectorIndex, SpaceType, OpensearchFieldType, EngineType, AlgorithmNameType } from './vectorstore-knowledgebases/opensearch-vector-index'; -import { VectorCollection } from './vectorstore-knowledgebases/opensearch-collection'; -import { Agent } from '../agents/agent'; -import { - ConfluenceDataSource, - ConfluenceDataSourceAssociationProps, -} from '../data-sources/confluence-data-source'; -import { - CustomDataSource, - CustomDataSourceAssociationProps, -} from '../data-sources/custom-data-source'; -import { S3DataSource, S3DataSourceAssociationProps } from '../data-sources/s3-data-source'; -import { - SalesforceDataSource, - SalesforceDataSourceAssociationProps, -} from '../data-sources/salesforce-data-source'; -import { - SharePointDataSource, - SharePointDataSourceAssociationProps, -} from '../data-sources/sharepoint-data-source'; -import { - WebCrawlerDataSource, - WebCrawlerDataSourceAssociationProps, -} from '../data-sources/web-crawler-data-source'; -import { BedrockFoundationModel, VectorType } from '../models'; - -/****************************************************************************** - * ENUMS - *****************************************************************************/ -/** - * Knowledge base can be backed by different vector databases. - * This enum represents the different vector databases that can be used. - * - * `OPENSEARCH_SERVERLESS` is the default vector database. - * `REDIS_ENTERPRISE_CLOUD` is the vector database for Redis Enterprise Cloud. - * `PINECONE` is the vector database for Pinecone. - * `AMAZON_AURORA` is the vector database for Amazon Aurora PostgreSQL. - */ -enum VectorStoreType { - /** - * `OPENSEARCH_SERVERLESS` is the vector store for OpenSearch Serverless. - */ - OPENSEARCH_SERVERLESS = 'OPENSEARCH_SERVERLESS', - /** - * `PINECONE` is the vector store for Pinecone. - */ - PINECONE = 'PINECONE', - /** - * `RDS` is the vector store for Amazon Aurora. - */ - AMAZON_AURORA = 'RDS', -} - -/****************************************************************************** - * COMMON INTERFACES - *****************************************************************************/ -/** - * Interface for the configuration of the storage for knowledge base. - */ -interface StorageConfiguration { - /** - * The vector store, which can be of `VectorCollection`, `PineconeVectorStore` or - * `AmazonAuroraVectorStore` types. - */ - vectorStore: - | VectorCollection; - - /** - * The type of the vector store. - */ - vectorStoreType: VectorStoreType; - - /** - * The name of the index. - */ - indexName: string; - - /** - * The field of the vector field for vector mapping. - */ - vectorField: string; - - /** - * The field of the text field for vector mapping. - */ - textField: string; - - /** - * The field of the metadata. - */ - metadataField: string; -} - -/** - * Represents a Knowledge Base, either created with CDK or imported. - */ -export interface IVectorKnowledgeBase extends IKnowledgeBase { - /** - * Add an S3 data source to the knowledge base. - */ - addS3DataSource(props: S3DataSourceAssociationProps): S3DataSource; - - /** - * Add a web crawler data source to the knowledge base. - */ - addWebCrawlerDataSource(props: WebCrawlerDataSourceAssociationProps): WebCrawlerDataSource; - - /** - * Add a SharePoint data source to the knowledge base. - */ - addSharePointDataSource(props: SharePointDataSourceAssociationProps): SharePointDataSource; - - /** - * Add a Confluence data source to the knowledge base. - */ - addConfluenceDataSource(props: ConfluenceDataSourceAssociationProps): ConfluenceDataSource; - - /** - * Add a Salesforce data source to the knowledge base. - */ - addSalesforceDataSource(props: SalesforceDataSourceAssociationProps): SalesforceDataSource; - - /** - * Add a Custom data source to the knowledge base. - */ - addCustomDataSource(props: CustomDataSourceAssociationProps): CustomDataSource; - - /** - * Grant the given identity permissions to retrieve content from the knowledge base. - */ - grantRetrieve(grantee: iam.IGrantable): iam.Grant; - - /** - * Grant the given identity permissions to retrieve content from the knowledge base. - */ - grantRetrieveAndGenerate(grantee: iam.IGrantable): iam.Grant; -} - -/****************************************************************************** - * ABSTRACT CLASS - *****************************************************************************/ -/** - * Abstract base class for Vector Knowledge Base. - * Contains methods valid for KBs either created with CDK or imported. - */ -abstract class VectorKnowledgeBaseBase extends KnowledgeBaseBase implements IVectorKnowledgeBase { - public abstract readonly knowledgeBaseArn: string; - public abstract readonly knowledgeBaseId: string; - public abstract readonly role: iam.IRole; - public abstract readonly description?: string; - public abstract readonly instruction?: string; - - public readonly type: KnowledgeBaseType = KnowledgeBaseType.VECTOR; - - constructor(scope: Construct, id: string) { - super(scope, id); - } - - // ------------------------------------------------------ - // Helper methods to add Data Sources - // ------------------------------------------------------ - public addS3DataSource(props: S3DataSourceAssociationProps): S3DataSource { - return new S3DataSource(this, `s3-${props.bucket.node.addr}`, { - knowledgeBase: this, - ...props, - }); - } - public addWebCrawlerDataSource( - props: WebCrawlerDataSourceAssociationProps, - ): WebCrawlerDataSource { - const url = new URL(props.sourceUrls[0]); - return new WebCrawlerDataSource(this, `web-${url.hostname.replace('.', '-')}`, { - knowledgeBase: this, - ...props, - }); - } - public addSharePointDataSource( - props: SharePointDataSourceAssociationProps, - ): SharePointDataSource { - const url = new URL(props.siteUrls[0]); - return new SharePointDataSource(this, `sp-${url.hostname.replace('.', '-')}`, { - knowledgeBase: this, - ...props, - }); - } - public addConfluenceDataSource( - props: ConfluenceDataSourceAssociationProps, - ): ConfluenceDataSource { - const url = new URL(props.confluenceUrl); - return new ConfluenceDataSource(this, `cf-${url.hostname.replace('.', '-')}`, { - knowledgeBase: this, - ...props, - }); - } - public addSalesforceDataSource( - props: SalesforceDataSourceAssociationProps, - ): SalesforceDataSource { - const url = new URL(props.endpoint); - return new SalesforceDataSource(this, `sf-${url.hostname.replace('.', '-')}`, { - knowledgeBase: this, - ...props, - }); - } - public addCustomDataSource(props: CustomDataSourceAssociationProps): CustomDataSource { - return new CustomDataSource(this, `custom-${props.dataSourceName}`, { - knowledgeBase: this, - ...props, - }); - } -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ -/** - * Properties for a knowledge base - */ -export interface VectorKnowledgeBaseProps extends CommonKnowledgeBaseProps { - /** - * The embeddings model for the knowledge base - */ - readonly embeddingsModel: BedrockFoundationModel; - - /** - * The vector type to store vector embeddings. - * - * @default - VectorType.FLOATING_POINT - */ - readonly vectorType?: VectorType; - - /** - * The name of the vector index. - * If vectorStore is not of type `VectorCollection`, - * do not include this property as it will throw error. - * - * @default - 'bedrock-knowledge-base-default-index' - */ - readonly indexName?: string; - - /** - * The name of the field in the vector index. - * If vectorStore is not of type `VectorCollection`, - * do not include this property as it will throw error. - * - * @default - 'bedrock-knowledge-base-default-vector' - */ - readonly vectorField?: string; - - /** - * The vector store for the knowledge base. Must be either of - * type `VectorCollection`, `RedisEnterpriseVectorStore`, - * `PineconeVectorStore` or `AmazonAuroraVectorStore`. - * - * @default - A new OpenSearch Serverless vector collection is created. - */ - readonly vectorStore?: - | VectorCollection; - - /** - * The vector index for the OpenSearch Serverless backed knowledge base. - * If vectorStore is not of type `VectorCollection`, do not include - * this property as it will throw error. - * - * @default - A new vector index is created on the Vector Collection - * if vector store is of `VectorCollection` type. - */ - readonly vectorIndex?: VectorIndex; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -/** - * Properties for importing a knowledge base outside of this stack - */ -export interface VectorKnowledgeBaseAttributes extends CommonKnowledgeBaseAttributes { - // Unique props for vector KBs would be defined here -} - -/** - * Deploys a Bedrock Knowledge Base and configures a backend by OpenSearch Serverless, - * Pinecone, Redis Enterprise Cloud or Amazon Aurora PostgreSQL. - * - */ -export class VectorKnowledgeBase extends VectorKnowledgeBaseBase { - // ------------------------------------------------------ - // Import Methods - // ------------------------------------------------------ - public static fromKnowledgeBaseAttributes( - scope: Construct, - id: string, - attrs: VectorKnowledgeBaseAttributes, - ): IVectorKnowledgeBase { - const stack = Stack.of(scope); - - class Import extends VectorKnowledgeBaseBase { - public readonly role = iam.Role.fromRoleArn( - this, - `kb-${attrs.knowledgeBaseId}-role`, - attrs.executionRoleArn, - ); - public readonly description = attrs.description; - public readonly instruction = attrs.instruction; - public readonly knowledgeBaseId = attrs.knowledgeBaseId; - public readonly knowledgeBaseArn = stack.formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: attrs.knowledgeBaseId, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); - } - return new Import(scope, id); - } - // ------------------------------------------------------ - // Attributes - // ------------------------------------------------------ - /** - * The name of the knowledge base. - */ - public readonly name: string; - - /** - * Instance of knowledge base. - */ - public readonly knowledgeBaseInstance: bedrock.CfnKnowledgeBase; - - /** - * The role the Knowledge Base uses to access the vector store and data source. - */ - public readonly role: iam.IRole; - - /** - * The vector store for the knowledge base. - */ - public readonly vectorStore: - | VectorCollection; - - /** - * A description of the knowledge base. - */ - readonly description?: string; - - /** - * Instructions for agents based on the design and type of information of the - * Knowledge Base. This will impact how Agents interact with the Knowledge Base. - */ - readonly instruction?: string; - - /** - * The ARN of the knowledge base. - */ - public readonly knowledgeBaseArn: string; - - /** - * The ID of the knowledge base. - */ - public readonly knowledgeBaseId: string; - - /** - * The OpenSearch vector index for the knowledge base. - * @private - */ - private vectorIndex?: VectorIndex; - - /** - * The type of the knowledge base. - * @private - */ - private vectorStoreType: VectorStoreType; - - constructor(scope: Construct, id: string, props: VectorKnowledgeBaseProps) { - super(scope, id); - - // ------------------------------------------------------ - // Set properties or defaults - // ------------------------------------------------------ - const embeddingsModel = props.embeddingsModel; - const vectorType = props.vectorType ?? VectorType.FLOATING_POINT; - const indexName = props.indexName ?? 'bedrock-knowledge-base-default-index'; - const vectorField = props.vectorField ?? 'bedrock-knowledge-base-default-vector'; - const textField = 'AMAZON_BEDROCK_TEXT_CHUNK'; - const metadataField = 'AMAZON_BEDROCK_METADATA'; - - this.description = props.description ?? 'CDK deployed Knowledge base'; // even though this prop is optional, if no value is provided it will fail to deploy - //this.knowledgeBaseState = props.knowledgeBaseState ?? 'ENABLED'; - this.instruction = props.instruction; - - validateModel(embeddingsModel, vectorType); - validateVectorIndex(props.vectorStore, props.vectorIndex, props.vectorField, props.indexName); - if (props.vectorIndex) { - validateIndexParameters(props.vectorIndex, indexName); - } - - this.name = props.name ?? this.generatePhysicalName() + 'knowledgebase'; - - if (props.existingRole) { - this.role = props.existingRole; - } else { - const roleName = this.generatePhysicalName() + 'knowledgebaserole'; - this.role = new iam.Role(this, 'Role', { - roleName: roleName, - assumedBy: new iam.CompositePrincipal( - new iam.ServicePrincipal('bedrock.amazonaws.com', { - conditions: { - StringEquals: { 'aws:SourceAccount': Stack.of(this).account }, - ArnLike: { - 'aws:SourceArn': Stack.of(this).formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: '*', - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }), - }, - }, - }), - new iam.ServicePrincipal('aoss.amazonaws.com'), - new iam.ServicePrincipal('cloudformation.amazonaws.com'), - - ), - }); - - - // Add required permissions for the embeddings model - this.role.addToPrincipalPolicy( - new iam.PolicyStatement({ - actions: ['bedrock:InvokeModel'], - resources: [embeddingsModel.asArn(this)], - }), - ); - } - /** - * Create the vector store if the vector store was provided by the user. - * Otherwise check againts all possible vector datastores. - * If none was provided create default OpenSearch Serverless Collection. - */ - if (props.vectorStore instanceof VectorCollection) { - ({ vectorStore: this.vectorStore, vectorStoreType: this.vectorStoreType } = - this.handleOpenSearchCollection(props)); - } else { - ({ vectorStore: this.vectorStore, vectorStoreType: this.vectorStoreType } = - this.handleOpenSearchDefaultVectorCollection()); - } - - // perform this validation after the vector store is handled since if the user - // doesn't provide one, the method above will create it - validateVectorType(this.vectorStore, vectorType); - - - /** - * Create the vector index if the vector store is OpenSearch Serverless - * and it was not provided. Otherwise use the provided vector index. - */ - if (this.vectorStoreType === VectorStoreType.OPENSEARCH_SERVERLESS) { - if (!props.vectorIndex) { - // Create vector index with the knowledge base role - new CfnOutput(this, 'CreatingIndexWithRole', { - value: `Creating index with role: ${this.role.roleArn} (${this.role.roleName})`, - }); - this.vectorIndex = new VectorIndex(this, 'KBIndex', { - collection: this.vectorStore as VectorCollection, - indexName, - role: this.role, - settings: { - knn: true, - }, - mappings: { - properties: { - [vectorField]: { - type: OpensearchFieldType.KNN_VECTOR, - dimension: embeddingsModel.vectorDimensions!, - method: { - engine: EngineType.FAISS, - spaceType: props.vectorType === VectorType.BINARY ? SpaceType.HAMMING : SpaceType.L2, - name: AlgorithmNameType.HNSW, - parameters: { - efConstruction: 512, - m: 16 - }, - }, - }, - AMAZON_BEDROCK_TEXT_CHUNK: { - type: OpensearchFieldType.TEXT, - index: true, - }, - AMAZON_BEDROCK_METADATA: { - type: OpensearchFieldType.TEXT, - index: false, - }, - }, - }, - }); - - this.vectorIndex.node.addDependency(this.vectorStore); - } else { - this.vectorIndex = props.vectorIndex; - } - } - - /** - * Create storage configuraion. If it is of type of - * `AmazonAuroraVectorStore` or `ExistingAmazonAuroraVectorStore`, - * then get textField, metadataField and vectorField from - * the arguments. Otherwise use default values. - */ - const storageConfiguration: StorageConfiguration = { - indexName: indexName, - vectorStore: this.vectorStore, - vectorStoreType: this.vectorStoreType, - vectorField: vectorField, - textField: textField, - metadataField: metadataField, - }; - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - const knowledgeBase = new bedrock.CfnKnowledgeBase(this, 'MyCfnKnowledgeBase', { - knowledgeBaseConfiguration: { - type: KnowledgeBaseType.VECTOR, - vectorKnowledgeBaseConfiguration: { - embeddingModelArn: embeddingsModel.asArn(this), - // Used this approach as if property is specified on models that do not - // support configurable dimensions CloudFormation throws an error at runtime - embeddingModelConfiguration: { - bedrockEmbeddingModelConfiguration: - embeddingsModel.modelId === 'amazon.titan-embed-text-v2:0' - ? { - dimensions: embeddingsModel.vectorDimensions, - embeddingDataType: vectorType, - } - : { embeddingDataType: vectorType }, - }, - }, - }, - name: this.name, - roleArn: this.role.roleArn, - storageConfiguration: getStorageConfiguration(storageConfiguration), - description: props.description, - }); - - this.knowledgeBaseInstance = knowledgeBase; - - const kbCRPolicy = new iam.Policy(this, 'KBCRPolicy', { - // roles: [crProvider.role], - roles: [this.role], - statements: [ - new iam.PolicyStatement({ - actions: [ - 'bedrock:CreateKnowledgeBase', - /** - * We need to add `bedrock:AssociateThirdPartyKnowledgeBase` if - * we are deploying Redis or Pinecone data sources - */ - //...(this.vectorStoreType === VectorStoreType.REDIS_ENTERPRISE_CLOUD || - ...(this.vectorStoreType === VectorStoreType.PINECONE - ? ['bedrock:AssociateThirdPartyKnowledgeBase'] - : []), - ], - resources: ['*'], - }), - new iam.PolicyStatement({ - actions: [ - 'bedrock:UpdateKnowledgeBase', - 'bedrock:DeleteKnowledgeBase', - 'bedrock:TagResource', - ], - resources: [ - Stack.of(this).formatArn({ - service: 'bedrock', - resource: 'knowledge-base', - resourceName: '*', - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }), - ], - }), - new iam.PolicyStatement({ - actions: ['iam:PassRole'], - resources: [this.role.roleArn], - }), - ], - }); - - knowledgeBase.node.addDependency(this.role); - knowledgeBase.node.addDependency(kbCRPolicy); - if (this.vectorStoreType === VectorStoreType.OPENSEARCH_SERVERLESS && this.vectorIndex) { - knowledgeBase.node.addDependency(this.vectorIndex); - } - if (this.vectorStoreType === VectorStoreType.AMAZON_AURORA) { - knowledgeBase.node.addDependency(this.vectorStore); - } - - this.knowledgeBaseArn = knowledgeBase.attrKnowledgeBaseArn; - this.knowledgeBaseId = knowledgeBase.attrKnowledgeBaseId; - } - - /** - * Handle VectorCollection type of VectorStore. - * - * @param props - The properties of the KnowledgeBase. - * @returns The instance of VectorCollection, VectorStoreType. - * @internal This is an internal core function and should not be called directly. - */ - private handleOpenSearchCollection(props: VectorKnowledgeBaseProps): { - vectorStore: VectorCollection; - vectorStoreType: VectorStoreType; - } { - const vectorStore = props.vectorStore as VectorCollection; - new CfnOutput(this, 'GrantingCollectionAccess', { - value: `Granting collection access to role: ${this.role.roleName}`, - }); - vectorStore.grantDataAccess(this.role); - return { - vectorStore: vectorStore, - vectorStoreType: VectorStoreType.OPENSEARCH_SERVERLESS, - }; - } - - /** - * Handle the default VectorStore type. - * - * @returns The instance of VectorCollection, VectorStoreType. - * @internal This is an internal core function and should not be called directly. - */ - private handleOpenSearchDefaultVectorCollection(): { - vectorStore: VectorCollection; - vectorStoreType: VectorStoreType; - } { - const vectorStore = new VectorCollection(this, 'KBVectors'); - // Grant access to the CloudFormation role (which is this.role) - new CfnOutput(this, 'HandlingDefaultCollection', { - value: 'Creating default OpenSearch vector collection', - }); - vectorStore.grantDataAccess(this.role); - - return { - vectorStore: vectorStore, - vectorStoreType: VectorStoreType.OPENSEARCH_SERVERLESS, - }; - } - - /** - * Associate knowledge base with an agent - */ - public associateToAgent(agent: Agent) { - agent.addKnowledgeBase(this); - } - - protected generatePhysicalName(): string { - return super.generatePhysicalName().toLowerCase(); - } -} - -/** - * Validate that Bedrock Knowledge Base can use the selected model. - * - * @internal This is an internal core function and should not be called directly. - */ -function validateModel(foundationModel: BedrockFoundationModel, vectorType: VectorType) { - if (!foundationModel.supportsKnowledgeBase) { - throw new Error(`The model ${foundationModel} is not supported by Bedrock Knowledge Base.`); - } - if ( - foundationModel.supportedVectorType && - !foundationModel.supportedVectorType.includes(vectorType) - ) { - throw new Error( - `The vector type ${vectorType} is not supported by the model ${foundationModel}.`, - ); - } -} - -/** - * Validate that the storage configuration can use the selected vector type. - * It prevents the use of vector types with vector stores that do not support them, - * thereby avoiding potential runtime errors. - * - * @internal This is an internal core function and should not be called directly. - */ -function validateVectorType(vectorStore: any, vectorType: VectorType) { - if (!(vectorStore instanceof VectorCollection) && vectorType == VectorType.BINARY) { - console.log(vectorStore); - throw new Error( - 'Amazon OpenSearch Serverless is currently the only vector store that supports storing binary vectors.', - ); - } -} - -/** - * Validate if VectorIndex was provided for a VectorStore of type - * other than `VectorCollection`. - * - * @internal This is an internal core function and should not be called directly. - */ -function validateVectorIndex(vectorStore: any, vectorIndex: any, vectorField: any, indexName: any) { - if (!(vectorStore instanceof VectorCollection) && vectorIndex) { - throw new Error( - 'If vectorStore is not of type VectorCollection, vectorIndex should not be provided ' + - 'in KnowledgeBase construct.', - ); - } - if (!(vectorStore instanceof VectorCollection) && indexName) { - throw new Error( - 'If vectorStore is not of type VectorCollection, indexName should not be provided ' + - 'in KnowledgeBase construct.', - ); - } - if (!(vectorStore instanceof VectorCollection) && vectorField) { - throw new Error( - 'If vectorStore is not of type VectorCollection, vectorField should not be provided ' + - 'in KnowledgeBase construct.', - ); - } -} - -/** - * Validate that indexName and vectorField parameters are identical - * in KnowledgeBase construct if VectorIndex was created manually. - * - * By default we assign `vectorIndex` to `bedrock-knowledge-base-default-index` - * value and if user provides `vectorIndex` manually, we need to make sure - * they also provide it in KnowledgeBase construct if the value is not - * `bedrock-knowledge-base-default-index`. Same for vectorField. - * - * @internal This is an internal core function and should not be called directly. - */ -function validateIndexParameters(vectorIndex: VectorIndex, indexName: string,) { - if (vectorIndex.indexName !== 'bedrock-knowledge-base-default-index') { - if (vectorIndex.indexName !== indexName) { - throw new Error( - 'Default value of indexName is `bedrock-knowledge-base-default-index`.' + - ' If you create VectorIndex manually and assign vectorIndex to value other than' + - ' `bedrock-knowledge-base-default-index` then you must provide the same value in KnowledgeBase construct.' + - ' If you created VectorIndex manually and set it to `bedrock-knowledge-base-default-index`' + - ' then do not assign indexName in KnowledgeBase construct.', - ); - } - } -} - -/** - * Determine storage configuration based on vector store type. - * - * @internal This is an internal core function and should not be called directly. - */ -function getStorageConfiguration(params: StorageConfiguration): any { - switch (params.vectorStoreType) { - case VectorStoreType.OPENSEARCH_SERVERLESS: - params.vectorStore = params.vectorStore as VectorCollection; - return { - type: VectorStoreType.OPENSEARCH_SERVERLESS, - opensearchServerlessConfiguration: { - collectionArn: params.vectorStore.collectionArn, - fieldMapping: { - vectorField: params.vectorField, - textField: params.textField, - metadataField: params.metadataField, - }, - vectorIndexName: params.indexName, - }, - }; - default: - throw new Error(`Unsupported vector store type: ${params.vectorStoreType}`); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts deleted file mode 100644 index f2c4721526026..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/analysis-plugins.ts +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -export enum CharacterFilterType { - ICU_NORMALIZER = 'icu_normalizer', -} - -// Currently we only support Kuromoji and ICU tokenizers. -// Also see the following link for more information regarding supported plugins: -// https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-genref.html#serverless-plugins -export enum TokenizerType { - /** - * Kuromoji tokenizer is used for Japanese text analysis and segmentation - */ - KUROMOJI_TOKENIZER = 'kuromoji_tokenizer', - /** - * ICU tokenizer is used for Unicode text segmentation based on UAX #29 rules - */ - ICU_TOKENIZER = 'icu_tokenizer', - /** - * Nori tokenizer is used for Korean text analysis and segmentation - */ - NORI_TOKENIZER = 'nori_tokenizer', -} - -/** - * TokenFilterType defines the available token filters for text analysis. - * Token filters process tokens after they have been created by the tokenizer. - * They can modify, add, or remove tokens based on specific rules. - */ -export enum TokenFilterType { - /** - * Converts inflected Japanese words to their base form - */ - KUROMOJI_BASEFORM = 'kuromoji_baseform', - /** - * Tags words with their parts of speech in Japanese text analysis - */ - KUROMOJI_PART_OF_SPEECH = 'kuromoji_part_of_speech', - /** - * Reduces Japanese words to their stem form - */ - KUROMOJI_STEMMER = 'kuromoji_stemmer', - /** - * Normalizes CJK width differences by converting all characters to their fullwidth or halfwidth variants - */ - CJK_WIDTH = 'cjk_width', - /** - * Removes Japanese stop words from text - */ - JA_STOP = 'ja_stop', - /** - * Converts all characters to lowercase - */ - LOWERCASE = 'lowercase', - /** - * Applies Unicode folding rules for better text matching - */ - ICU_FOLDING = 'icu_folding', - /** - * Tags words with their parts of speech in Korean text analysis - */ - NORI_PART_OF_SPEECH = 'nori_part_of_speech', - /** - * Converts Korean text to its reading form - */ - NORI_READINGFORM = 'nori_readingform', - /** - * Normalizes Korean numbers to regular Arabic numbers - */ - NORI_NUMBER = 'nori_number', -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts deleted file mode 100644 index 1f5168211fbe2..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -export * from './opensearch-collection'; -export * from './opensearch-vector-index'; -export * from './analysis-plugins'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts deleted file mode 100644 index ac60e52063693..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-collection.ts +++ /dev/null @@ -1,518 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import * as cdk from 'aws-cdk-lib'; -import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import * as oss from 'aws-cdk-lib/aws-opensearchserverless'; -import { Construct } from 'constructs'; - -/** - * Configuration for standby replicas in a vector collection. - */ -export enum VectorCollectionStandbyReplicas { - /** - * Enable standby replicas for high availability - */ - ENABLED = 'ENABLED', - - /** - * Disable standby replicas to reduce costs - */ - DISABLED = 'DISABLED', -} - -/** - * The type of collection. - */ -export enum VectorCollectionType { - /** - * Search – Full-text search that powers applications in your internal networks (content management systems, legal documents) and internet-facing applications, - * such as ecommerce website search and content search. - */ - SEARCH = 'SEARCH', - - /** - * Time series – The log analytics segment that focuses on analyzing large volumes of semi-structured, - * machine-generated data in real-time for operational, security, user behavior, and business insights. - */ - TIMESERIES = 'TIMESERIES', - - /** - * Vector search – Semantic search on vector embeddings that simplifies vector data management and powers machine learning (ML) augmented search experiences and generative AI applications, - * such as chatbots, personal assistants, and fraud detection. - */ - VECTORSEARCH = 'VECTORSEARCH' -} - -/** - * Attributes for importing an existing vector collection. - */ -export interface VectorCollectionAttributes { - /** - * The name of the collection - */ - readonly collectionName: string; - - /** - * The ID of the collection - */ - readonly collectionId: string; - - /** - * The ARN of the collection - */ - readonly collectionArn: string; - - /** - * The standby replicas configuration - */ - readonly standbyReplicas: VectorCollectionStandbyReplicas; - - /** - * The type of collection - */ - readonly collectionType: VectorCollectionType; -} - -/** - * Properties for configuring the vector collection. - */ -export interface VectorCollectionProps { - /** - * The name of the collection. Must be between 3-32 characters long and contain only - * lowercase letters, numbers, and hyphens. - * - * @default - A CDK generated name will be used - */ - readonly collectionName?: string; - - /** - * Description for the collection - */ - readonly description?: string; - - /** - * Indicates whether to use standby replicas for the collection. - * - * @default VectorCollectionStandbyReplicas.ENABLED - */ - readonly standbyReplicas?: VectorCollectionStandbyReplicas; - - /** - * A user defined IAM policy that allows API access to the collection. - */ - readonly customAossPolicy?: iam.ManagedPolicy; - - /** - * Type of vector collection - * - * @default - VECTORSEARCH - */ - readonly collectionType?: VectorCollectionType; - - /** - * A list of tags associated with the inference profile. - * */ - readonly tags?: Array; -} - -/** - * Interface representing a vector collection - */ -export interface IVectorCollection extends cdk.IResource { - /** - * The name of the collection. - */ - readonly collectionName: string; - - /** - * The ID of the collection. - */ - readonly collectionId: string; - - /** - * The ARN of the collection. - */ - readonly collectionArn: string; - - /** - * Indicates whether standby replicas are enabled. - */ - readonly standbyReplicas: VectorCollectionStandbyReplicas; - - /** - * An IAM policy that allows API access to the collection. - */ - readonly aossPolicy: iam.ManagedPolicy; - - /** - * An OpenSearch Access Policy that allows access to the index. - */ - readonly dataAccessPolicy: oss.CfnAccessPolicy; - - /** - * Type of collection - */ - readonly collectionType: VectorCollectionType; - - /** - * Return the given named metric for this VectorCollection. - * - * @param metricName The name of the metric - * @param props Properties for the metric - */ - metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric; - - /** - * Metric for the number of search requests. - * - * @param props Properties for the metric - */ - metricSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric; - - /** - * Metric for the number of index requests. - * - * @param props Properties for the metric - */ - metricIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric; - - /** - * Metric for the search latency. - * - * @param props Properties for the metric - */ - metricSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric; - - /** - * Metric for the 90th percentile search latency. - * - * @param props Properties for the metric - */ - metricSearchLatencyP90(props?: cloudwatch.MetricOptions): cloudwatch.Metric; -} - -/** - * A new or imported vector collection. - */ -abstract class VectorCollectionBase extends cdk.Resource implements IVectorCollection { - public abstract readonly collectionName: string; - public abstract readonly collectionId: string; - public abstract readonly collectionArn: string; - public abstract readonly standbyReplicas: VectorCollectionStandbyReplicas; - public abstract readonly aossPolicy: iam.ManagedPolicy; - public abstract readonly dataAccessPolicy: oss.CfnAccessPolicy; - public abstract readonly collectionType: VectorCollectionType; - - public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return new cloudwatch.Metric({ - namespace: 'AWS/AOSS', - metricName, - dimensionsMap: { - CollectionId: this.collectionId, - }, - ...props, - }); - } - - public metricSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metric('SearchRequestCount', props); - } - - public metricIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metric('IndexRequestCount', props); - } - - public metricSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metric('SearchLatency', { statistic: 'Average', ...props }); - } - - public metricSearchLatencyP90(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metric('SearchLatency', { statistic: 'p90', ...props }); - } -} - -/** - * Provides a vector search collection in Amazon OpenSearch Serverless. - */ -export class VectorCollection extends VectorCollectionBase { - /** - * Return metrics for all vector collections. - */ - public static metricAll(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return new cloudwatch.Metric({ - namespace: 'AWS/AOSS', - metricName, - statistic: 'Sum', - ...props, - }); - } - - /** - * Metric for the total number of search requests across all collections. - */ - public static metricAllSearchRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metricAll('SearchRequestCount', props); - } - - /** - * Metric for the total number of index requests across all collections. - */ - public static metricAllIndexRequestCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metricAll('IndexRequestCount', props); - } - - /** - * Metric for average search latency across all collections. - */ - public static metricAllSearchLatency(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.metricAll('SearchLatency', { - statistic: 'Average', - ...props, - }); - } - - /** - * Import an existing collection using its attributes. - * @param constructScope The parent creating construct. - * @param constructId The construct's name. - * @param attrs The collection attributes to use. - */ - public static fromCollectionAttributes( - constructScope: Construct, - constructId: string, - attrs: VectorCollectionAttributes, - ): IVectorCollection { - class Import extends VectorCollectionBase { - public readonly collectionArn = attrs.collectionArn; - public readonly collectionId = attrs.collectionId; - public readonly collectionName = attrs.collectionName; - public readonly standbyReplicas = attrs.standbyReplicas; - public readonly collectionType = attrs.collectionType; - public readonly aossPolicy: iam.ManagedPolicy; - public readonly dataAccessPolicy: oss.CfnAccessPolicy; - - constructor(scope: Construct, id: string) { - super(scope, id); - - this.aossPolicy = new iam.ManagedPolicy(this, 'ImportedAOSSPolicy', { - statements: [ - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: ['aoss:APIAccessAll'], - resources: [this.collectionArn], - }), - ], - }); - - this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'ImportedDataAccessPolicy', { - name: (this.physicalName.length > 32 ? this.physicalName.substring(0, 29) + 'dpa' : - this.physicalName + '-dpagent'), - type: 'data', - policy: '[]', - }); - } - } - return new Import(constructScope, constructId); - } - - public readonly collectionName: string; - public readonly standbyReplicas: VectorCollectionStandbyReplicas; - public readonly collectionId: string; - public readonly collectionArn: string; - public readonly aossPolicy: iam.ManagedPolicy; - public readonly dataAccessPolicy: oss.CfnAccessPolicy; - public readonly collectionType: VectorCollectionType; - public readonly collectionEndpoint: string; - public readonly dashboardEndpoint: string; - - /** - * Instance of CfnCollection. - */ - private readonly _resource: oss.CfnCollection; - - /** - * An OpenSearch Access Policy document that will become `dataAccessPolicy`. - * @private - */ - private dataAccessPolicyDocument: any[] = []; - - constructor(scope: Construct, id: string, props?: VectorCollectionProps) { - super(scope, id); - - // Ensure collection name stays within 32 chars while maintaining uniqueness - const physicalName = this.generatePhysicalName(); - - this.collectionName = props?.collectionName ?? - (physicalName.length > 22 ? - physicalName.substring(0, 22) + '-vec' : // truncate long names - physicalName + '-vec'); // short names can use full physical name - - this.standbyReplicas = props?.standbyReplicas ?? VectorCollectionStandbyReplicas.ENABLED; - this.collectionType = props?.collectionType ?? VectorCollectionType.VECTORSEARCH; - - const encryptionPolicyName = (physicalName.length > 32 ? - physicalName.substring(0, 30) + 'ep' : - physicalName + '-encryptpolicy'); - - const encryptionPolicy = new oss.CfnSecurityPolicy(this, 'EncryptionPolicy', { - name: encryptionPolicyName, - type: 'encryption', - policy: JSON.stringify({ - Rules: [ - { - ResourceType: 'collection', - Resource: [`collection/${this.collectionName}`], - }, - ], - AWSOwnedKey: true, - }), - }); - - const networkPolicyName = (physicalName.length > 32 ? - physicalName.substring(0, 30) + 'np' : - physicalName + '-networkpolicy'); - - - const networkPolicy = new oss.CfnSecurityPolicy(this, 'NetworkPolicy', { - name: networkPolicyName, - type: 'network', - policy: JSON.stringify([ - { - Rules: [ - { - ResourceType: 'collection', - Resource: [`collection/${this.collectionName}`], - }, - { - ResourceType: 'dashboard', - Resource: [`collection/${this.collectionName}`], - }, - ], - AllowFromPublic: true, - }, - ]), - }); - - this._resource = new oss.CfnCollection(this, 'VectorCollection', { - name: this.collectionName, - type: this.collectionType, - standbyReplicas: this.standbyReplicas, - description: props?.description, - tags: props?.tags, - }); - - this.collectionArn = this._resource.attrArn; - this.collectionId = this._resource.attrId; - this.collectionEndpoint = this._resource.attrCollectionEndpoint; - this.dashboardEndpoint = this._resource.attrDashboardEndpoint; - - if (props?.customAossPolicy) { - this.aossPolicy = props.customAossPolicy; - } else { - this.aossPolicy = new iam.ManagedPolicy( - this, - 'AOSSApiAccessAll', { - statements: [ - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: [ - 'aoss:APIAccessAll'], - resources: [this._resource.attrArn], - }), - ], - }, - ); - } - - this._resource.node.addDependency(encryptionPolicy); - this._resource.node.addDependency(networkPolicy); - - - const dataAccessPolicyName = (physicalName.length > 32 ? physicalName.substring(0, 30) + 'dp' : - physicalName + 'dataaccesspolicy'); - - this.dataAccessPolicy = new oss.CfnAccessPolicy(this, 'DataAccessPolicy', { - name: dataAccessPolicyName, - type: 'data', - policy: cdk.Lazy.string({ - produce: () => JSON.stringify(this.dataAccessPolicyDocument), - }), - }); - - this.node.addValidation({ - validate: () => { - const errors: string[] = []; - - if (this.collectionName) { - if (!/^[a-z0-9-]+$/.test(this.collectionName)) { - errors.push('Collection name must contain only lowercase letters, numbers, and hyphens'); - } - if (this.collectionName.length < 3 || this.collectionName.length > 32) { - errors.push('Collection name must be between 3 and 32 characters'); - } - } - - return errors; - }, - }); - - cdk.Tags.of(this).add('Name', this.collectionName); - cdk.Tags.of(this).add('Type', 'VectorCollection'); - } - /** - * Grants the specified role access to data in the collection. - * @param grantee The role to grant access to. - */ - grantDataAccess(grantee: iam.IRole) { - // Update data access policy - this.dataAccessPolicyDocument.push({ - Rules: [ - { - Resource: [`collection/${this.collectionName}`], - Permission: [ - 'aoss:DescribeCollectionItems', - 'aoss:CreateCollectionItems', - 'aoss:UpdateCollectionItems', - ], - ResourceType: 'collection', - }, - { - Resource: [ - `index/${this.collectionName}/*`, - `index/${this.collectionName}/bedrock-knowledge-base-default-index` - ], - Permission: [ - 'aoss:CreateIndex', - 'aoss:UpdateIndex', - 'aoss:DescribeIndex', - 'aoss:ReadDocument', - 'aoss:WriteDocument', - ], - ResourceType: 'index', - }, - ], - Principal: [ - grantee.roleArn, - `arn:aws:sts::${cdk.Stack.of(this).account}:assumed-role/cdk-${cdk.Stack.of(this).synthesizer.bootstrapQualifier}-cfn-exec-role-${cdk.Stack.of(this).account}-${cdk.Stack.of(this).region}/AWSCloudFormation` - - ], - Description: '', - }); - - // Add IAM policy - grantee.addManagedPolicy(this.aossPolicy); - - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts deleted file mode 100644 index e4e11eb57cfdc..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/knowledge-bases/vectorstore-knowledgebases/opensearch-vector-index.ts +++ /dev/null @@ -1,375 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import * as cdk from 'aws-cdk-lib'; -import * as oss from 'aws-cdk-lib/aws-opensearchserverless'; -import { Construct } from 'constructs'; -import { VectorCollection } from './opensearch-collection'; -import * as iam from 'aws-cdk-lib/aws-iam'; - -/** - * The field data type. Must be a valid OpenSearch field type. - */ -export enum OpensearchFieldType { - TEXT = 'text', - KNN_VECTOR = 'knn_vector', -} - -/** - * The k-NN search engine to use. - */ -export enum EngineType { - /** - * C++ implementation. - */ - FAISS = 'faiss', - /** - * C++ implementation. - */ - NMSLIB = 'nmslib', - /** - * Java implementation. - */ - LUCENE = 'lucene', -} - -/** - * The algorithm name for k-NN search. - */ -export enum AlgorithmNameType { - HNSW = 'hnsw', - IVF = 'ivf', -} - -/** - * The distance function used for k-NN search. - */ -export enum SpaceType { - L2 = 'l2', - L1 = 'l1', - LINF = 'linf', - COSINESIMILARITY = 'cosinesimil', - INNERPRODUCT = 'innerproduct', - HAMMING = 'hamming', -} - -/** - * Additional parameters for the k-NN algorithm. - */ -export interface MethodParameters { - /** - * The size of the dynamic list used during k-NN graph creation. - */ - readonly efConstruction?: number; - /** - * Number of neighbors to consider during k-NN search. - */ - readonly m?: number; -} - -/** - * Configuration for k-NN search method. - */ -export interface Method { - /** - * The k-NN search engine to use. - */ - readonly engine: EngineType; - /** - * The algorithm name for k-NN search. - */ - readonly name: AlgorithmNameType; - /** - * Additional parameters for the k-NN algorithm. - */ - readonly parameters?: MethodParameters; - /** - * The distance function used for k-NN search. - */ - readonly spaceType?: SpaceType; -} - -export interface PropertyMapping { - /** - * Dimension size for vector fields, defines the number of dimensions in the vector. - */ - readonly dimension?: number; - /** - * Whether the index is indexed. Previously, this was called `filterable`. - */ - readonly index?: boolean; - /** - * Configuration for k-NN search method. - */ - readonly method?: Method; - /** - * Defines the fields within the mapping, including their types and configurations. - */ - readonly properties?: Record; - /** - * The field data type. Must be a valid OpenSearch field type. - */ - readonly type: OpensearchFieldType; - /** - * Default value for the field when not specified in a document. - */ - readonly value?: string; -} - -/** - * Index settings for the OpenSearch Serverless index. - */ -export interface IndexSettings { - /** - * Enable or disable k-nearest neighbor search capability. - */ - readonly knn?: boolean; - /** - * The size of the dynamic list for the nearest neighbors. - */ - readonly knnAlgoParamEfSearch?: number; - /** - * How often to perform a refresh operation. For example, 1s or 5s. - */ - readonly refreshInterval?: cdk.Duration; -} - -/** - * The mappings for the OpenSearch Serverless index. - */ -export interface MappingsProperty { - readonly properties: Record; -} - -/** - * Properties for the VectorIndex. - */ -export interface VectorIndexProps { - /** - * The OpenSearch Vector Collection. - */ - readonly collection: VectorCollection; - /** - * The name of the index. - */ - readonly indexName: string; - /** - * The metadata management fields. - */ - readonly mappings?: MappingsProperty; - /* - * The settings for the index. - */ - readonly settings?: IndexSettings; - - /* - * The role for the vector index. - */ - readonly role: iam.IRole; -} - -export interface VectorIndexAttributes { - /** - * The endpoint of the collection - */ - readonly collectionEndpoint: string; - /** - * The name of the index - */ - readonly indexName: string; -} - -/** - * Interface representing a vector index - */ -export interface IVectorIndex extends cdk.IResource { - /** - * The endpoint of the collection - */ - readonly collectionEndpoint: string; - /** - * The name of the index - */ - readonly indexName: string; - -} - -/** - * A new or imported vector index. - */ -abstract class VectorIndexBase extends cdk.Resource implements IVectorIndex { - public abstract readonly collectionEndpoint: string; - public abstract readonly indexName: string; - public principalArn: string | undefined - - public static fromVectorIndexAttributes( - scope: Construct, - constructId: string, - attrs: VectorIndexAttributes, - ): IVectorIndex { - class Import extends VectorIndexBase { - public readonly collectionEndpoint = attrs.collectionEndpoint; - public readonly indexName = attrs.indexName; - } - return new Import(scope, constructId); - } - -} - -/** - * Provides a vector index in Amazon OpenSearch Serverless. - */ -export class VectorIndex extends VectorIndexBase { - /** - * The name of the index. - */ - public readonly indexName: string; - /** - * The endpoint of the collection - */ - public readonly collectionEndpoint: string; - - /** - * Instance of CfnIndex. - */ - private readonly _resource: oss.CfnIndex; - - - - - constructor(scope: Construct, id: string, props: VectorIndexProps) { - super(scope, id); - - // ------------------------------------------------------ - // Set attributes or defaults - // ------------------------------------------------------ - this.indexName = props.indexName; - const physicalName = this.generatePhysicalName(); - - // Grant data access to the role first - // props.collection.grantDataAccess(props.role); - props.role.addManagedPolicy(props.collection.aossPolicy) - - // logging, cfnoutput the role name - new cdk.CfnOutput(this, 'RoleName', { - value: props.role.roleName, - }); - - - - const manageIndexPolicyName = physicalName.length > 29 ? - physicalName.substring(0, 29) + 'vip' : // vector-index-policy shortened to vip - physicalName + '-vip'; - - const manageIndexPolicy = new oss.CfnAccessPolicy( - this, - 'ManageIndexPolicy', - { - name: manageIndexPolicyName, - type: 'data', - policy: JSON.stringify([ - { - Rules: [ - { - Resource: [ - `index/${props.collection.collectionName}/*`, - `index/${props.collection.collectionName}/${props.indexName}` - ], - Permission: [ - 'aoss:DescribeIndex', - 'aoss:CreateIndex', - 'aoss:DeleteIndex', - 'aoss:UpdateIndex', - 'aoss:ReadDocument', - 'aoss:WriteDocument' - ], - ResourceType: 'index', - }, - { - Resource: [`collection/${props.collection.collectionName}`], - Permission: ['aoss:DescribeCollectionItems'], - ResourceType: 'collection', - }, - ], - Principal: [ - props.role.roleArn, - `arn:aws:sts::${cdk.Stack.of(this).account}:assumed-role/cdk-${cdk.Stack.of(this).synthesizer.bootstrapQualifier}-cfn-exec-role-${cdk.Stack.of(this).account}-${cdk.Stack.of(this).region}/AWSCloudFormation` - - ], - Description: '', - }, - ]), - }, - ); - - new cdk.CfnOutput(this, 'PoliciesCreated', { - value: 'All policies created, now creating index', - }); - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - - // Add explicit dependency on collection's endpoint - const collectionEndpoint = cdk.Token.asString(props.collection.collectionEndpoint); - - this._resource = new oss.CfnIndex(this, 'VectorIndex', { - indexName: props.indexName, - collectionEndpoint: collectionEndpoint, - mappings: this._renderMappings(props.mappings), - settings: this._renderIndexSettings(props.settings), - }); - - new cdk.CfnOutput(this, 'IndexCreated', { - value: 'Index created successfully', - }); - - this.collectionEndpoint = this._resource.collectionEndpoint; - - // Add explicit dependencies in correct order - this._resource.node.addDependency(manageIndexPolicy); - this._resource.node.addDependency(props.collection); - this._resource.node.addDependency(props.collection.dataAccessPolicy); - - } - - /** - * Render the index settings. - */ - private _renderIndexSettings(props?: IndexSettings): oss.CfnIndex.IndexSettingsProperty { - if (!props) return {}; - - return { - index: { - knn: props?.knn, - knnAlgoParamEfSearch: props?.knnAlgoParamEfSearch, - refreshInterval: props?.refreshInterval?.toString(), - }, - }; - } - - /** - * Render the mappings. - */ - private _renderMappings(props?: MappingsProperty): oss.CfnIndex.MappingsProperty { - if (!props) return {}; - - const convertedProps: Record = {}; - for (const [key, value] of Object.entries(props.properties)) { - convertedProps[key] = value as unknown as oss.CfnIndex.PropertyMappingProperty; - } - - return { - properties: convertedProps, - }; - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts deleted file mode 100644 index ef44f46e5fc52..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-variant.ts +++ /dev/null @@ -1,294 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { aws_bedrock as bedrock } from 'aws-cdk-lib'; -import { CfnPrompt } from 'aws-cdk-lib/aws-bedrock'; -import { IAgentAlias } from '../agents/agent-alias'; -import { IInvokable } from '../models'; - -// ------------------------------------------------------ -// COMMON -// ------------------------------------------------------ -export enum PromptTemplateType { - TEXT = 'TEXT', - CHAT = 'CHAT', -} - -export interface CommonPromptVariantProps { - /** - * The name of the prompt variant. - */ - readonly variantName: string; - /** - * The model which is used to run the prompt. The model could be a foundation - * model, a custom model, or a provisioned model. - */ - readonly model: IInvokable; - /** - * The variables in the prompt template that can be filled in at runtime. - */ - readonly promptVariables?: string[]; -} - -// ------------------------------------------------------ -// TEXT -// ------------------------------------------------------ -export interface TextPromptVariantProps extends CommonPromptVariantProps { - /** - * Inference configuration for the Text Prompt - */ - readonly inferenceConfiguration?: bedrock.CfnPrompt.PromptModelInferenceConfigurationProperty; - /** - * The text prompt. Variables are used by enclosing its name with double curly braces - * as in `{{variable_name}}`. - */ - readonly promptText: string; -} - -// ------------------------------------------------------ -// CHAT -// ------------------------------------------------------ -export interface ChatPromptVariantProps extends CommonPromptVariantProps { - /** - * Inference configuration for the Chat Prompt. - * Must include at least one User Message. - * The messages should alternate between User and Assistant. - */ - readonly messages: ChatMessage[]; - /** - * Context or instructions for the model to consider before generating a response. - */ - readonly system?: string; - /** - * The configuration with available tools to the model and how it must use them. - */ - readonly toolConfiguration?: ToolConfiguration; - /** - * Inference configuration for the Text Prompt - */ - readonly inferenceConfiguration?: bedrock.CfnPrompt.PromptModelInferenceConfigurationProperty; -} - -export enum ChatMessageRole { - /** - * This role represents the human user in the conversation. Inputs from the - * user guide the conversation and prompt responses from the assistant. - */ - USER = 'user', - /** - * This is the role of the model itself, responding to user inputs based on - * the context set by the system. - */ - ASSISTANT = 'assistant', -} - -export class ChatMessage { - public static user(text: string) { - return new ChatMessage(ChatMessageRole.USER, text); - } - public static assistant(text: string) { - return new ChatMessage(ChatMessageRole.ASSISTANT, text); - } - public readonly role: ChatMessageRole; - public readonly text: string; - - constructor(role: ChatMessageRole, text: string) { - (this.role = role), (this.text = text); - } - /** - * Renders as Cfn Property - * @internal This is an internal core function and should not be called directly. - */ - public __render(): CfnPrompt.MessageProperty { - return { - role: this.role, - content: [ - { - text: this.text, - }, - ], - }; - } -} - -export interface ToolConfiguration { - readonly toolChoice: ToolChoice; - readonly tools: CfnPrompt.ToolProperty[]; -} - -export class ToolChoice { - /** The model must request at least one tool (no text is generated) */ - public static readonly ANY = new ToolChoice({}, undefined, undefined); - /** (Default). The Model automatically decides if a tool should be called or whether to generate text instead.*/ - public static readonly AUTO = new ToolChoice(undefined, {}, undefined); - /** The Model must request the specified tool. Only supported by some models like Anthropic Claude 3 models. */ - public static specificTool(toolName: string) { - return new ToolChoice(undefined, undefined, toolName); - } - public readonly any?: any; - public readonly auto?: any; - public readonly tool?: string; - - constructor(any: any, auto: any, tool?: string) { - (this.any = any), (this.auto = auto), (this.tool = tool); - } - /** - * - * @internal - */ - public __render(): CfnPrompt.ToolChoiceProperty { - return { - any: this.any, - auto: this.auto, - tool: this.tool ? { name: this.tool } : undefined, - }; - } -} -// ------------------------------------------------------ -// AGENT -// ------------------------------------------------------ - -export interface AgentPromptVariantProps extends CommonPromptVariantProps { - /** - * An alias pointing to the agent version to be used. - */ - readonly agentAlias: IAgentAlias; - /** - * The text prompt. Variables are used by enclosing its name with double curly braces - * as in `{{variable_name}}`. - */ - readonly promptText: string; -} - -// ------------------------------------------------------ -// VARIANTS -// ------------------------------------------------------ -/** - * Variants are specific sets of inputs that guide FMs on Amazon Bedrock to - * generate an appropriate response or output for a given task or instruction. - * You can optimize the prompt for specific use cases and models. - */ -export abstract class PromptVariant { - // ------------------------------------------------------ - // Static Methods - // ------------------------------------------------------ - /** - * Static method to create a text template - */ - public static text(props: TextPromptVariantProps): PromptVariant { - return { - name: props.variantName, - templateType: PromptTemplateType.TEXT, - modelId: props.model.invokableArn, - inferenceConfiguration: { - text: { ...props.inferenceConfiguration }, - }, - templateConfiguration: { - text: { - inputVariables: props.promptVariables?.flatMap((variable: string) => { - return { name: variable }; - }), - text: props.promptText, - }, - }, - }; - } - - /** - * Static method to create a chat template. Use this template type when - * the model supports the Converse API or the AnthropicClaude Messages API. - * This allows you to include a System prompt and previous User messages - * and Assistant messages for context. - */ - public static chat(props: ChatPromptVariantProps): PromptVariant { - return { - name: props.variantName, - templateType: PromptTemplateType.CHAT, - modelId: props.model.invokableArn, - inferenceConfiguration: { - text: { ...props.inferenceConfiguration }, - }, - templateConfiguration: { - chat: { - inputVariables: props.promptVariables?.flatMap((variable: string) => { - return { name: variable }; - }), - messages: props.messages?.flatMap(m => m.__render()), - system: props.system ? [{ text: props.system }] : undefined, - toolConfiguration: props.toolConfiguration - ? { - toolChoice: props.toolConfiguration.toolChoice.__render(), - tools: props.toolConfiguration.tools, - } - : undefined, - }, - }, - }; - } - - /** - * Static method to create an agent prompt template. - */ - public static agent(props: AgentPromptVariantProps): PromptVariant { - return { - name: props.variantName, - templateType: PromptTemplateType.TEXT, - genAiResource: { - agent: { - agentIdentifier: props.agentAlias.aliasArn, - }, - }, - templateConfiguration: { - text: { - inputVariables: props.promptVariables?.flatMap((variable: string) => { - return { name: variable }; - }), - text: props.promptText, - }, - }, - }; - } - - // ------------------------------------------------------ - // Properties - // ------------------------------------------------------ - /** - * The name of the prompt variant. - */ - public abstract name: string; - /** - * The type of prompt template. - */ - public abstract templateType: PromptTemplateType; - /** - * The inference configuration. - */ - public abstract inferenceConfiguration?: bedrock.CfnPrompt.PromptInferenceConfigurationProperty; - /** - * The unique identifier of the model with which to run inference on the prompt. - */ - public abstract modelId?: string; - /** - * The template configuration. - */ - public abstract templateConfiguration: bedrock.CfnPrompt.PromptTemplateConfigurationProperty; - /** - * The template configuration. - */ - public abstract genAiResource?: bedrock.CfnPrompt.PromptGenAiResourceProperty; - - // ------------------------------------------------------ - // Constructor - // ------------------------------------------------------ - protected constructor() {} -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts deleted file mode 100644 index 728c9b50bd49c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt-version.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { aws_bedrock as bedrock } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -import { Prompt } from './prompt'; - - -export interface PromptVersionProps { - /** - * The prompt to use for this version. - */ - readonly prompt: Prompt; - - /** - * The description of the prompt version. - */ - readonly description?: string; -} - -/** - * Creates a version of the prompt. - * - * Use this to create a static snapshot of your prompt that can be deployed - * to production. Versions allow you to easily switch between different - * configurations for your prompt and update your application with the most - * appropriate version for your use-case. - * @resource AWS::Bedrock::PromptVersion - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management-deploy.html - */ -export class PromptVersion extends Construct { - /** - * The Amazon Resource Name (ARN) of the prompt version. - * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345:1" - */ - public readonly versionArn: string; - - /** - * The prompt used by this version. - */ - public readonly prompt: Prompt; - - /** - * The version of the prompt that was created. - */ - public readonly version: string; - - /** - * Instance of prompt version. - */ - private readonly _resource: bedrock.CfnPromptVersion; - - constructor(scope: Construct, id: string, props: PromptVersionProps) { - super(scope, id); - - this.prompt = props.prompt; - - // L1 instantiation - this._resource = new bedrock.CfnPromptVersion(this, id, { - description: props.description, - promptArn: props.prompt.promptArn, - }); - - this.versionArn = this._resource.attrArn; - this.version = this._resource.attrVersion; - - } - -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts deleted file mode 100644 index 35f3ca91a7cfd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/prompts/prompt.ts +++ /dev/null @@ -1,290 +0,0 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import { Arn, ArnFormat, aws_kms as kms, Lazy, aws_bedrock as bedrock, Resource } from 'aws-cdk-lib'; -import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; -import { IKey } from 'aws-cdk-lib/aws-kms'; -import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; -import { Construct } from 'constructs'; -import { PromptVariant } from './prompt-variant'; - -/****************************************************************************** - * COMMON - *****************************************************************************/ -/** - * Represents a Prompt, either created with CDK or imported. - */ -export interface IPrompt { - /** - * The ARN of the prompt. - * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" - */ - readonly promptArn: string; - /** - * The ID of the prompt. - * @example "PROMPT12345" - */ - readonly promptId: string; - /** - * Optional KMS encryption key associated with this prompt. - */ - readonly kmsKey?: IKey; - /** - * The version of the prompt. - * @default - "DRAFT" - */ - promptVersion: string; -} - -/** - * Abstract base class for a Prompt. - * Contains methods and attributes valid for Promtps either created with CDK or imported. - */ -export abstract class PromptBase extends Resource implements IPrompt { - public abstract readonly promptArn: string; - public abstract readonly promptId: string; - public abstract readonly kmsKey?: IKey; - public abstract promptVersion: string; - - /** - * Grant the given identity permissions to get the prompt. - */ - public grantGet(grantee: IGrantable): Grant { - return Grant.addToPrincipal({ - grantee, - resourceArns: [this.promptArn], - actions: ['bedrock:GetPrompt'], - scope: this, - }); - } -} - -/****************************************************************************** - * PROPS FOR NEW CONSTRUCT - *****************************************************************************/ - -export interface PromptProps { - /** - * The name of the prompt. - */ - readonly promptName: string; - /** - * A description of what the prompt does. - * @default - No description provided. - */ - readonly description?: string; - /** - * The KMS key that the prompt is encrypted with. - * @default - AWS owned and managed key. - */ - readonly kmsKey?: kms.IKey; - /** - * The Prompt Variant that will be used by default. - * @default - No default variant provided. - */ - readonly defaultVariant?: PromptVariant; - /** - * The variants of your prompt. Variants can use different messages, models, - * or configurations so that you can compare their outputs to decide the best - * variant for your use case. Maximum of 3 variants. - */ - readonly variants?: PromptVariant[]; -} - -/****************************************************************************** - * ATTRS FOR IMPORTED CONSTRUCT - *****************************************************************************/ -export interface PromptAttributes { - /** - * The ARN of the prompt. - * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" - */ - readonly promptArn: string; - /** - * Optional KMS encryption key associated with this prompt. - */ - readonly kmsKey?: IKey; - /** - * The version of the prompt. - * @default - "DRAFT" - */ - readonly promptVersion?: string; -} - -/****************************************************************************** - * NEW CONSTRUCT DEFINITION - *****************************************************************************/ -/** - * Prompts are a specific set of inputs that guide FMs on Amazon Bedrock to - * generate an appropriate response or output for a given task or instruction. - * You can optimize the prompt for specific use cases and models. - * @resource AWS::Bedrock::Prompt - * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management.html - */ -export class Prompt extends Construct implements IPrompt { - // ------------------------------------------------------ - // Import Methods - // ------------------------------------------------------ - public static fromPromptAttributes(scope: Construct, id: string, attrs: PromptAttributes): IPrompt { - const formattedArn = Arn.split(attrs.promptArn, ArnFormat.SLASH_RESOURCE_NAME); - class Import extends PromptBase { - public readonly promptArn = attrs.promptArn; - public readonly promptId = formattedArn.resourceName!; - public readonly promptVersion = attrs.promptVersion ?? 'DRAFT'; - public readonly kmsKey = attrs.kmsKey; - } - - return new Import(scope, id); - } - // ------------------------------------------------------ - // Attributes - // ------------------------------------------------------ - /** - * The name of the prompt. - */ - public readonly promptName: string; - /** - * The KMS key that the prompt is encrypted with. - */ - public readonly kmsKey?: IKey; - /** - * The ARN of the prompt. - * @example "arn:aws:bedrock:us-east-1:123456789012:prompt/PROMPT12345" - */ - public readonly promptArn: string; - /** - * The ID of the prompt. - * @example "PROMPT12345" - */ - public readonly promptId: string; - /** - * The version of the prompt. - */ - public promptVersion: string; - /** - * The variants of the prompt. - */ - readonly variants: PromptVariant[]; - /** - * The computed hash of the prompt properties. - * @internal - */ - protected readonly _hash: string; - /** - * L1 resource - */ - private readonly _resource: bedrock.CfnPrompt; - - // ------------------------------------------------------ - // Constructor - // ------------------------------------------------------ - constructor(scope: Construct, id: string, props: PromptProps) { - super(scope, id); - // ------------------------------------------------------ - // Set properties or defaults - // ------------------------------------------------------ - this.promptName = props.promptName; - this.kmsKey = props.kmsKey; - this.variants = props.variants ?? []; - - // ------------------------------------------------------ - // Validation - // ------------------------------------------------------ - this.node.addValidation({ validate: () => this.validatePromptName() }); - this.node.addValidation({ validate: () => this.validatePromptVariants() }); - - // ------------------------------------------------------ - // CFN Props - With Lazy support - // ------------------------------------------------------ - let cfnProps: bedrock.CfnPromptProps = { - customerEncryptionKeyArn: this.kmsKey?.keyArn, - defaultVariant: props.defaultVariant?.name, - description: props.description, - name: props.promptName, - variants: Lazy.any({ - produce: () => this.variants, - }), - }; - - // Hash calculation useful for versioning - this._hash = md5hash(JSON.stringify(cfnProps)); - - // ------------------------------------------------------ - // L1 Instantiation - // ------------------------------------------------------ - this._resource = new bedrock.CfnPrompt(this, 'Prompt', cfnProps); - - this.promptArn = this._resource.attrArn; - this.promptId = this._resource.attrId; - this.promptVersion = this._resource.attrVersion; - } - - // ------------------------------------------------------ - // Validation Methods - // ------------------------------------------------------ - /** - * Validates whether the prompt name is valid according to the specification. - * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-bedrock-prompt.html#cfn-bedrock-prompt-name - */ - private validatePromptName() { - const errors: string[] = []; - - const matchesPattern = /^([0-9a-zA-Z][_-]?){1,100}$/.test(this.promptName); - if (!matchesPattern) { - errors.push( - 'Valid characters are a-z, A-Z, 0-9, _ (underscore) and - (hyphen). And must not begin with a hyphen', - ); - } - if (errors.length > 0) { - errors.unshift(`Invalid prompt name (value: ${this.promptName})`); - } - return errors; - } - - /** - * Validates whether the number of prompt variants is respected. - */ - private validatePromptVariants() { - const MAX_VARIANTS = 3; - const errors: string[] = []; - if (this.variants.length > MAX_VARIANTS) { - errors.push( - `Error: Too many variants specified. The maximum allowed is ${MAX_VARIANTS}, but you have provided ${this.variants.length} variants.`, - ); - } - return errors; - } - - // ------------------------------------------------------ - // Helper Methods - // ------------------------------------------------------ - /** - * Creates a prompt version, a static snapshot of your prompt that can be - * deployed to production. - */ - public createVersion(description?: string): string { - const version = new bedrock.CfnPromptVersion(this, `PromptVersion-${this._hash}`, { - promptArn: this.promptArn, - description, - }); - this.promptVersion = version.attrVersion; - return this.promptVersion; - } - - /** - * Adds a prompt variant. - */ - public addVariant(variant: PromptVariant) { - this.variants.push(variant); - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts new file mode 100644 index 0000000000000..3409f4d876f1e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts @@ -0,0 +1,492 @@ +import { Match, Template } from 'aws-cdk-lib/assertions'; +import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as cdk from 'aws-cdk-lib'; + +// Import the module qualified +import * as bedrock from '../../lib'; +import { Memory } from '../../bedrock/agents/memory'; + +/* eslint-disable quote-props */ + +describe('Bedrock Agent', () => { + let stack: cdk.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new cdk.App(); + stack = new cdk.Stack(app, 'agent', { + env: { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION , + }, + }); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + describe('created with default properties', () => { + let agent: bedrock.IAgent; + + beforeEach(() => { + // Log stack region value for debugging + console.log('Stack region:', stack.region); + console.log('Is region token unresolved:', cdk.Token.isUnresolved(stack.region)); + console.log('Environment:', stack.environment); + + agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + }); + + test('creates a CFN Agent resource', () => { + Template.fromStack(stack).resourceCountIs('AWS::Bedrock::Agent', 1); + }); + + describe('creates a CFN Agent resource', () => { + test('with default properties', () => { + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), + 'FoundationModel': foundationModel.invokableArn, + 'IdleSessionTTLInSeconds': 3600, + 'AutoPrepare': false, + 'Description': Match.absent(), + 'CustomerEncryptionKeyArn': Match.absent(), + }); + }); + + test('with default action groups', () => { + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'UserInputAction', + 'ActionGroupExecutor': Match.absent(), + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + }), + Match.objectLike({ + 'ActionGroupName': 'CodeInterpreterAction', + 'ActionGroupExecutor': Match.absent(), + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + }), + ]), + }); + }); + }); + + test('creates an IAM role with correct trust policy', () => { + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { + 'AssumeRolePolicyDocument': { + 'Statement': [ + { + 'Action': 'sts:AssumeRole', + 'Effect': 'Allow', + 'Principal': { + 'Service': 'bedrock.amazonaws.com', + }, + 'Condition': { + 'StringEquals': { + 'aws:SourceAccount': Match.objectLike({ 'Ref': 'AWS::AccountId' }) + }, + 'ArnLike': { + 'aws:SourceArn': { + 'Fn::Join': ['', [ + 'arn:', + { 'Ref': 'AWS::Partition' }, + ':bedrock:', + { 'Ref': 'AWS::Region' }, + ':', + { 'Ref': 'AWS::AccountId' }, + ':agent/*' + ]], + }, + }, + }, + }, + ], + }, + }); + }); + + test('correctly adds bedrock:InvokeAgent permissions when grantInvoke() is called', () => { + const role = new iam.Role(stack, 'Role', { + assumedBy: new iam.AnyPrincipal(), + }); + + agent.grantInvoke(role); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': Match.arrayWith([ + Match.objectLike({ + 'Action': 'bedrock:InvokeAgent', + 'Effect': 'Allow', + 'Resource': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + }, + }), + ]), + }, + }); + }); + + test('onEvent adds an Event Rule', () => { + agent.onEvent('MyEvent'); + + Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { + 'EventPattern': { + 'source': ['aws.bedrock'], + 'detail': { + 'agent-id': [{ + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentId'], + }], + }, + }, + }); + }); + + test('metricCount returns a metric with correct dimensions', () => { + const countMetric = agent.metricCount(); + + new cloudwatch.Alarm(stack, 'Alarm', { + metric: countMetric, + threshold: 10, + evaluationPeriods: 2, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::CloudWatch::Alarm', { + 'EvaluationPeriods': 2, + 'Dimensions': [ + { + 'Name': 'AgentId', + 'Value': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentId'], + }, + }, + ], + 'MetricName': 'Invocations', + 'Namespace': 'AWS/Bedrock', + }); + }); + }); + + describe('created with all properties', () => { + test('sets all properties correctly', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + name: 'MyTestAgent', + description: 'Test agent description', + shouldPrepareAgent: true, + idleSessionTTL: cdk.Duration.minutes(30), + userInputEnabled: true, + codeInterpreterEnabled: true, + forceDelete: true, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentName': 'MyTestAgent', + 'Description': 'Test agent description', + 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), + 'FoundationModel': foundationModel.invokableArn, + 'IdleSessionTTLInSeconds': 1800, + 'AutoPrepare': true, + 'SkipResourceInUseCheckOnDelete': true, + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'UserInputAction', + 'ActionGroupExecutor': Match.absent(), + 'ActionGroupState': 'ENABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + }), + Match.objectLike({ + 'ActionGroupName': 'CodeInterpreterAction', + 'ActionGroupExecutor': Match.absent(), + 'ActionGroupState': 'ENABLED', + 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + }), + ]), + }); + }); + }); + + describe('imported by attributes', () => { + let agent: bedrock.IAgent; + + beforeEach(() => { + agent = bedrock.Agent.fromAgentAttrs(stack, 'ImportedAgent', { + agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO', + roleArn: cdk.Fn.join('', [ + 'arn:', + cdk.Fn.ref('AWS::Partition'), + ':iam::', + stack.account, + ':role/TestRole' + ]) + }); + }); + + test('has the correct agentId parsed from ARN', () => { + expect(agent.agentId).toEqual('OKDSJOGKMO'); + }); + + test('has the correct role ARN', () => { + expect(stack.resolve(agent.role.roleArn)).toEqual({ + 'Fn::Join': ['', [ + 'arn:', + { 'Ref': 'AWS::Partition' }, + ':iam::', + { 'Ref': 'AWS::AccountId' }, + ':role/TestRole' + ]] + }); + }); + }); + + test('cannot be created with instruction less than 40 characters', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'Too short', + foundationModel, + }); + }).toThrow(/instruction must be at least 40 characters/); + }); + + test('does not fail validation if instruction is a late-bound value', () => { + const parameter = new cdk.CfnParameter(stack, 'Parameter'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: parameter.valueAsString, + foundationModel, + }); + }); + + describe('created with memory configuration', () => { + test('sets memory configuration correctly', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory: Memory.sessionSummary({ + memoryDurationDays: 30, + maxRecentSessions: 20, + }), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'MemoryConfiguration': { + 'EnabledMemoryTypes': ['SESSION_SUMMARY'], + 'StorageDays': 30, + 'SessionSummaryConfiguration': { + 'MaxRecentSessions': 20, + }, + }, + }); + }); + }); + + describe('created with agent collaborators', () => { + test('sets agent collaborators correctly', () => { + const collaboratorAgent = new bedrock.Agent(stack, 'CollaboratorAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const collaboratorAlias = new bedrock.AgentAlias(stack, 'CollaboratorAlias', { + agent: collaboratorAgent, + aliasName: 'TestAlias', + }); + + const collaborator = new bedrock.AgentCollaborator({ + agentAlias: collaboratorAlias, + collaborationInstruction: 'Collaborate with this agent for testing', + collaboratorName: 'TestCollaborator', + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, + agentCollaborators: [collaborator], + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentCollaboration': 'SUPERVISOR', + 'AgentCollaborators': Match.arrayWith([ + Match.objectLike({ + 'AgentDescriptor': { + 'AliasArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('CollaboratorAlias.*'), 'AgentAliasArn'], + }, + }, + 'CollaborationInstruction': 'Collaborate with this agent for testing', + 'CollaboratorName': 'TestCollaborator', + }), + ]), + }); + }); + }); + + describe('name generation and validation', () => { + test('generates valid role name within length limits', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { + RoleName: Match.stringLikeRegexp('^[a-z0-9-]{1,50}-bedrockagent$'), + }); + }); + }); + + describe('action group management', () => { + test('can add multiple action groups at once', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + // Create custom action groups with unique names + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'CustomAction1', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'CustomAction2', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.CODE_INTERPRETER, + }); + + agent.addActionGroups(actionGroup1, actionGroup2); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + ActionGroups: Match.arrayWith([ + Match.objectLike({ + ActionGroupName: 'CustomAction1', + ActionGroupState: 'ENABLED', + }), + Match.objectLike({ + ActionGroupName: 'CustomAction2', + ActionGroupState: 'ENABLED', + }), + ]), + }); + }); + + test('throws error when adding duplicate action group names', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + // Create two action groups with the same name + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'DuplicateAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'DuplicateAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + agent.addActionGroup(actionGroup1); + expect(() => { + agent.addActionGroup(actionGroup2); + }).toThrow(/An action group with name: DuplicateAction has already been defined/); + }); + }); + + describe('agent collaborators rendering', () => { + test('returns undefined when no collaborators are present', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentCollaborators: Match.absent(), + }); + }); + }); + + describe('created with custom orchestration', () => { + test('sets custom orchestration correctly', () => { + const fn = new cdk.aws_lambda.Function(stack, 'TestFunction', { + runtime: cdk.aws_lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: cdk.aws_lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, + customOrchestration: { + executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'OrchestrationType': 'CUSTOM_ORCHESTRATION', + 'CustomOrchestration': { + 'Executor': { + 'Lambda': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + }, + }, + }); + }); + }); + + describe('created with KMS key', () => { + test('sets KMS key correctly', () => { + const key = new cdk.aws_kms.Key(stack, 'TestKey'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + kmsKey: key, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'CustomerEncryptionKeyArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], + }, + }); + }); + }); + + describe('created with existing role', () => { + test('uses existing role correctly', () => { + const role = new iam.Role(stack, 'ExistingRole', { + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + existingRole: role, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentResourceRoleArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], + }, + }); + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json new file mode 100644 index 0000000000000..f77a1dd10965f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json @@ -0,0 +1,21 @@ +{ + "version": "41.0.0", + "files": { + "8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2": { + "displayName": "BAgentIntegTestStack Template", + "source": { + "path": "BAgentIntegTestStack.template.json", + "packaging": "file" + }, + "destinations": { + "551246883740-us-east-1": { + "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", + "objectKey": "8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json new file mode 100644 index 0000000000000..1c4f6bd080505 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json @@ -0,0 +1,154 @@ +{ + "Resources": { + "TestAgentRole522C6259": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": "arn:aws:bedrock:us-east-1:551246883740:agent/*" + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--bagentintegteststack-testagent-98576594-bedrockagent" + } + }, + "TestAgentRoleDefaultPolicy0A38CDBA": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "TestAgentRoleDefaultPolicy0A38CDBA", + "Roles": [ + { + "Ref": "TestAgentRole522C6259" + } + ] + } + }, + "TestAgentAgentResource807C0F50": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-agent-1", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "TestAgentRole522C6259", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "TestAgentRoleDefaultPolicy0A38CDBA" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json similarity index 53% rename from packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json index 128b8a70cf628..dd5768ddca1cc 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.assets.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json @@ -1,15 +1,16 @@ { - "version": "20.0.0", + "version": "41.0.0", "files": { - "30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D Template", "source": { - "path": "ExampleResourceIntegTestStack.template.json", + "path": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json", "packaging": "file" }, "destinations": { "current_account-current_region": { "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5.json", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json similarity index 50% rename from packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json index 568740d0f387c..ad9d0fb73d1dd 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/ExampleResourceIntegTestStack.template.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json @@ -1,38 +1,4 @@ { - "Resources": { - "ExampleResourceWaitConditionHandle9C53A8D3": { - "Type": "AWS::CloudFormation::WaitConditionHandle" - }, - "ExampleResourceAC53F4AE": { - "Type": "AWS::CloudFormation::WaitCondition", - "Properties": { - "Count": 0, - "Handle": { - "Ref": "ExampleResourceWaitConditionHandle9C53A8D3" - }, - "Timeout": "10" - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "ExampleResourceRole0533653E": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "cloudformation.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - } - }, "Parameters": { "BootstrapVersion": { "Type": "AWS::SSM::Parameter::Value", diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json new file mode 100644 index 0000000000000..5bf12a2093085 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockAgentIntegTest/DefaultTest": { + "stacks": [ + "BAgentIntegTestStack" + ], + "assertionStack": "BedrockAgentIntegTest/DefaultTest/DeployAssert", + "assertionStackName": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json new file mode 100644 index 0000000000000..89826cfd9589d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json @@ -0,0 +1,198 @@ +{ + "version": "42.0.0", + "artifacts": { + "BAgentIntegTestStack.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BAgentIntegTestStack.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BAgentIntegTestStack": { + "type": "aws:cloudformation:stack", + "environment": "aws://551246883740/us-east-1", + "properties": { + "templateFile": "BAgentIntegTestStack.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BAgentIntegTestStack.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-lookup-role-551246883740-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BAgentIntegTestStack.assets" + ], + "metadata": { + "/BAgentIntegTestStack/TestAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + } + ], + "/BAgentIntegTestStack/TestAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/BAgentIntegTestStack/TestAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestAgentRole522C6259" + } + ], + "/BAgentIntegTestStack/TestAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/BAgentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestAgentRoleDefaultPolicy0A38CDBA" + } + ], + "/BAgentIntegTestStack/TestAgent/AgentResource": [ + { + "type": "aws:cdk:logicalId", + "data": "TestAgentAgentResource807C0F50" + } + ], + "/BAgentIntegTestStack/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BAgentIntegTestStack/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BAgentIntegTestStack" + }, + "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets" + ], + "metadata": { + "/BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockAgentIntegTest/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json new file mode 100644 index 0000000000000..ef13056e97b95 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"BAgentIntegTestStack":{"id":"BAgentIntegTestStack","path":"BAgentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"BAgentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"BAgentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"BAgentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"BAgentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--bagentintegteststack-testagent-98576594-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"BAgentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"BAgentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"AgentResource":{"id":"AgentResource","path":"BAgentIntegTestStack/TestAgent/AgentResource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"BAgentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"BAgentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BAgentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts new file mode 100644 index 0000000000000..b3e689b5ba691 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts @@ -0,0 +1,42 @@ +/* + * Integration test for Bedrock Agent construct + * + * Stack verification steps: + * * Verify that a Bedrock Agent is created with the specified instruction + * * Verify that the agent uses Claude 3.5 Sonnet v2.0 as its foundation model + * * Verify that the agent is configured to be deleted when the stack is destroyed + */ + +import * as cdk from 'aws-cdk-lib'; +import { IntegTest } from '@aws-cdk/integ-tests-alpha'; +import * as bedrock from '../../lib'; + +const app = new cdk.App(); + +class TestStack extends cdk.Stack { + constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + // Create a Bedrock Agent with minimal properties + new bedrock.Agent(this, 'TestAgent', { + name: 'test-agent-1', + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + // Clean up the agent after test + forceDelete: true, + }); + } +} + +const stack = new TestStack(app, 'BAgentIntegTestStack', { + env: { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION , +}, +}); +new IntegTest(app, 'BedrockAgentIntegTest', { + testCases: [stack], + +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out deleted file mode 100644 index 588d7b269d34f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"20.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json deleted file mode 100644 index 662f6bea69dc7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/integ.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "version": "20.0.0", - "testCases": { - "integ.example-resource": { - "stacks": [ - "ExampleResourceIntegTestStack" - ], - "diffAssets": false, - "stackUpdateWorkflow": true - } - }, - "synthContext": {}, - "enableLookups": false -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json deleted file mode 100644 index fe46451dac688..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/manifest.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "version": "20.0.0", - "artifacts": { - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - }, - "ExampleResourceIntegTestStack.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "ExampleResourceIntegTestStack.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "ExampleResourceIntegTestStack": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "ExampleResourceIntegTestStack.template.json", - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/30b7d861ff59f91e3fa8f3f81084e16f9204797ffe9c775adf0bbbfa36b769b5.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "ExampleResourceIntegTestStack.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "ExampleResourceIntegTestStack.assets" - ], - "metadata": { - "/ExampleResourceIntegTestStack/ExampleResource/WaitConditionHandle": [ - { - "type": "aws:cdk:logicalId", - "data": "ExampleResourceWaitConditionHandle9C53A8D3" - } - ], - "/ExampleResourceIntegTestStack/ExampleResource/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ExampleResourceAC53F4AE" - } - ], - "/ExampleResourceIntegTestStack/ExampleResource/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ExampleResourceRole0533653E" - } - ], - "/ExampleResourceIntegTestStack/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/ExampleResourceIntegTestStack/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "ExampleResourceIntegTestStack" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json deleted file mode 100644 index 6be8c802687f3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/integ.example-resource.js.snapshot/tree.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "version": "tree-0.1", - "tree": { - "id": "App", - "path": "", - "children": { - "Tree": { - "id": "Tree", - "path": "Tree", - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.85" - } - }, - "ExampleResourceIntegTestStack": { - "id": "ExampleResourceIntegTestStack", - "path": "ExampleResourceIntegTestStack", - "children": { - "ExampleResource": { - "id": "ExampleResource", - "path": "ExampleResourceIntegTestStack/ExampleResource", - "children": { - "WaitConditionHandle": { - "id": "WaitConditionHandle", - "path": "ExampleResourceIntegTestStack/ExampleResource/WaitConditionHandle", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitConditionHandle", - "aws:cdk:cloudformation:props": {} - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.85" - } - }, - "Resource": { - "id": "Resource", - "path": "ExampleResourceIntegTestStack/ExampleResource/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::CloudFormation::WaitCondition", - "aws:cdk:cloudformation:props": { - "count": 0, - "handle": { - "Ref": "ExampleResourceWaitConditionHandle9C53A8D3" - }, - "timeout": "10" - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.85" - } - }, - "Role": { - "id": "Role", - "path": "ExampleResourceIntegTestStack/ExampleResource/Role", - "children": { - "Resource": { - "id": "Resource", - "path": "ExampleResourceIntegTestStack/ExampleResource/Role/Resource", - "attributes": { - "aws:cdk:cloudformation:type": "AWS::IAM::Role", - "aws:cdk:cloudformation:props": { - "assumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "cloudformation.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-iam.CfnRole", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/aws-iam.Role", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "@aws-cdk/example-construct-library.ExampleResource", - "version": "0.0.0" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.85" - } - } - }, - "constructInfo": { - "fqn": "constructs.Construct", - "version": "10.1.85" - } - } -} \ No newline at end of file From ec7c3597734a4f3be943fc3f9a416d114524a5de Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 10 Apr 2025 22:28:03 -0400 Subject: [PATCH 05/39] feat(bedorckl2):fixed build issue by linking node_modules form core package --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 325 +++++++++++++----- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 2 +- .../@aws-cdk/aws-bedrock-alpha/package.json | 7 +- .../test/agents/agent.test.ts | 29 +- yarn.lock | 81 +++++ 5 files changed, 346 insertions(+), 98 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 441e0a75bec6e..b9b59dde1cd13 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -1,92 +1,255 @@ -# An example Construct Library module +# Amazon Bedrock Construct Library --- -![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) +![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) -> The APIs of higher level constructs in this module are experimental and under active development. They are subject to non-backward compatible changes or removal in any future version. These are not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be announced in the release notes. This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. +> All classes are under active development and subject to non-backward compatible changes or removal in any +> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. +> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. --- -This package contains an example CDK construct library -for an imaginary resource called ExampleResource. -Its target audience are construct library authors - -both when contributing to the core CDK codebase, -or when writing your own construct library. - -Even though different construct libraries model vastly different services, -a large percentage of the structure of the construct libraries -(what we often call Layer 2 constructs, or L2s for short) -is actually strikingly similar between all of them. -This module hopes to present a skeleton of that structure, -that you can literally copy&paste to your own construct library, -and then edit to suit your needs. -It also attempts to explain the elements of that skeleton as best as it can, -through inline comments on the code itself. - -## Using when contributing to the CDK codebase - -If you're creating a completely new module, -feel free to copy&paste this entire directory, -and then edit the `package.json` and `README.md` -files as necessary (see the "Package structure" section below). -Make sure to remove the `"private": true` line from `package.json` -after copying, as otherwise your package will not be published! - -If you're contributing a new resource to an existing package, -feel free to copy&paste the following files, -instead of the entire package: - -* [`lib/example-resource.ts`](lib/example-resource.ts) -* [`lib/private/example-resource-common.ts`](lib/private/example-resource-common.ts) -* [`test/example-resource.test.ts`](test/example-resource.test.ts) -* [`test/integ.example-resource.ts`](test/integ.example-resource.ts) -* [`test/integ.example-resource.expected.json`](test/integ.example-resource.expected.json) - -And proceed to edit and rename them from there. - -## Using for your own construct libraries - -Feel free to use this package as the basis of your own construct library; -note, however, that you will have to change a few things in `package.json` to get it to build: - -* Remove the `"private": true` flag if you intend to publish your package to npmjs.org - (see https://docs.npmjs.com/files/package.json#private for details). -* Remove the `devDependencies` on `cdk-build-tools`, `cdk-integ-tools` and `pkglint`. -* Remove the `lint`, `integ`, `pkglint`, `package`, `build+test+package`, `awslint`, and `compat` entries in the `scripts` section. -* The `build` script should be just `tsc`, `watch` just `tsc -w`, and `test` just `jest`. -* Finally, the `awscdkio` key should be completely removed. - -You will also have to get rid of the integration test files, -[`test/integ.example-resource.ts`](test/integ.example-resource.ts) and -[`test/integ.example-resource.expected.json`](test/integ.example-resource.expected.json), -as those styles of integration tests are not available outside the CDK main repo. - -## Code structure - -The code structure is explained through inline comments in the files themselves. -Probably [`lib/example-resource.ts`](lib/example-resource.ts) is a good place to start reading. - -### Tests - -The package contains examples of unit tests in the [`test/example-resource.test.ts`](test/example-resource.test.ts) -file. - -It also contains an example integration test in [`test/integ.example-resource.ts`](test/integ.example-resource.ts). -For more information on CDK integ tests, see the -[main `Contributing.md` file](../../../CONTRIBUTING.md#integration-tests). - -## Package structure - -The package uses the standard build and test tools available in the CDK repo. -Even though it's not published, -it also uses [JSII](https://github.com/aws/jsii), -the technology that allows CDK logic to be written once, -but used from multiple programming languages. -Its configuration lives the `jsii` key in `package.json`. -It's mainly used as a validation tool in this package, -as JSII places some constraints on the TypeScript code that you can write. +| **Language** | **Package** | +| :--------------------------------------------------------------------------------------------- | --------------------------------------- | +| ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) TypeScript | `@aws-cdk/aws-bedrock-alpha` | + +[Amazon Bedrock](https://aws.amazon.com/bedrock/) is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI. + +This construct library facilitates the deployment of Bedrock Agents, enabling you to create sophisticated AI applications that can interact with your systems and data sources. + +## Table of contents + +- [API](#api) +- [Agents](#agents) + - [Create an Agent](#create-an-agent) + - [Action groups](#action-groups) + - [Prepare the Agent](#prepare-the-agent) + - [Prompt Override Configuration](#prompt-override-configuration) + - [Memory Configuration](#memory-configuration) + - [Agent Collaboration](#agent-collaboration) + - [Custom Orchestration](#custom-orchestration) + - [Agent Alias](#agent-alias) + +## API + +See the [API documentation](../../../apidocs/namespaces/bedrock/README.md). + +## Agents + +Amazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources. + +### Agent Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| name | string | No | The name of the agent. Defaults to a name generated by CDK | +| instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters | +| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent | +| existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role | +| shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false | +| idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour | +| kmsKey | kms.IKey | No | The KMS key of the agent if custom encryption is configured. Defaults to AWS managed key | +| description | string | No | A description of the agent. Defaults to no description | +| actionGroups | AgentActionGroup[] | No | The Action Groups associated with the agent | +| promptOverrideConfiguration | PromptOverrideConfiguration | No | Overrides some prompt templates in different parts of an agent sequence configuration | +| userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false | +| codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false | +| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true | + +### Create an Agent + +The following example creates an Agent with a simple instruction and default prompts: + +```ts +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); +``` + +### Action Groups + +An action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them. + +Example: + +```ts +const actionGroupFunction = new lambda_python.PythonFunction(this, 'ActionGroupFunction', { + runtime: lambda.Runtime.PYTHON_3_12, + entry: path.join(__dirname, '../lambda/action-group'), +}); + +const actionGroup = new AgentActionGroup({ + name: 'query-library', + description: 'Use these functions to get information about the books in the library.', + executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction), + enabled: true, + apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')), +}); + +agent.addActionGroup(actionGroup); +``` + +### Prepare the Agent + +The `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false. + +Creating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**. + +### Prompt Override Configuration + +Bedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured: + +- PRE_PROCESSING +- ORCHESTRATION +- POST_PROCESSING +- ROUTING_CLASSIFIER +- MEMORY_SUMMARIZATION +- KNOWLEDGE_BASE_RESPONSE_GENERATION + +Example: + +```ts +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + instruction: 'You are a helpful assistant.', + promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([ + { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + stepEnabled: true, + customPromptTemplate: 'Your custom prompt template here', + inferenceConfig: { + temperature: 0.0, + topP: 1, + topK: 250, + maximumLength: 1, + stopSequences: ["\n\nHuman:"], + }, + } + ]) +}); +``` + +You can also use a custom Lambda parser to process the model's output: + +```ts +const parserFunction = new lambda.Function(this, 'ParserFunction', { + runtime: lambda.Runtime.PYTHON_3_10, + handler: 'index.handler', + code: lambda.Code.fromAsset('lambda'), +}); + +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + instruction: 'You are a helpful assistant.', + promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({ + parser: parserFunction, + steps: [ + { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + useCustomParser: true, + customPromptTemplate: 'Your custom prompt template here', + } + ] + }) +}); +``` + +### Memory Configuration + +Agents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience. + +Example: + +```typescript +const agent = new Agent(this, 'MyAgent', { + name: 'MyAgent', + instruction: 'Your instruction here', + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + memory: Memory.sessionSummary({ + maxRecentSessions: 10, // Keep the last 10 session summaries + memoryDurationDays: 20, // Retain summaries for 20 days + }), +}); +``` + +### Agent Collaboration + +Agent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries. + +Example: + +```typescript +// Create a specialized agent +const customerSupportAgent = new Agent(this, 'CustomerSupportAgent', { + name: 'CustomerSupportAgent', + instruction: 'You specialize in answering customer support questions.', + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, +}); + +// Create an agent alias +const customerSupportAlias = new AgentAlias(this, 'CustomerSupportAlias', { + agent: customerSupportAgent, + aliasName: 'production', +}); + +// Create a main agent that collaborates with the specialized agent +const mainAgent = new Agent(this, 'MainAgent', { + name: 'MainAgent', + instruction: 'You route specialized questions to other agents.', + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + agentCollaboration: AgentCollaboratorType.SUPERVISOR, + agentCollaborators: [ + new bedrock.AgentCollaborator({ + agentAlias: customerSupportAlias, + collaborationInstruction: 'Route customer support questions to this agent.', + collaboratorName: 'CustomerSupport', + relayConversationHistory: true, + }), + ], +}); +``` + +### Custom Orchestration + +Custom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups. + +Example: + +```typescript +const orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', { + runtime: lambda.Runtime.PYTHON_3_10, + handler: 'index.handler', + code: lambda.Code.fromAsset('lambda/orchestration'), +}); + +const agent = new Agent(this, 'CustomOrchestrationAgent', { + name: 'CustomOrchestrationAgent', + instruction: 'You are a helpful assistant with custom orchestration logic.', + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + orchestrationType: OrchestrationType.CUSTOM_ORCHESTRATION, + customOrchestration: { + executor: OrchestrationExecutor.fromlambdaFunction(orchestrationFunction), + }, +}); +``` + +### Agent Alias + +After you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases. + +Example: + +```ts +const agentAlias = new bedrock.AgentAlias(this, 'myalias', { + aliasName: 'production', + agent: agent, + agentVersion: '1', // optional + description: 'Production version of my agent' +}); +``` diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index aad838ae05cd1..865bf4ea551ba 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token } from 'aws-cdk-lib'; +import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token } from 'aws-cdk-lib/core'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as events from 'aws-cdk-lib/aws-events'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/package.json b/packages/@aws-cdk/aws-bedrock-alpha/package.json index 89f23c43c5386..a5c93adfb09c8 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/package.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/package.json @@ -1,6 +1,6 @@ { "name": "@aws-cdk/aws-bedrock-alpha", - "version": "0.0.1", + "version": "0.0.0", "description": "An example CDK Construct Library for aws-bedrock-alpha", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -69,13 +69,14 @@ }, "license": "Apache-2.0", "devDependencies": { - "aws-cdk-lib": "^2.187.0", + "aws-cdk-lib": "0.0.0", "@types/jest": "^29.5.14", + "constructs": "10.0.0", "jest": "^29.7.0" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { - "aws-cdk-lib": "^2.187.0", + "aws-cdk-lib": "^0.0.0", "constructs": "^10.0.0" }, "separate-module": false, diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts index 3409f4d876f1e..53460e11178d8 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts @@ -1,7 +1,10 @@ import { Match, Template } from 'aws-cdk-lib/assertions'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as iam from 'aws-cdk-lib/aws-iam'; -import * as cdk from 'aws-cdk-lib'; +import { App, CfnParameter, Duration, Fn, Token } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as kms from 'aws-cdk-lib/aws-kms'; // Import the module qualified import * as bedrock from '../../lib'; @@ -10,12 +13,12 @@ import { Memory } from '../../bedrock/agents/memory'; /* eslint-disable quote-props */ describe('Bedrock Agent', () => { - let stack: cdk.Stack; + let stack: core.Stack; let foundationModel: bedrock.IInvokable; beforeEach(() => { - const app = new cdk.App(); - stack = new cdk.Stack(app, 'agent', { + const app = new App(); + stack = new core.Stack(app, 'agent', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION , @@ -39,7 +42,7 @@ describe('Bedrock Agent', () => { beforeEach(() => { // Log stack region value for debugging console.log('Stack region:', stack.region); - console.log('Is region token unresolved:', cdk.Token.isUnresolved(stack.region)); + console.log('Is region token unresolved:', Token.isUnresolved(stack.region)); console.log('Environment:', stack.environment); agent = new bedrock.Agent(stack, 'TestAgent', { @@ -188,7 +191,7 @@ describe('Bedrock Agent', () => { name: 'MyTestAgent', description: 'Test agent description', shouldPrepareAgent: true, - idleSessionTTL: cdk.Duration.minutes(30), + idleSessionTTL: Duration.minutes(30), userInputEnabled: true, codeInterpreterEnabled: true, forceDelete: true, @@ -226,9 +229,9 @@ describe('Bedrock Agent', () => { beforeEach(() => { agent = bedrock.Agent.fromAgentAttrs(stack, 'ImportedAgent', { agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO', - roleArn: cdk.Fn.join('', [ + roleArn: Fn.join('', [ 'arn:', - cdk.Fn.ref('AWS::Partition'), + Fn.ref('AWS::Partition'), ':iam::', stack.account, ':role/TestRole' @@ -263,7 +266,7 @@ describe('Bedrock Agent', () => { }); test('does not fail validation if instruction is a late-bound value', () => { - const parameter = new cdk.CfnParameter(stack, 'Parameter'); + const parameter = new CfnParameter(stack, 'Parameter'); new bedrock.Agent(stack, 'TestAgent', { instruction: parameter.valueAsString, @@ -424,10 +427,10 @@ describe('Bedrock Agent', () => { describe('created with custom orchestration', () => { test('sets custom orchestration correctly', () => { - const fn = new cdk.aws_lambda.Function(stack, 'TestFunction', { - runtime: cdk.aws_lambda.Runtime.NODEJS_18_X, + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, handler: 'index.handler', - code: cdk.aws_lambda.Code.fromInline('exports.handler = async () => {};'), + code: lambda.Code.fromInline('exports.handler = async () => {};'), }); new bedrock.Agent(stack, 'TestAgent', { @@ -454,7 +457,7 @@ describe('Bedrock Agent', () => { describe('created with KMS key', () => { test('sets KMS key correctly', () => { - const key = new cdk.aws_kms.Key(stack, 'TestKey'); + const key = new kms.Key(stack, 'TestKey'); new bedrock.Agent(stack, 'TestAgent', { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', diff --git a/yarn.lock b/yarn.lock index 198f85612f701..0ab7facf6cef1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,6 +58,12 @@ resolved "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== +"@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": + version "0.0.0" + +"@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": + version "0.0.0" + "@aws-cdk/aws-service-spec@0.1.62": version "0.1.62" resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.62.tgz#7cb5f186f9805206ac7718f75d4c537d7727dc0d" @@ -4488,6 +4494,11 @@ dependencies: tslib "^2.4.0" +"@types/aws-lambda@^8.10.136": + version "8.10.149" + resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" + integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== + "@types/aws-lambda@^8.10.148": version "8.10.148" resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.148.tgz#3a31fc720670473c4d7de4b03d074e8bd97e36a3" @@ -4695,6 +4706,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.11.19": + version "18.19.86" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b" + integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -5331,6 +5349,26 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-cdk-lib@^2.188.0: + version "2.189.0" + resolved "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz#b5964f1686215834b9f8497c131901c120355147" + integrity sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw== + dependencies: + "@aws-cdk/asset-awscli-v1" "^2.2.229" + "@aws-cdk/asset-node-proxy-agent-v6" "^2.1.0" + "@aws-cdk/cloud-assembly-schema" "^41.0.0" + "@balena/dockerignore" "^1.0.2" + case "1.6.3" + fs-extra "^11.3.0" + ignore "^5.3.2" + jsonschema "^1.5.0" + mime-types "^2.1.35" + minimatch "^3.1.2" + punycode "^2.3.1" + semver "^7.7.1" + table "^6.9.0" + yaml "1.10.2" + aws-cdk@2.1006.0: version "2.1006.0" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1006.0.tgz#21fd99184c5b0eea3c5c384fd5c5209e78569508" @@ -5338,6 +5376,13 @@ aws-cdk@2.1006.0: optionalDependencies: fsevents "2.3.2" +aws-cdk@2.1007.0: + version "2.1007.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" + integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== + optionalDependencies: + fsevents "2.3.2" + aws-sdk-client-mock-jest@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-4.1.0.tgz#40a3bdedd8d551cf2a836b77239038c0ca10e25c" @@ -5814,6 +5859,11 @@ cdk-generate-synthetic-examples@^0.2.24: jsii-reflect "^1.110.0" yargs "^17.7.2" +cdk-nag@2.28.13: + version "2.28.13" + resolved "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.28.13.tgz#bef1b6c65496d99ef2e110f1a28f5260f9efef80" + integrity sha512-f+fteEq09+N7H2heqls0NcTC+MFcXl6fztEjjpKK0qTo5eFAKmDekEHLRGY5LX8v/JlueoVyhttsjaULNwnoSg== + cdk8s-plus-27@2.9.5: version "2.9.5" resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" @@ -6248,6 +6298,11 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" +constructs@10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/constructs/-/constructs-10.0.0.tgz#a6d498540111f6d75663711d0fa65f32fc8f1786" + integrity sha512-MIwjmrXZpM9RtwyrSD4HotDIQl8HTdIefQhU+MU1asvtSyVN3kK8kjeUOWMFb+fdyT4RX3QvvcaaPBluLEX1SA== + constructs@^10.0.0: version "10.4.2" resolved "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz#e875a78bef932cca12ea63965969873a25c1c132" @@ -13738,6 +13793,22 @@ ts-jest@^29, ts-jest@^29.3.0: type-fest "^4.37.0" yargs-parser "^21.1.1" +ts-jest@^29.2.5: + version "29.3.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz#2e459e1f94a833bd8216ba4b045fac948e265937" + integrity sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.1" + type-fest "^4.38.0" + yargs-parser "^21.1.1" + ts-mock-imports@^1.3.16: version "1.3.16" resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" @@ -13891,6 +13962,11 @@ type-fest@^4.37.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96" integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg== +type-fest@^4.38.0: + version "4.39.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e" + integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w== + typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -13987,6 +14063,11 @@ typescript@~5.5.0, typescript@~5.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typescript@~5.6.3: + version "5.6.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + typescript@~5.7: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" From f0d79d1a534419eaa53a77ff3dffa47fb9525db4 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 10 Apr 2025 23:10:15 -0400 Subject: [PATCH 06/39] feat(bedrockl2):updated bedrock package.json and reverted the files from root repo --- package.json | 5 +- .../@aws-cdk/aws-bedrock-alpha/package.json | 2 - yarn.lock | 83 +------------------ 3 files changed, 3 insertions(+), 87 deletions(-) diff --git a/package.json b/package.json index 6132d14184fb0..e4aee9fe273f3 100644 --- a/package.json +++ b/package.json @@ -179,6 +179,5 @@ }, "dependencies": { "string-width": "^4.2.3" - }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" -} + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/package.json b/packages/@aws-cdk/aws-bedrock-alpha/package.json index a5c93adfb09c8..20112712d2cd9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/package.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/package.json @@ -69,9 +69,7 @@ }, "license": "Apache-2.0", "devDependencies": { - "aws-cdk-lib": "0.0.0", "@types/jest": "^29.5.14", - "constructs": "10.0.0", "jest": "^29.7.0" }, "homepage": "https://github.com/aws/aws-cdk", diff --git a/yarn.lock b/yarn.lock index 0ab7facf6cef1..6f5fbf4c69f03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,12 +58,6 @@ resolved "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== -"@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": - version "0.0.0" - -"@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": - version "0.0.0" - "@aws-cdk/aws-service-spec@0.1.62": version "0.1.62" resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.62.tgz#7cb5f186f9805206ac7718f75d4c537d7727dc0d" @@ -4494,11 +4488,6 @@ dependencies: tslib "^2.4.0" -"@types/aws-lambda@^8.10.136": - version "8.10.149" - resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" - integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== - "@types/aws-lambda@^8.10.148": version "8.10.148" resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.148.tgz#3a31fc720670473c4d7de4b03d074e8bd97e36a3" @@ -4706,13 +4695,6 @@ dependencies: undici-types "~5.26.4" -"@types/node@^18.11.19": - version "18.19.86" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b" - integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== - dependencies: - undici-types "~5.26.4" - "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -5349,26 +5331,6 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -aws-cdk-lib@^2.188.0: - version "2.189.0" - resolved "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz#b5964f1686215834b9f8497c131901c120355147" - integrity sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw== - dependencies: - "@aws-cdk/asset-awscli-v1" "^2.2.229" - "@aws-cdk/asset-node-proxy-agent-v6" "^2.1.0" - "@aws-cdk/cloud-assembly-schema" "^41.0.0" - "@balena/dockerignore" "^1.0.2" - case "1.6.3" - fs-extra "^11.3.0" - ignore "^5.3.2" - jsonschema "^1.5.0" - mime-types "^2.1.35" - minimatch "^3.1.2" - punycode "^2.3.1" - semver "^7.7.1" - table "^6.9.0" - yaml "1.10.2" - aws-cdk@2.1006.0: version "2.1006.0" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1006.0.tgz#21fd99184c5b0eea3c5c384fd5c5209e78569508" @@ -5376,13 +5338,6 @@ aws-cdk@2.1006.0: optionalDependencies: fsevents "2.3.2" -aws-cdk@2.1007.0: - version "2.1007.0" - resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" - integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== - optionalDependencies: - fsevents "2.3.2" - aws-sdk-client-mock-jest@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-4.1.0.tgz#40a3bdedd8d551cf2a836b77239038c0ca10e25c" @@ -5859,11 +5814,6 @@ cdk-generate-synthetic-examples@^0.2.24: jsii-reflect "^1.110.0" yargs "^17.7.2" -cdk-nag@2.28.13: - version "2.28.13" - resolved "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.28.13.tgz#bef1b6c65496d99ef2e110f1a28f5260f9efef80" - integrity sha512-f+fteEq09+N7H2heqls0NcTC+MFcXl6fztEjjpKK0qTo5eFAKmDekEHLRGY5LX8v/JlueoVyhttsjaULNwnoSg== - cdk8s-plus-27@2.9.5: version "2.9.5" resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" @@ -6298,11 +6248,6 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" -constructs@10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/constructs/-/constructs-10.0.0.tgz#a6d498540111f6d75663711d0fa65f32fc8f1786" - integrity sha512-MIwjmrXZpM9RtwyrSD4HotDIQl8HTdIefQhU+MU1asvtSyVN3kK8kjeUOWMFb+fdyT4RX3QvvcaaPBluLEX1SA== - constructs@^10.0.0: version "10.4.2" resolved "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz#e875a78bef932cca12ea63965969873a25c1c132" @@ -13793,22 +13738,6 @@ ts-jest@^29, ts-jest@^29.3.0: type-fest "^4.37.0" yargs-parser "^21.1.1" -ts-jest@^29.2.5: - version "29.3.1" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz#2e459e1f94a833bd8216ba4b045fac948e265937" - integrity sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ== - dependencies: - bs-logger "^0.2.6" - ejs "^3.1.10" - fast-json-stable-stringify "^2.1.0" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.1" - type-fest "^4.38.0" - yargs-parser "^21.1.1" - ts-mock-imports@^1.3.16: version "1.3.16" resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" @@ -13962,11 +13891,6 @@ type-fest@^4.37.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96" integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg== -type-fest@^4.38.0: - version "4.39.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e" - integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w== - typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -14063,11 +13987,6 @@ typescript@~5.5.0, typescript@~5.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== -typescript@~5.6.3: - version "5.6.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" - integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== - typescript@~5.7: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" @@ -14739,4 +14658,4 @@ yn@3.1.1: yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== \ No newline at end of file From 7e09d45b98d8806d6bac60754cb8293c515e8921 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Fri, 11 Apr 2025 15:17:48 -0400 Subject: [PATCH 07/39] feat(bedrockl2):modified unit and integ test for the coverage --- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 9 + .../test/agents/agent.test.ts | 495 ------------------ .../agents/integ.agent.js.snapshot/tree.json | 1 - .../test/bedrock/agents/action-group.test.ts | 160 ++++++ .../test/bedrock/agents/agent-alias.test.ts | 281 ++++++++++ .../bedrock/agents/agent-collaborator.test.ts | 205 ++++++++ .../test/bedrock/agents/agent.test.ts | 299 +++++++++++ .../test/bedrock/agents/api-executor.test.ts | 113 ++++ .../test/bedrock/agents/api-schema.test.ts | 137 +++++ ...efaultTestDeployAssertE6F8548D.assets.json | 0 ...aultTestDeployAssertE6F8548D.template.json | 0 .../agentIntegTestStack.assets.json} | 8 +- .../agentIntegTestStack.template.json} | 2 +- .../agents/integ.agent.js.snapshot/cdk.out | 0 .../agents/integ.agent.js.snapshot/integ.json | 2 +- .../integ.agent.js.snapshot/manifest.json | 32 +- .../agents/integ.agent.js.snapshot/tree.json | 1 + .../test/{ => bedrock}/agents/integ.agent.ts | 4 +- .../test/bedrock/agents/memory.test.ts | 112 ++++ .../agents/orchestration-executor.test.ts | 130 +++++ .../bedrock/agents/prompt-override.test.ts | 331 ++++++++++++ .../bedrock/agents/validation-helpers.test.ts | 127 +++++ 22 files changed, 1929 insertions(+), 520 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json (100%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json (100%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json => bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json} (61%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json => bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json} (97%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.js.snapshot/cdk.out (100%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.js.snapshot/integ.json (90%) rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.js.snapshot/manifest.json (87%) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json rename packages/@aws-cdk/aws-bedrock-alpha/test/{ => bedrock}/agents/integ.agent.ts (92%) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 865bf4ea551ba..2b22c6fcbd874 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -445,6 +445,15 @@ export class Agent extends AgentBase { throw new Error('instruction must be at least 40 characters'); } + // Validate orchestration configuration + if (props.orchestrationType === OrchestrationType.CUSTOM_ORCHESTRATION && !props.customOrchestration) { + throw new Error('customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION'); + } + + if (props.customOrchestration && props.orchestrationType !== OrchestrationType.CUSTOM_ORCHESTRATION) { + throw new Error('customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION'); + } + // ------------------------------------------------------ // Set properties and defaults // ------------------------------------------------------ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts deleted file mode 100644 index 53460e11178d8..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/agent.test.ts +++ /dev/null @@ -1,495 +0,0 @@ -import { Match, Template } from 'aws-cdk-lib/assertions'; -import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { App, CfnParameter, Duration, Fn, Token } from 'aws-cdk-lib/core'; -import * as core from 'aws-cdk-lib/core'; -import * as lambda from 'aws-cdk-lib/aws-lambda'; -import * as kms from 'aws-cdk-lib/aws-kms'; - -// Import the module qualified -import * as bedrock from '../../lib'; -import { Memory } from '../../bedrock/agents/memory'; - -/* eslint-disable quote-props */ - -describe('Bedrock Agent', () => { - let stack: core.Stack; - let foundationModel: bedrock.IInvokable; - - beforeEach(() => { - const app = new App(); - stack = new core.Stack(app, 'agent', { - env: { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION , - }, - }); - foundationModel = { - invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', - grantInvoke: (grantee) => { - return iam.Grant.addToPrincipal({ - grantee, - actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], - }); - }, - }; - }); - - describe('created with default properties', () => { - let agent: bedrock.IAgent; - - beforeEach(() => { - // Log stack region value for debugging - console.log('Stack region:', stack.region); - console.log('Is region token unresolved:', Token.isUnresolved(stack.region)); - console.log('Environment:', stack.environment); - - agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - }); - - test('creates a CFN Agent resource', () => { - Template.fromStack(stack).resourceCountIs('AWS::Bedrock::Agent', 1); - }); - - describe('creates a CFN Agent resource', () => { - test('with default properties', () => { - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), - 'FoundationModel': foundationModel.invokableArn, - 'IdleSessionTTLInSeconds': 3600, - 'AutoPrepare': false, - 'Description': Match.absent(), - 'CustomerEncryptionKeyArn': Match.absent(), - }); - }); - - test('with default action groups', () => { - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ - Match.objectLike({ - 'ActionGroupName': 'UserInputAction', - 'ActionGroupExecutor': Match.absent(), - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', - }), - Match.objectLike({ - 'ActionGroupName': 'CodeInterpreterAction', - 'ActionGroupExecutor': Match.absent(), - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', - }), - ]), - }); - }); - }); - - test('creates an IAM role with correct trust policy', () => { - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { - 'AssumeRolePolicyDocument': { - 'Statement': [ - { - 'Action': 'sts:AssumeRole', - 'Effect': 'Allow', - 'Principal': { - 'Service': 'bedrock.amazonaws.com', - }, - 'Condition': { - 'StringEquals': { - 'aws:SourceAccount': Match.objectLike({ 'Ref': 'AWS::AccountId' }) - }, - 'ArnLike': { - 'aws:SourceArn': { - 'Fn::Join': ['', [ - 'arn:', - { 'Ref': 'AWS::Partition' }, - ':bedrock:', - { 'Ref': 'AWS::Region' }, - ':', - { 'Ref': 'AWS::AccountId' }, - ':agent/*' - ]], - }, - }, - }, - }, - ], - }, - }); - }); - - test('correctly adds bedrock:InvokeAgent permissions when grantInvoke() is called', () => { - const role = new iam.Role(stack, 'Role', { - assumedBy: new iam.AnyPrincipal(), - }); - - agent.grantInvoke(role); - - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': Match.arrayWith([ - Match.objectLike({ - 'Action': 'bedrock:InvokeAgent', - 'Effect': 'Allow', - 'Resource': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], - }, - }), - ]), - }, - }); - }); - - test('onEvent adds an Event Rule', () => { - agent.onEvent('MyEvent'); - - Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { - 'EventPattern': { - 'source': ['aws.bedrock'], - 'detail': { - 'agent-id': [{ - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentId'], - }], - }, - }, - }); - }); - - test('metricCount returns a metric with correct dimensions', () => { - const countMetric = agent.metricCount(); - - new cloudwatch.Alarm(stack, 'Alarm', { - metric: countMetric, - threshold: 10, - evaluationPeriods: 2, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::CloudWatch::Alarm', { - 'EvaluationPeriods': 2, - 'Dimensions': [ - { - 'Name': 'AgentId', - 'Value': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentId'], - }, - }, - ], - 'MetricName': 'Invocations', - 'Namespace': 'AWS/Bedrock', - }); - }); - }); - - describe('created with all properties', () => { - test('sets all properties correctly', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - name: 'MyTestAgent', - description: 'Test agent description', - shouldPrepareAgent: true, - idleSessionTTL: Duration.minutes(30), - userInputEnabled: true, - codeInterpreterEnabled: true, - forceDelete: true, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentName': 'MyTestAgent', - 'Description': 'Test agent description', - 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), - 'FoundationModel': foundationModel.invokableArn, - 'IdleSessionTTLInSeconds': 1800, - 'AutoPrepare': true, - 'SkipResourceInUseCheckOnDelete': true, - 'ActionGroups': Match.arrayWith([ - Match.objectLike({ - 'ActionGroupName': 'UserInputAction', - 'ActionGroupExecutor': Match.absent(), - 'ActionGroupState': 'ENABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', - }), - Match.objectLike({ - 'ActionGroupName': 'CodeInterpreterAction', - 'ActionGroupExecutor': Match.absent(), - 'ActionGroupState': 'ENABLED', - 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', - }), - ]), - }); - }); - }); - - describe('imported by attributes', () => { - let agent: bedrock.IAgent; - - beforeEach(() => { - agent = bedrock.Agent.fromAgentAttrs(stack, 'ImportedAgent', { - agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO', - roleArn: Fn.join('', [ - 'arn:', - Fn.ref('AWS::Partition'), - ':iam::', - stack.account, - ':role/TestRole' - ]) - }); - }); - - test('has the correct agentId parsed from ARN', () => { - expect(agent.agentId).toEqual('OKDSJOGKMO'); - }); - - test('has the correct role ARN', () => { - expect(stack.resolve(agent.role.roleArn)).toEqual({ - 'Fn::Join': ['', [ - 'arn:', - { 'Ref': 'AWS::Partition' }, - ':iam::', - { 'Ref': 'AWS::AccountId' }, - ':role/TestRole' - ]] - }); - }); - }); - - test('cannot be created with instruction less than 40 characters', () => { - expect(() => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'Too short', - foundationModel, - }); - }).toThrow(/instruction must be at least 40 characters/); - }); - - test('does not fail validation if instruction is a late-bound value', () => { - const parameter = new CfnParameter(stack, 'Parameter'); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: parameter.valueAsString, - foundationModel, - }); - }); - - describe('created with memory configuration', () => { - test('sets memory configuration correctly', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - memory: Memory.sessionSummary({ - memoryDurationDays: 30, - maxRecentSessions: 20, - }), - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'MemoryConfiguration': { - 'EnabledMemoryTypes': ['SESSION_SUMMARY'], - 'StorageDays': 30, - 'SessionSummaryConfiguration': { - 'MaxRecentSessions': 20, - }, - }, - }); - }); - }); - - describe('created with agent collaborators', () => { - test('sets agent collaborators correctly', () => { - const collaboratorAgent = new bedrock.Agent(stack, 'CollaboratorAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - const collaboratorAlias = new bedrock.AgentAlias(stack, 'CollaboratorAlias', { - agent: collaboratorAgent, - aliasName: 'TestAlias', - }); - - const collaborator = new bedrock.AgentCollaborator({ - agentAlias: collaboratorAlias, - collaborationInstruction: 'Collaborate with this agent for testing', - collaboratorName: 'TestCollaborator', - }); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, - agentCollaborators: [collaborator], - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentCollaboration': 'SUPERVISOR', - 'AgentCollaborators': Match.arrayWith([ - Match.objectLike({ - 'AgentDescriptor': { - 'AliasArn': { - 'Fn::GetAtt': [Match.stringLikeRegexp('CollaboratorAlias.*'), 'AgentAliasArn'], - }, - }, - 'CollaborationInstruction': 'Collaborate with this agent for testing', - 'CollaboratorName': 'TestCollaborator', - }), - ]), - }); - }); - }); - - describe('name generation and validation', () => { - test('generates valid role name within length limits', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { - RoleName: Match.stringLikeRegexp('^[a-z0-9-]{1,50}-bedrockagent$'), - }); - }); - }); - - describe('action group management', () => { - test('can add multiple action groups at once', () => { - const agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - // Create custom action groups with unique names - const actionGroup1 = new bedrock.AgentActionGroup({ - name: 'CustomAction1', - enabled: true, - parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, - }); - const actionGroup2 = new bedrock.AgentActionGroup({ - name: 'CustomAction2', - enabled: true, - parentActionGroupSignature: bedrock.ParentActionGroupSignature.CODE_INTERPRETER, - }); - - agent.addActionGroups(actionGroup1, actionGroup2); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - ActionGroups: Match.arrayWith([ - Match.objectLike({ - ActionGroupName: 'CustomAction1', - ActionGroupState: 'ENABLED', - }), - Match.objectLike({ - ActionGroupName: 'CustomAction2', - ActionGroupState: 'ENABLED', - }), - ]), - }); - }); - - test('throws error when adding duplicate action group names', () => { - const agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - // Create two action groups with the same name - const actionGroup1 = new bedrock.AgentActionGroup({ - name: 'DuplicateAction', - enabled: true, - parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, - }); - const actionGroup2 = new bedrock.AgentActionGroup({ - name: 'DuplicateAction', - enabled: true, - parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, - }); - - agent.addActionGroup(actionGroup1); - expect(() => { - agent.addActionGroup(actionGroup2); - }).toThrow(/An action group with name: DuplicateAction has already been defined/); - }); - }); - - describe('agent collaborators rendering', () => { - test('returns undefined when no collaborators are present', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentCollaborators: Match.absent(), - }); - }); - }); - - describe('created with custom orchestration', () => { - test('sets custom orchestration correctly', () => { - const fn = new lambda.Function(stack, 'TestFunction', { - runtime: lambda.Runtime.NODEJS_18_X, - handler: 'index.handler', - code: lambda.Code.fromInline('exports.handler = async () => {};'), - }); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, - customOrchestration: { - executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), - }, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'OrchestrationType': 'CUSTOM_ORCHESTRATION', - 'CustomOrchestration': { - 'Executor': { - 'Lambda': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], - }, - }, - }, - }); - }); - }); - - describe('created with KMS key', () => { - test('sets KMS key correctly', () => { - const key = new kms.Key(stack, 'TestKey'); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - kmsKey: key, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'CustomerEncryptionKeyArn': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], - }, - }); - }); - }); - - describe('created with existing role', () => { - test('uses existing role correctly', () => { - const role = new iam.Role(stack, 'ExistingRole', { - assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), - }); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - existingRole: role, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentResourceRoleArn': { - 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], - }, - }); - }); - }); -}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json deleted file mode 100644 index ef13056e97b95..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"BAgentIntegTestStack":{"id":"BAgentIntegTestStack","path":"BAgentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"BAgentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"BAgentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"BAgentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"BAgentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--bagentintegteststack-testagent-98576594-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"BAgentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"BAgentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"AgentResource":{"id":"AgentResource","path":"BAgentIntegTestStack/TestAgent/AgentResource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"BAgentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"BAgentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BAgentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts new file mode 100644 index 0000000000000..b0f390aed41c3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts @@ -0,0 +1,160 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Template, Match } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../lib'; + +describe('AgentActionGroup', () => { + let stack: core.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + test('creates action group with USER_INPUT signature', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'CustomAction', + 'ActionGroupState': 'ENABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + }), + ]), + }); + }); + + test('creates action group with CODE_INTERPRETER signature', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.CODE_INTERPRETER, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'CustomAction', + 'ActionGroupState': 'ENABLED', + 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + }), + ]), + }); + }); + + test('creates disabled action group', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: false, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'CustomAction', + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + }), + ]), + }); + }); + + test('can add multiple action groups', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'CustomAction1', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'CustomAction2', + enabled: false, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.CODE_INTERPRETER, + }); + + agent.addActionGroups(actionGroup1, actionGroup2); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'CustomAction1', + 'ActionGroupState': 'ENABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + }), + Match.objectLike({ + 'ActionGroupName': 'CustomAction2', + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + }), + ]), + }); + }); + + test('throws error when adding duplicate action group names', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'DuplicateAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'DuplicateAction', + enabled: true, + parentActionGroupSignature: bedrock.ParentActionGroupSignature.USER_INPUT, + }); + + agent.addActionGroup(actionGroup1); + expect(() => { + agent.addActionGroup(actionGroup2); + }).toThrow(/An action group with name: DuplicateAction has already been defined/); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts new file mode 100644 index 0000000000000..d7429e71d7d94 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts @@ -0,0 +1,281 @@ +import { App, ArnFormat, Stack, assertions } from 'aws-cdk-lib'; +import * as events from 'aws-cdk-lib/aws-events'; +import * as targets from 'aws-cdk-lib/aws-events-targets'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import { AgentAlias } from '../../../bedrock/agents/agent-alias'; +import { IAgent } from '../../../bedrock/agents/agent'; + +describe('AgentAlias', () => { + let stack: Stack; + let mockAgent: IAgent; + + beforeEach(() => { + const app = new App(); + stack = new Stack(app, 'TestStack'); + mockAgent = { + agentId: 'test-agent-id', + agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/test-agent-id', + lastUpdated: 'test-timestamp', + role: new iam.Role(stack, 'MockAgentRole', { + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), + }), + grantPrincipal: new iam.Role(stack, 'MockGrantPrincipal', { + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), + }), + grantInvoke: jest.fn(), + onEvent: jest.fn(), + metricCount: jest.fn(), + node: stack.node, + stack: stack, + env: { account: stack.account, region: stack.region }, + applyRemovalPolicy: jest.fn(), + }; + }); + + test('creates with minimal properties', () => { + // WHEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Bedrock::AgentAlias', {}); + expect(alias.aliasName).toMatch(/^latest-[a-f0-9]+$/); + }); + + test('creates with all properties', () => { + // WHEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + aliasName: 'test-alias', + agentVersion: '1.0.0', + description: 'Test description', + }); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Bedrock::AgentAlias', { + AgentAliasName: 'test-alias', + AgentId: 'test-agent-id', + Description: 'Test description', + RoutingConfiguration: [ + { + AgentVersion: '1.0.0', + }, + ], + }); + expect(alias.aliasName).toBe('test-alias'); + }); + + test('imports using fromAttributes', () => { + // WHEN + const importedAlias = AgentAlias.fromAttributes(stack, 'ImportedAlias', { + aliasId: 'test-alias-id', + aliasName: 'test-alias', + agent: mockAgent, + agentVersion: '1.0.0', + }); + + // THEN + expect(importedAlias.aliasId).toBe('test-alias-id'); + expect(importedAlias.aliasArn).toBe( + stack.formatArn({ + service: 'bedrock', + resource: 'agent-alias', + resourceName: 'test-agent-id/test-alias-id', + arnFormat: ArnFormat.SLASH_RESOURCE_NAME, + }) + ); + }); + + test('grants invoke permissions', () => { + // GIVEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + const role = new iam.Role(stack, 'TestRole', { + assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), + }); + + // WHEN + alias.grantInvoke(role); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: 'bedrock:InvokeAgent', + Effect: 'Allow', + Resource: { + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + 'AgentAliasArn', + ]), + }, + }, + ], + }, + }); + }); + + test('grants get permissions', () => { + // GIVEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + const role = new iam.Role(stack, 'TestRole', { + assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), + }); + + // WHEN + alias.grantGet(role); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: 'bedrock:GetAgentAlias', + Effect: 'Allow', + Resource: { + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + 'AgentAliasArn', + ]), + }, + }, + ], + }, + }); + }); + + test('grants custom permissions', () => { + // GIVEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + const role = new iam.Role(stack, 'TestRole', { + assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), + }); + + // WHEN + alias.grant(role, 'bedrock:CustomAction'); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: 'bedrock:CustomAction', + Effect: 'Allow', + Resource: { + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + 'AgentAliasArn', + ]), + }, + }, + ], + }, + }); + }); + + test('creates CloudTrail event rule', () => { + // GIVEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + const fn = new lambda.Function(stack, 'TestFunction', { + code: lambda.Code.fromInline('exports.handler = function() { }'), + handler: 'index.handler', + runtime: lambda.Runtime.NODEJS_18_X, + }); + + // WHEN + const rule = alias.onCloudTrailEvent('TestRule', { + target: new targets.LambdaFunction(fn), + }); + + // THEN + expect(rule).toBeInstanceOf(events.Rule); + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Events::Rule', { + EventPattern: { + source: ['aws.bedrock'], + 'detail-type': ['AWS API Call via CloudTrail'], + detail: { + requestParameters: { + agentAliasId: [{ 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + 'AgentAliasId' + ]) }], + }, + }, + }, + }); + }); + + test('creates CloudTrail event rule with default options', () => { + // GIVEN + const alias = new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + }); + + // WHEN + const rule = alias.onCloudTrailEvent('TestRule'); + + // THEN + expect(rule).toBeInstanceOf(events.Rule); + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Events::Rule', { + EventPattern: { + source: ['aws.bedrock'], + 'detail-type': ['AWS API Call via CloudTrail'], + detail: { + requestParameters: { + agentAliasId: [{ 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + 'AgentAliasId' + ]) }], + }, + }, + }, + }); + }); + + test('handles undefined agentVersion', () => { + // WHEN + new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + agentVersion: undefined, + }); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Bedrock::AgentAlias', { + AgentId: 'test-agent-id', + RoutingConfiguration: assertions.Match.absent(), + }); + }); + + test('handles undefined description', () => { + // WHEN + new AgentAlias(stack, 'TestAlias', { + agent: mockAgent, + description: undefined, + }); + + // THEN + const template = assertions.Template.fromStack(stack); + template.hasResourceProperties('AWS::Bedrock::AgentAlias', { + AgentId: 'test-agent-id', + Description: assertions.Match.absent(), + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts new file mode 100644 index 0000000000000..ff35b06c00a07 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts @@ -0,0 +1,205 @@ +import { Stack } from 'aws-cdk-lib'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { AgentCollaborator, RelayConversationHistoryType } from '../../../bedrock/agents/agent-collaborator'; +import { IAgentAlias } from '../../../bedrock/agents/agent-alias'; + +describe('AgentCollaborator', () => { + let stack: Stack; + let mockAgentAlias: IAgentAlias; + + beforeEach(() => { + stack = new Stack(); + mockAgentAlias = { + aliasId: 'test-alias-id', + aliasArn: 'arn:aws:bedrock:us-east-1:123456789012:agent-alias/test-agent/test-alias-id', + agent: {} as any, + grantInvoke: jest.fn().mockReturnValue({ + combine: jest.fn().mockReturnThis(), + }), + grantGet: jest.fn().mockReturnValue({ + combine: jest.fn().mockReturnThis(), + }), + grant: jest.fn(), + onCloudTrailEvent: jest.fn(), + node: stack.node, + env: { account: stack.account, region: stack.region }, + stack: stack, + applyRemovalPolicy: jest.fn(), + }; + }); + + test('creates with valid properties', () => { + // WHEN + const collaborator = new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: true, + }); + + // THEN + expect(collaborator.agentAlias).toBe(mockAgentAlias); + expect(collaborator.collaborationInstruction).toBe('Test instruction'); + expect(collaborator.collaboratorName).toBe('Test collaborator'); + expect(collaborator.relayConversationHistory).toBe(true); + }); + + test('throws error when agentAlias is missing', () => { + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: undefined as any, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + }); + }).toThrow('agentAlias is required for AgentCollaborator'); + }); + + test('throws error when using TSTALIASID', () => { + // GIVEN + const testAlias = { + ...mockAgentAlias, + aliasId: 'TSTALIASID', + }; + + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: testAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + }); + }).toThrow('Agent cannot collaborate with TSTALIASID alias of another agent'); + }); + + test('throws error when collaborationInstruction is empty', () => { + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: '', + collaboratorName: 'Test collaborator', + }); + }).toThrow('collaborationInstruction is required and cannot be empty'); + }); + + test('throws error when collaborationInstruction is whitespace', () => { + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: ' ', + collaboratorName: 'Test collaborator', + }); + }).toThrow('collaborationInstruction is required and cannot be empty'); + }); + + test('throws error when collaboratorName is empty', () => { + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: '', + }); + }).toThrow('collaboratorName is required and cannot be empty'); + }); + + test('throws error when collaboratorName is whitespace', () => { + // THEN + expect(() => { + new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: ' ', + }); + }).toThrow('collaboratorName is required and cannot be empty'); + }); + + test('renders with relayConversationHistory true', () => { + // GIVEN + const collaborator = new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: true, + }); + + // WHEN + const rendered = collaborator._render(); + + // THEN + expect(rendered).toEqual({ + agentDescriptor: { + aliasArn: mockAgentAlias.aliasArn, + }, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: RelayConversationHistoryType.TO_COLLABORATOR, + }); + }); + + test('renders with relayConversationHistory false', () => { + // GIVEN + const collaborator = new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: false, + }); + + // WHEN + const rendered = collaborator._render(); + + // THEN + expect(rendered).toEqual({ + agentDescriptor: { + aliasArn: mockAgentAlias.aliasArn, + }, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: RelayConversationHistoryType.DISABLED, + }); + }); + + test('renders with relayConversationHistory undefined', () => { + // GIVEN + const collaborator = new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + }); + + // WHEN + const rendered = collaborator._render(); + + // THEN + expect(rendered).toEqual({ + agentDescriptor: { + aliasArn: mockAgentAlias.aliasArn, + }, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + relayConversationHistory: RelayConversationHistoryType.DISABLED, + }); + }); + + test('grants permissions to grantee', () => { + // GIVEN + const collaborator = new AgentCollaborator({ + agentAlias: mockAgentAlias, + collaborationInstruction: 'Test instruction', + collaboratorName: 'Test collaborator', + }); + const grantee = new iam.Role(stack, 'TestRole', { + assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'), + }); + + // WHEN + collaborator.grant(grantee); + + // THEN + expect(mockAgentAlias.grantInvoke).toHaveBeenCalledWith(grantee); + expect(mockAgentAlias.grantGet).toHaveBeenCalledWith(grantee); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts new file mode 100644 index 0000000000000..2217022057873 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -0,0 +1,299 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as kms from 'aws-cdk-lib/aws-kms'; +import { Template, Match } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../lib'; + +describe('Agent', () => { + let stack: core.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + test('creates agent with basic properties', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), + 'FoundationModel': foundationModel.invokableArn, + 'IdleSessionTTLInSeconds': 3600, + 'AutoPrepare': false, + 'Description': Match.absent(), + 'CustomerEncryptionKeyArn': Match.absent(), + }); + }); + + test('creates agent with all properties', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + name: 'MyTestAgent', + description: 'Test agent description', + shouldPrepareAgent: true, + idleSessionTTL: core.Duration.minutes(30), + userInputEnabled: true, + codeInterpreterEnabled: true, + forceDelete: true, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentName': 'MyTestAgent', + 'Description': 'Test agent description', + 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), + 'FoundationModel': foundationModel.invokableArn, + 'IdleSessionTTLInSeconds': 1800, + 'AutoPrepare': true, + 'SkipResourceInUseCheckOnDelete': true, + }); + }); + + test('creates an IAM role with correct trust policy', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { + 'AssumeRolePolicyDocument': { + 'Statement': [ + { + 'Action': 'sts:AssumeRole', + 'Effect': 'Allow', + 'Principal': { + 'Service': 'bedrock.amazonaws.com', + }, + 'Condition': { + 'StringEquals': { + 'aws:SourceAccount': Match.objectLike({ 'Ref': 'AWS::AccountId' }) + }, + 'ArnLike': { + 'aws:SourceArn': { + 'Fn::Join': ['', [ + 'arn:', + { 'Ref': 'AWS::Partition' }, + ':bedrock:', + { 'Ref': 'AWS::Region' }, + ':', + { 'Ref': 'AWS::AccountId' }, + ':agent/*' + ]], + }, + }, + }, + }, + ], + }, + }); + }); + + test('correctly adds bedrock:InvokeAgent permissions when grantInvoke() is called', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const role = new iam.Role(stack, 'Role', { + assumedBy: new iam.AnyPrincipal(), + }); + + agent.grantInvoke(role); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': Match.arrayWith([ + Match.objectLike({ + 'Action': 'bedrock:InvokeAgent', + 'Effect': 'Allow', + 'Resource': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + }, + }), + ]), + }, + }); + }); + + test('cannot be created with instruction less than 40 characters', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'Too short', + foundationModel, + }); + }).toThrow(/instruction must be at least 40 characters/); + }); + + test('does not fail validation if instruction is a late-bound value', () => { + const parameter = new core.CfnParameter(stack, 'Parameter'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: parameter.valueAsString, + foundationModel, + }); + }); + + describe('custom orchestration', () => { + test('sets custom orchestration and grants necessary permissions', () => { + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, + customOrchestration: { + executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'OrchestrationType': 'CUSTOM_ORCHESTRATION', + 'CustomOrchestration': { + 'Executor': { + 'Lambda': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + }, + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { + 'Action': 'lambda:InvokeFunction', + 'FunctionName': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + 'Principal': 'bedrock.amazonaws.com', + 'SourceArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + }, + 'SourceAccount': { + 'Ref': 'AWS::AccountId', + }, + }); + }); + + test('throws error when CUSTOM_ORCHESTRATION type is set without customOrchestration', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, + }); + }).toThrow(/customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION/); + }); + + test('throws error when customOrchestration is provided without CUSTOM_ORCHESTRATION type', () => { + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + orchestrationType: bedrock.OrchestrationType.DEFAULT, + customOrchestration: { + executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), + }, + }); + }).toThrow(/customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION/); + }); + }); + + test('sets KMS key correctly', () => { + const key = new kms.Key(stack, 'TestKey'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + kmsKey: key, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'CustomerEncryptionKeyArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], + }, + }); + }); + + test('uses existing role correctly', () => { + const role = new iam.Role(stack, 'ExistingRole', { + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + existingRole: role, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentResourceRoleArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], + }, + }); + }); + + describe('edge cases', () => { + test('handles undefined agentCollaborators', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'AgentCollaboration': 'SUPERVISOR', + 'AgentCollaborators': Match.absent(), + }); + }); + + test('handles disabled default action groups', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + userInputEnabled: false, + codeInterpreterEnabled: false, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': [ + { + 'ActionGroupName': 'UserInputAction', + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.UserInput', + 'SkipResourceInUseCheckOnDelete': false + }, + { + 'ActionGroupName': 'CodeInterpreterAction', + 'ActionGroupState': 'DISABLED', + 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + 'SkipResourceInUseCheckOnDelete': false + } + ], + }); + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts new file mode 100644 index 0000000000000..1e38857be945e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts @@ -0,0 +1,113 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Template, Match } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../lib'; + +describe('AgentActionGroupExecutor', () => { + let stack: core.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + test('creates action group with lambda executor', () => { + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + executor: bedrock.ActionGroupExecutor.fromlambdaFunction(fn), + }); + + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'ActionGroups': Match.arrayWith([ + Match.objectLike({ + 'ActionGroupName': 'CustomAction', + 'ActionGroupState': 'ENABLED', + 'ActionGroupExecutor': { + 'Lambda': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + }, + }), + ]), + }); + + // Verify Lambda permissions + Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { + 'Action': 'lambda:InvokeFunction', + 'FunctionName': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + 'Principal': 'bedrock.amazonaws.com', + 'SourceArn': { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + }, + 'SourceAccount': { + 'Ref': 'AWS::AccountId', + }, + }); + }); + + test('grants necessary permissions to agent role', () => { + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + executor: bedrock.ActionGroupExecutor.fromlambdaFunction(fn), + }); + + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': Match.arrayWith([ + Match.objectLike({ + 'Action': 'lambda:InvokeFunction', + 'Effect': 'Allow', + 'Resource': Match.arrayWith([ + { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + ]), + }), + ]), + }, + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts new file mode 100644 index 0000000000000..e509d743fffe2 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts @@ -0,0 +1,137 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Template, Match } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../lib'; + +describe('ApiSchema', () => { + let stack: core.Stack; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + }); + + test('creates schema from inline content', () => { + const schema = bedrock.ApiSchema.fromInline(JSON.stringify({ + openapi: '3.0.0', + info: { title: 'Test API', version: '1.0.0' }, + paths: { + '/test': { + get: { + responses: { + '200': { + description: 'OK', + }, + }, + }, + }, + }, + })); + + expect(schema._render()).toEqual({ + payload: JSON.stringify({ + openapi: '3.0.0', + info: { title: 'Test API', version: '1.0.0' }, + paths: { + '/test': { + get: { + responses: { + '200': { + description: 'OK', + }, + }, + }, + }, + }, + }), + }); + }); + + test('creates schema from S3 location', () => { + const bucket = new s3.Bucket(stack, 'TestBucket'); + const schema = bedrock.ApiSchema.fromS3File(bucket, 'schema.json'); + + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel: { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }, + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + apiSchema: schema, + }); + + agent.addActionGroup(actionGroup); + + expect(schema._render()).toEqual({ + s3: { + s3BucketName: bucket.bucketName, + s3ObjectKey: 'schema.json', + }, + }); + }); + + test('creates schema from inline content with minimal OpenAPI schema', () => { + const minimalSchema = { + openapi: '3.0.0', + info: { title: 'Minimal API', version: '1.0.0' }, + paths: {}, + }; + + const schema = bedrock.ApiSchema.fromInline(JSON.stringify(minimalSchema)); + expect(schema._render()).toEqual({ + payload: JSON.stringify(minimalSchema), + }); + }); + + test('grants read permissions to agent role', () => { + const bucket = new s3.Bucket(stack, 'TestBucket'); + const schema = bedrock.ApiSchema.fromS3File(bucket, 'schema.json'); + + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel: { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }, + }); + + const actionGroup = new bedrock.AgentActionGroup({ + name: 'CustomAction', + enabled: true, + apiSchema: schema, + }); + + agent.addActionGroup(actionGroup); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': Match.arrayWith([ + Match.objectLike({ + 'Action': ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + 'Effect': 'Allow', + 'Resource': 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + }), + ]), + }, + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json similarity index 100% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json similarity index 100% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json similarity index 61% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json index f77a1dd10965f..2c66261e627c2 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.assets.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json @@ -1,16 +1,16 @@ { "version": "41.0.0", "files": { - "8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2": { - "displayName": "BAgentIntegTestStack Template", + "8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832": { + "displayName": "agentIntegTestStack Template", "source": { - "path": "BAgentIntegTestStack.template.json", + "path": "agentIntegTestStack.template.json", "packaging": "file" }, "destinations": { "551246883740-us-east-1": { "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", - "objectKey": "8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2.json", + "objectKey": "8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json similarity index 97% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json index 1c4f6bd080505..06585e1969a24 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/BAgentIntegTestStack.template.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json @@ -25,7 +25,7 @@ ], "Version": "2012-10-17" }, - "RoleName": "agent--bagentintegteststack-testagent-98576594-bedrockagent" + "RoleName": "agent--agentintegteststack-testagent-ba71f531-bedrockagent" } }, "TestAgentRoleDefaultPolicy0A38CDBA": { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out similarity index 100% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/cdk.out rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json similarity index 90% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json index 5bf12a2093085..15164a53e6dd1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/integ.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json @@ -3,7 +3,7 @@ "testCases": { "BedrockAgentIntegTest/DefaultTest": { "stacks": [ - "BAgentIntegTestStack" + "agentIntegTestStack" ], "assertionStack": "BedrockAgentIntegTest/DefaultTest/DeployAssert", "assertionStackName": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D" diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json similarity index 87% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json index 89826cfd9589d..20c755c848321 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -1,28 +1,28 @@ { "version": "42.0.0", "artifacts": { - "BAgentIntegTestStack.assets": { + "agentIntegTestStack.assets": { "type": "cdk:asset-manifest", "properties": { - "file": "BAgentIntegTestStack.assets.json", + "file": "agentIntegTestStack.assets.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" } }, - "BAgentIntegTestStack": { + "agentIntegTestStack": { "type": "aws:cloudformation:stack", "environment": "aws://551246883740/us-east-1", "properties": { - "templateFile": "BAgentIntegTestStack.template.json", + "templateFile": "agentIntegTestStack.template.json", "terminationProtection": false, "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/8b171be8e5dd66448f95cef724af4bc7332c3faafdfd670e394412d2830a97c2.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ - "BAgentIntegTestStack.assets" + "agentIntegTestStack.assets" ], "lookupRole": { "arn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-lookup-role-551246883740-us-east-1", @@ -31,10 +31,10 @@ } }, "dependencies": [ - "BAgentIntegTestStack.assets" + "agentIntegTestStack.assets" ], "metadata": { - "/BAgentIntegTestStack/TestAgent/Role": [ + "/agentIntegTestStack/TestAgent/Role": [ { "type": "aws:cdk:analytics:construct", "data": { @@ -70,19 +70,19 @@ } } ], - "/BAgentIntegTestStack/TestAgent/Role/ImportRole": [ + "/agentIntegTestStack/TestAgent/Role/ImportRole": [ { "type": "aws:cdk:analytics:construct", "data": "*" } ], - "/BAgentIntegTestStack/TestAgent/Role/Resource": [ + "/agentIntegTestStack/TestAgent/Role/Resource": [ { "type": "aws:cdk:logicalId", "data": "TestAgentRole522C6259" } ], - "/BAgentIntegTestStack/TestAgent/Role/DefaultPolicy": [ + "/agentIntegTestStack/TestAgent/Role/DefaultPolicy": [ { "type": "aws:cdk:analytics:construct", "data": "*" @@ -112,32 +112,32 @@ } } ], - "/BAgentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource": [ + "/agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource": [ { "type": "aws:cdk:logicalId", "data": "TestAgentRoleDefaultPolicy0A38CDBA" } ], - "/BAgentIntegTestStack/TestAgent/AgentResource": [ + "/agentIntegTestStack/TestAgent/AgentResource": [ { "type": "aws:cdk:logicalId", "data": "TestAgentAgentResource807C0F50" } ], - "/BAgentIntegTestStack/BootstrapVersion": [ + "/agentIntegTestStack/BootstrapVersion": [ { "type": "aws:cdk:logicalId", "data": "BootstrapVersion" } ], - "/BAgentIntegTestStack/CheckBootstrapVersion": [ + "/agentIntegTestStack/CheckBootstrapVersion": [ { "type": "aws:cdk:logicalId", "data": "CheckBootstrapVersion" } ] }, - "displayName": "BAgentIntegTestStack" + "displayName": "agentIntegTestStack" }, "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets": { "type": "cdk:asset-manifest", diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json new file mode 100644 index 0000000000000..faea7f9af62b6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"agentIntegTestStack":{"id":"agentIntegTestStack","path":"agentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"agentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"agentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"agentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--agentintegteststack-testagent-ba71f531-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"AgentResource":{"id":"AgentResource","path":"agentIntegTestStack/TestAgent/AgentResource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"agentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"agentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"agentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts similarity index 92% rename from packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts rename to packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts index b3e689b5ba691..c74a0d9893916 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/agents/integ.agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts @@ -9,7 +9,7 @@ import * as cdk from 'aws-cdk-lib'; import { IntegTest } from '@aws-cdk/integ-tests-alpha'; -import * as bedrock from '../../lib'; +import * as bedrock from '../../../lib'; const app = new cdk.App(); @@ -28,7 +28,7 @@ class TestStack extends cdk.Stack { } } -const stack = new TestStack(app, 'BAgentIntegTestStack', { +const stack = new TestStack(app, 'agentIntegTestStack', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION , diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts new file mode 100644 index 0000000000000..5a48eff407f14 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts @@ -0,0 +1,112 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import { Memory } from '../../../bedrock/agents/memory'; +import { Template } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../lib'; + +describe('Memory', () => { + let stack: core.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + describe('sessionSummary', () => { + test('sets session summary memory configuration correctly', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory: Memory.sessionSummary({ + memoryDurationDays: 30, + maxRecentSessions: 20, + }), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'MemoryConfiguration': { + 'EnabledMemoryTypes': ['SESSION_SUMMARY'], + 'StorageDays': 30, + 'SessionSummaryConfiguration': { + 'MaxRecentSessions': 20, + }, + }, + }); + }); + + test('validates memory duration days range', () => { + expect(() => { + Memory.sessionSummary({ + memoryDurationDays: 0, + maxRecentSessions: 20, + }); + }).toThrow(/memoryDurationDays must be between 1 and 365/); + + expect(() => { + Memory.sessionSummary({ + memoryDurationDays: 366, + maxRecentSessions: 20, + }); + }).toThrow(/memoryDurationDays must be between 1 and 365/); + }); + + test('validates maxRecentSessions range', () => { + expect(() => { + Memory.sessionSummary({ + memoryDurationDays: 30, + maxRecentSessions: 0, + }); + }).toThrow(/maxRecentSessions must be greater than 0/); + }); + + test('uses default values when not provided', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory: Memory.sessionSummary({}), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'MemoryConfiguration': { + 'EnabledMemoryTypes': ['SESSION_SUMMARY'], + 'StorageDays': 30, + 'SessionSummaryConfiguration': { + 'MaxRecentSessions': 20, + }, + }, + }); + }); + }); + + describe('SESSION_SUMMARY', () => { + test('uses static SESSION_SUMMARY property', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory: Memory.SESSION_SUMMARY, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + 'MemoryConfiguration': { + 'EnabledMemoryTypes': ['SESSION_SUMMARY'], + 'StorageDays': 30, + 'SessionSummaryConfiguration': { + 'MaxRecentSessions': 20, + }, + }, + }); + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts new file mode 100644 index 0000000000000..75cde0355afbc --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts @@ -0,0 +1,130 @@ +import { Stack } from 'aws-cdk-lib'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import { OrchestrationExecutor } from '../../../bedrock/agents/orchestration-executor'; + +describe('OrchestrationExecutor', () => { + let stack: Stack; + let testFunction: lambda.Function; + + beforeEach(() => { + stack = new Stack(); + testFunction = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = function() { }'), + }); + }); + + test('can create from lambda function', () => { + // WHEN + const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); + + // THEN + expect(executor).toBeInstanceOf(OrchestrationExecutor); + expect(executor.lambdaFunction).toBe(testFunction); + }); + + test('renders CFN properties correctly', () => { + // GIVEN + const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: testFunction.functionArn, + }); + }); + + test('handles undefined lambda function gracefully', () => { + // GIVEN + const executor = OrchestrationExecutor.fromlambdaFunction(undefined as any); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: undefined, + }); + }); + + test('handles null lambda function gracefully', () => { + // GIVEN + const executor = OrchestrationExecutor.fromlambdaFunction(null as any); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: undefined, + }); + }); + + test('handles lambda function with undefined functionArn', () => { + // GIVEN + const mockFunction = {} as lambda.IFunction; + const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: undefined, + }); + }); + + test('handles non-function input', () => { + // GIVEN + const nonFunction = { someProperty: 'value' }; + + // THEN + expect(() => { + OrchestrationExecutor.fromlambdaFunction(nonFunction as any); + }).not.toThrow(); + }); + + test('handles lambda function with null functionArn', () => { + // GIVEN + const mockFunction = { + functionArn: null, + } as any as lambda.IFunction; + const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: null, + }); + }); + + test('preserves lambda function reference', () => { + // GIVEN + const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); + const anotherExecutor = OrchestrationExecutor.fromlambdaFunction(testFunction); + + // THEN + expect(executor.lambdaFunction).toBe(anotherExecutor.lambdaFunction); + }); + + test('renders with mock lambda function', () => { + // GIVEN + const mockFunction = { + functionArn: 'arn:aws:lambda:us-west-2:123456789012:function:test', + } as lambda.IFunction; + const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + + // WHEN + const rendered = executor._render(); + + // THEN + expect(rendered).toEqual({ + lambda: 'arn:aws:lambda:us-west-2:123456789012:function:test', + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts new file mode 100644 index 0000000000000..55705ff79a08a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts @@ -0,0 +1,331 @@ +import { Stack } from 'aws-cdk-lib'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import { AgentStepType, PromptOverrideConfiguration } from '../../../bedrock/agents/prompt-override'; +import { IInvokable } from '../../../bedrock/models'; + +describe('PromptOverrideConfiguration', () => { + let stack: Stack; + let mockFoundationModel: IInvokable; + + beforeEach(() => { + stack = new Stack(); + mockFoundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1:123456789012:foundation-model/anthropic.claude-v2', + grantInvoke: jest.fn(), + }; + }); + + describe('fromSteps', () => { + test('creates with valid steps', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + stepEnabled: true, + customPromptTemplate: 'test template', + inferenceConfig: { + temperature: 0.5, + topP: 0.5, + topK: 250, + stopSequences: ['stop'], + maximumLength: 2048, + }, + }, + ]); + + // THEN + const rendered = config._render(); + expect(rendered.promptConfigurations).toHaveLength(1); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0]).toEqual({ + promptType: AgentStepType.PRE_PROCESSING, + promptState: 'ENABLED', + parserMode: undefined, + promptCreationMode: 'OVERRIDDEN', + basePromptTemplate: 'test template', + inferenceConfiguration: { + temperature: 0.5, + topP: 0.5, + topK: 250, + stopSequences: ['stop'], + maximumLength: 2048, + }, + foundationModel: undefined, + }); + }); + + test('throws error for empty steps', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([]); + }).toThrow('Steps array cannot be empty'); + }); + }); + + describe('withCustomParser', () => { + test('creates with valid parser and steps', () => { + // GIVEN + const parser = new lambda.Function(stack, 'TestParser', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = () => {}'), + }); + + // WHEN + const config = PromptOverrideConfiguration.withCustomParser({ + parser, + steps: [ + { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: true, + }, + ], + }); + + // THEN + const rendered = config._render(); + expect(rendered.overrideLambda).toBeDefined(); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].parserMode).toBe('OVERRIDDEN'); + }); + + test('throws error when no step uses custom parser', () => { + // GIVEN + const parser = new lambda.Function(stack, 'TestParser', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = () => {}'), + }); + + // THEN + expect(() => { + PromptOverrideConfiguration.withCustomParser({ + parser, + steps: [ + { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: false, + }, + ], + }); + }).toThrow('At least one step must use custom parser'); + }); + }); + + describe('inference configuration validation', () => { + test('validates temperature range', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + inferenceConfig: { + temperature: 1.5, + topP: 0.5, + topK: 250, + stopSequences: ['stop'], + maximumLength: 2048, + }, + }, + ]); + }).toThrow('Temperature must be between 0 and 1'); + }); + + test('validates topP range', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + inferenceConfig: { + temperature: 0.5, + topP: 1.5, + topK: 250, + stopSequences: ['stop'], + maximumLength: 2048, + }, + }, + ]); + }).toThrow('TopP must be between 0 and 1'); + }); + + test('validates topK range', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + inferenceConfig: { + temperature: 0.5, + topP: 0.5, + topK: 501, + stopSequences: ['stop'], + maximumLength: 2048, + }, + }, + ]); + }).toThrow('TopK must be between 0 and 500'); + }); + + test('validates stopSequences length', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + inferenceConfig: { + temperature: 0.5, + topP: 0.5, + topK: 250, + stopSequences: ['stop1', 'stop2', 'stop3', 'stop4', 'stop5'], + maximumLength: 2048, + }, + }, + ]); + }).toThrow('Maximum 4 stop sequences allowed'); + }); + + test('validates maximumLength range', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + inferenceConfig: { + temperature: 0.5, + topP: 0.5, + topK: 250, + stopSequences: ['stop'], + maximumLength: 5000, + }, + }, + ]); + }).toThrow('MaximumLength must be between 0 and 4096'); + }); + }); + + describe('foundation model validation', () => { + test('allows foundation model for ROUTING_CLASSIFIER', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.ROUTING_CLASSIFIER, + foundationModel: mockFoundationModel, + }, + ]); + + // THEN + const rendered = config._render(); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].foundationModel).toBe(mockFoundationModel.invokableArn); + }); + + test('throws error for foundation model in non-ROUTING_CLASSIFIER step', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + foundationModel: mockFoundationModel, + }, + ]); + }).toThrow('Foundation model can only be specified for ROUTING_CLASSIFIER step type'); + }); + + test('throws error for invalid foundation model', () => { + // THEN + expect(() => { + PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.ROUTING_CLASSIFIER, + foundationModel: {} as IInvokable, + }, + ]); + }).toThrow('Foundation model must be a valid IInvokable with an invokableArn'); + }); + }); + + describe('rendering', () => { + test('renders step states correctly', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + stepEnabled: true, + }, + { + stepType: AgentStepType.ORCHESTRATION, + stepEnabled: false, + }, + { + stepType: AgentStepType.POST_PROCESSING, + stepEnabled: undefined, + }, + ]); + + // THEN + const rendered = config._render(); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].promptState).toBe('ENABLED'); + expect(configs[1].promptState).toBe('DISABLED'); + expect(configs[2].promptState).toBeUndefined(); + }); + + test('renders prompt creation modes correctly', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + customPromptTemplate: 'custom template', + }, + { + stepType: AgentStepType.ORCHESTRATION, + customPromptTemplate: '', + }, + { + stepType: AgentStepType.POST_PROCESSING, + customPromptTemplate: undefined, + }, + ]); + + // THEN + const rendered = config._render(); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].promptCreationMode).toBe('OVERRIDDEN'); + expect(configs[1].promptCreationMode).toBe('DEFAULT'); + expect(configs[2].promptCreationMode).toBeUndefined(); + }); + + test('renders parser modes correctly', () => { + // WHEN + const config = PromptOverrideConfiguration.withCustomParser({ + parser: new lambda.Function(stack, 'TestParser', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = () => {}'), + }), + steps: [ + { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: true, + }, + { + stepType: AgentStepType.ORCHESTRATION, + useCustomParser: false, + }, + { + stepType: AgentStepType.POST_PROCESSING, + useCustomParser: undefined, + }, + ], + }); + + // THEN + const rendered = config._render(); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].parserMode).toBe('OVERRIDDEN'); + expect(configs[1].parserMode).toBe('DEFAULT'); + expect(configs[2].parserMode).toBeUndefined(); + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts new file mode 100644 index 0000000000000..1bbb14cdd8f98 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts @@ -0,0 +1,127 @@ +import { Token } from 'aws-cdk-lib'; +import { validateStringFieldLength, validateFieldPattern, throwIfInvalid } from '../../../bedrock/agents/validation-helpers'; + +describe('validation-helpers', () => { + describe('validateStringFieldLength', () => { + test('returns empty array for valid string length', () => { + const result = validateStringFieldLength({ + value: 'test', + fieldName: 'testField', + minLength: 2, + maxLength: 10, + }); + expect(result).toEqual([]); + }); + + test('returns error when string is too short', () => { + const result = validateStringFieldLength({ + value: 'a', + fieldName: 'testField', + minLength: 2, + maxLength: 10, + }); + expect(result).toHaveLength(1); + expect(result[0]).toContain('must be at least 2 characters'); + }); + + test('returns error when string is too long', () => { + const result = validateStringFieldLength({ + value: 'this is a very long string', + fieldName: 'testField', + minLength: 2, + maxLength: 10, + }); + expect(result).toHaveLength(1); + expect(result[0]).toContain('must be less than or equal to 10 characters'); + }); + + test('skips validation for unresolved tokens', () => { + const tokenValue = Token.asString({ Ref: 'SomeParameter' }); + const result = validateStringFieldLength({ + value: tokenValue, + fieldName: tokenValue, + minLength: 2, + maxLength: 10, + }); + expect(result).toEqual([]); + }); + }); + + describe('validateFieldPattern', () => { + test('returns empty array for valid pattern match', () => { + const result = validateFieldPattern( + 'test123', + 'testField', + /^[a-z0-9]+$/, + ); + expect(result).toEqual([]); + }); + + test('returns error for invalid pattern match', () => { + const result = validateFieldPattern( + 'test@123', + 'testField', + /^[a-z0-9]+$/, + ); + expect(result).toHaveLength(1); + expect(result[0]).toContain('does not match the required pattern'); + }); + + test('uses custom error message when provided', () => { + const customMessage = 'Custom validation error'; + const result = validateFieldPattern( + 'test@123', + 'testField', + /^[a-z0-9]+$/, + customMessage, + ); + expect(result).toEqual([customMessage]); + }); + + test('returns error for non-string value', () => { + const result = validateFieldPattern( + 42 as any, + 'testField', + /^[0-9]+$/, + ); + expect(result).toHaveLength(1); + expect(result[0]).toContain('Expected string'); + }); + + + test('skips validation for unresolved tokens', () => { + const tokenValue = Token.asString({ Ref: 'SomeParameter' }); + const result = validateFieldPattern( + tokenValue, + 'testField', + /^[a-z0-9]+$/, + ); + expect(result).toEqual([]); + }); + }); + + describe('throwIfInvalid', () => { + test('returns parameter when validation passes', () => { + const param = { value: 'test', fieldName: 'testField', minLength: 2, maxLength: 10 }; + const result = throwIfInvalid(validateStringFieldLength, param); + expect(result).toBe(param); + }); + + test('throws error when validation fails', () => { + const param = { value: 'a', fieldName: 'testField', minLength: 2, maxLength: 10 }; + expect(() => { + throwIfInvalid(validateStringFieldLength, param); + }).toThrow('must be at least 2 characters'); + }); + + test('throws combined error messages when multiple validations fail', () => { + const validationFn = () => [ + 'Error 1', + 'Error 2', + ]; + expect(() => { + throwIfInvalid(validationFn, 'test'); + }).toThrow('Error 1\nError 2'); + }); + }); +}); From 266441a6e03994d1ac506cfc843df2177bc07544 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Fri, 11 Apr 2025 15:19:05 -0400 Subject: [PATCH 08/39] feat(bedorckl2):fixed build issue by linking node_modules form core package --- yarn.lock | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 6f5fbf4c69f03..5fa108aff258c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,6 +58,12 @@ resolved "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== +"@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": + version "0.0.0" + +"@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": + version "0.0.0" + "@aws-cdk/aws-service-spec@0.1.62": version "0.1.62" resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.62.tgz#7cb5f186f9805206ac7718f75d4c537d7727dc0d" @@ -4488,6 +4494,11 @@ dependencies: tslib "^2.4.0" +"@types/aws-lambda@^8.10.136": + version "8.10.149" + resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" + integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== + "@types/aws-lambda@^8.10.148": version "8.10.148" resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.148.tgz#3a31fc720670473c4d7de4b03d074e8bd97e36a3" @@ -4695,6 +4706,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.11.19": + version "18.19.86" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b" + integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== + dependencies: + undici-types "~5.26.4" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -5331,6 +5349,26 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-cdk-lib@^2.188.0: + version "2.189.0" + resolved "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz#b5964f1686215834b9f8497c131901c120355147" + integrity sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw== + dependencies: + "@aws-cdk/asset-awscli-v1" "^2.2.229" + "@aws-cdk/asset-node-proxy-agent-v6" "^2.1.0" + "@aws-cdk/cloud-assembly-schema" "^41.0.0" + "@balena/dockerignore" "^1.0.2" + case "1.6.3" + fs-extra "^11.3.0" + ignore "^5.3.2" + jsonschema "^1.5.0" + mime-types "^2.1.35" + minimatch "^3.1.2" + punycode "^2.3.1" + semver "^7.7.1" + table "^6.9.0" + yaml "1.10.2" + aws-cdk@2.1006.0: version "2.1006.0" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1006.0.tgz#21fd99184c5b0eea3c5c384fd5c5209e78569508" @@ -5338,6 +5376,13 @@ aws-cdk@2.1006.0: optionalDependencies: fsevents "2.3.2" +aws-cdk@2.1007.0: + version "2.1007.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" + integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== + optionalDependencies: + fsevents "2.3.2" + aws-sdk-client-mock-jest@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-4.1.0.tgz#40a3bdedd8d551cf2a836b77239038c0ca10e25c" @@ -5814,6 +5859,11 @@ cdk-generate-synthetic-examples@^0.2.24: jsii-reflect "^1.110.0" yargs "^17.7.2" +cdk-nag@2.28.13: + version "2.28.13" + resolved "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.28.13.tgz#bef1b6c65496d99ef2e110f1a28f5260f9efef80" + integrity sha512-f+fteEq09+N7H2heqls0NcTC+MFcXl6fztEjjpKK0qTo5eFAKmDekEHLRGY5LX8v/JlueoVyhttsjaULNwnoSg== + cdk8s-plus-27@2.9.5: version "2.9.5" resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" @@ -13738,6 +13788,22 @@ ts-jest@^29, ts-jest@^29.3.0: type-fest "^4.37.0" yargs-parser "^21.1.1" +ts-jest@^29.2.5: + version "29.3.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz#2e459e1f94a833bd8216ba4b045fac948e265937" + integrity sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.1" + type-fest "^4.38.0" + yargs-parser "^21.1.1" + ts-mock-imports@^1.3.16: version "1.3.16" resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" @@ -13891,6 +13957,11 @@ type-fest@^4.37.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96" integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg== +type-fest@^4.38.0: + version "4.39.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e" + integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w== + typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" @@ -13987,6 +14058,11 @@ typescript@~5.5.0, typescript@~5.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typescript@~5.6.3: + version "5.6.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + typescript@~5.7: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" @@ -14658,4 +14734,4 @@ yn@3.1.1: yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== \ No newline at end of file + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 5b88994e413bcbd2c7a0b4d3f953a4b53a8871bb Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 17 Apr 2025 11:12:00 -0400 Subject: [PATCH 09/39] feat(bedrockl2):fixed build issues,added rosetta --- .../@aws-cdk/aws-bedrock-alpha/.eslintrc.js | 4 + .../@aws-cdk/aws-bedrock-alpha/.gitignore | 12 +- packages/@aws-cdk/aws-bedrock-alpha/.jsii | 9270 +++++++++++++++++ .../@aws-cdk/aws-bedrock-alpha/.npmignore | 18 + packages/@aws-cdk/aws-bedrock-alpha/README.md | 76 +- .../bedrock/agents/action-group.ts | 47 +- .../bedrock/agents/agent-alias.ts | 13 +- .../bedrock/agents/agent-collaborator.ts | 53 +- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 65 +- .../bedrock/agents/api-executor.ts | 9 + .../bedrock/agents/api-schema.ts | 13 + .../bedrock/agents/memory.ts | 53 +- .../bedrock/agents/orchestration-executor.ts | 6 +- .../bedrock/agents/orchestration.ts | 16 +- .../bedrock/agents/prompt-override.ts | 57 +- .../aws-bedrock-alpha/bedrock/agents/utils.ts | 9 +- .../aws-bedrock-alpha/bedrock/index.ts | 4 +- .../aws-bedrock-alpha/bedrock/models.ts | 191 +- .../@aws-cdk/aws-bedrock-alpha/package.json | 44 +- .../rosetta/default.ts-fixture | 8 +- .../test/bedrock/agents/action-group.test.ts | 38 +- .../test/bedrock/agents/agent-alias.test.ts | 46 +- .../bedrock/agents/agent-collaborator.test.ts | 42 +- .../test/bedrock/agents/agent.test.ts | 118 +- .../test/bedrock/agents/api-executor.test.ts | 34 +- .../test/bedrock/agents/api-schema.test.ts | 14 +- .../agentIntegTestStack.assets.json | 4 +- .../agentIntegTestStack.template.json | 2 +- .../integ.agent.js.snapshot/manifest.json | 6 +- .../agents/integ.agent.js.snapshot/tree.json | 2 +- .../test/bedrock/agents/integ.agent.ts | 10 +- .../test/bedrock/agents/memory.test.ts | 42 +- .../bedrock/agents/validation-helpers.test.ts | 1 - .../@aws-cdk/aws-bedrock-alpha/tsconfig.json | 5 +- 34 files changed, 9997 insertions(+), 335 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.eslintrc.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsii create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.npmignore diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.eslintrc.js b/packages/@aws-cdk/aws-bedrock-alpha/.eslintrc.js new file mode 100644 index 0000000000000..73d2505a85a7f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/.eslintrc.js @@ -0,0 +1,4 @@ +const baseConfig = require('@aws-cdk/cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +baseConfig.rules['import/order'] = 'off'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.gitignore b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore index e7f1f66e4f9e9..713ece147c435 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/.gitignore +++ b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore @@ -1,4 +1,14 @@ *.js !jest.config.js *.d.ts -node_modules \ No newline at end of file +node_modules +dist +.LAST_PACKAGE +*.tsbuildinfo +.LAST_BUILD +*.snk +junit.xml +.nyc_output +coverage +nyc.config.js +!.eslintrc.js diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsii b/packages/@aws-cdk/aws-bedrock-alpha/.jsii new file mode 100644 index 0000000000000..cfce73f395aef --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/.jsii @@ -0,0 +1,9270 @@ +{ + "author": { + "name": "Amazon Web Services", + "organization": true, + "roles": [ + "author" + ], + "url": "https://aws.amazon.com" + }, + "dependencies": { + "aws-cdk-lib": "^0.0.0", + "constructs": "^10.0.0" + }, + "dependencyClosure": { + "@aws-cdk/asset-awscli-v1": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Asset.AwsCliV1", + "packageId": "Amazon.CDK.Asset.AwsCliV1" + }, + "go": { + "moduleName": "github.com/cdklabs/awscdk-asset-awscli-go", + "packageName": "awscliv1" + }, + "java": { + "maven": { + "artifactId": "cdk-asset-awscli-v1", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk.cdk.asset.awscli.v1" + }, + "js": { + "npm": "@aws-cdk/asset-awscli-v1" + }, + "python": { + "distName": "aws-cdk.asset-awscli-v1", + "module": "aws_cdk.asset_awscli_v1" + } + } + }, + "@aws-cdk/asset-node-proxy-agent-v6": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Asset.NodeProxyAgentV6", + "packageId": "Amazon.CDK.Asset.NodeProxyAgentV6" + }, + "go": { + "moduleName": "github.com/cdklabs/awscdk-asset-node-proxy-agent-go", + "packageName": "nodeproxyagentv6" + }, + "java": { + "maven": { + "artifactId": "cdk-asset-node-proxy-agent-v6", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.v6" + }, + "js": { + "npm": "@aws-cdk/asset-node-proxy-agent-v6" + }, + "python": { + "distName": "aws-cdk.asset-node-proxy-agent-v6", + "module": "aws_cdk.asset_node_proxy_agent_v6" + } + } + }, + "@aws-cdk/cloud-assembly-schema": { + "targets": { + "dotnet": { + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", + "namespace": "Amazon.CDK.CloudAssembly.Schema", + "packageId": "Amazon.CDK.CloudAssembly.Schema" + }, + "go": { + "moduleName": "github.com/cdklabs/cloud-assembly-schema-go" + }, + "java": { + "maven": { + "artifactId": "cdk-cloud-assembly-schema", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk.cloudassembly.schema" + }, + "js": { + "npm": "@aws-cdk/cloud-assembly-schema" + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 2" + ], + "distName": "aws-cdk.cloud-assembly-schema", + "module": "aws_cdk.cloud_assembly_schema" + } + } + }, + "aws-cdk-lib": { + "submodules": { + "aws-cdk-lib.alexa_ask": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Alexa.Ask" + }, + "java": { + "package": "software.amazon.awscdk.alexa.ask" + }, + "python": { + "module": "aws_cdk.alexa_ask" + } + } + }, + "aws-cdk-lib.assertions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Assertions" + }, + "java": { + "package": "software.amazon.awscdk.assertions" + }, + "python": { + "module": "aws_cdk.assertions" + } + } + }, + "aws-cdk-lib.assets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Assets" + }, + "java": { + "package": "software.amazon.awscdk.assets" + }, + "python": { + "module": "aws_cdk.assets" + } + } + }, + "aws-cdk-lib.aws_accessanalyzer": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AccessAnalyzer" + }, + "java": { + "package": "software.amazon.awscdk.services.accessanalyzer" + }, + "python": { + "module": "aws_cdk.aws_accessanalyzer" + } + } + }, + "aws-cdk-lib.aws_acmpca": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ACMPCA" + }, + "java": { + "package": "software.amazon.awscdk.services.acmpca" + }, + "python": { + "module": "aws_cdk.aws_acmpca" + } + } + }, + "aws-cdk-lib.aws_amazonmq": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AmazonMQ" + }, + "java": { + "package": "software.amazon.awscdk.services.amazonmq" + }, + "python": { + "module": "aws_cdk.aws_amazonmq" + } + } + }, + "aws-cdk-lib.aws_amplify": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Amplify" + }, + "java": { + "package": "software.amazon.awscdk.services.amplify" + }, + "python": { + "module": "aws_cdk.aws_amplify" + } + } + }, + "aws-cdk-lib.aws_amplifyuibuilder": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AmplifyUIBuilder" + }, + "java": { + "package": "software.amazon.awscdk.services.amplifyuibuilder" + }, + "python": { + "module": "aws_cdk.aws_amplifyuibuilder" + } + } + }, + "aws-cdk-lib.aws_apigateway": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.APIGateway" + }, + "java": { + "package": "software.amazon.awscdk.services.apigateway" + }, + "python": { + "module": "aws_cdk.aws_apigateway" + } + } + }, + "aws-cdk-lib.aws_apigatewayv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Apigatewayv2" + }, + "java": { + "package": "software.amazon.awscdk.services.apigatewayv2" + }, + "python": { + "module": "aws_cdk.aws_apigatewayv2" + } + } + }, + "aws-cdk-lib.aws_apigatewayv2_authorizers": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AwsApigatewayv2Authorizers" + }, + "java": { + "package": "software.amazon.awscdk.aws_apigatewayv2_authorizers" + }, + "python": { + "module": "aws_cdk.aws_apigatewayv2_authorizers" + } + } + }, + "aws-cdk-lib.aws_apigatewayv2_integrations": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AwsApigatewayv2Integrations" + }, + "java": { + "package": "software.amazon.awscdk.aws_apigatewayv2_integrations" + }, + "python": { + "module": "aws_cdk.aws_apigatewayv2_integrations" + } + } + }, + "aws-cdk-lib.aws_appconfig": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppConfig" + }, + "java": { + "package": "software.amazon.awscdk.services.appconfig" + }, + "python": { + "module": "aws_cdk.aws_appconfig" + } + } + }, + "aws-cdk-lib.aws_appflow": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppFlow" + }, + "java": { + "package": "software.amazon.awscdk.services.appflow" + }, + "python": { + "module": "aws_cdk.aws_appflow" + } + } + }, + "aws-cdk-lib.aws_appintegrations": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppIntegrations" + }, + "java": { + "package": "software.amazon.awscdk.services.appintegrations" + }, + "python": { + "module": "aws_cdk.aws_appintegrations" + } + } + }, + "aws-cdk-lib.aws_applicationautoscaling": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ApplicationAutoScaling" + }, + "java": { + "package": "software.amazon.awscdk.services.applicationautoscaling" + }, + "python": { + "module": "aws_cdk.aws_applicationautoscaling" + } + } + }, + "aws-cdk-lib.aws_applicationinsights": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ApplicationInsights" + }, + "java": { + "package": "software.amazon.awscdk.services.applicationinsights" + }, + "python": { + "module": "aws_cdk.aws_applicationinsights" + } + } + }, + "aws-cdk-lib.aws_applicationsignals": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.ApplicationSignals" + }, + "java": { + "package": "software.amazon.awscdk.services.applicationsignals" + }, + "python": { + "module": "aws_cdk.aws_applicationsignals" + } + } + }, + "aws-cdk-lib.aws_appmesh": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppMesh" + }, + "java": { + "package": "software.amazon.awscdk.services.appmesh" + }, + "python": { + "module": "aws_cdk.aws_appmesh" + } + } + }, + "aws-cdk-lib.aws_apprunner": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppRunner" + }, + "java": { + "package": "software.amazon.awscdk.services.apprunner" + }, + "python": { + "module": "aws_cdk.aws_apprunner" + } + } + }, + "aws-cdk-lib.aws_appstream": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppStream" + }, + "java": { + "package": "software.amazon.awscdk.services.appstream" + }, + "python": { + "module": "aws_cdk.aws_appstream" + } + } + }, + "aws-cdk-lib.aws_appsync": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AppSync" + }, + "java": { + "package": "software.amazon.awscdk.services.appsync" + }, + "python": { + "module": "aws_cdk.aws_appsync" + } + } + }, + "aws-cdk-lib.aws_apptest": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.AppTest" + }, + "java": { + "package": "software.amazon.awscdk.services.apptest" + }, + "python": { + "module": "aws_cdk.aws_apptest" + } + } + }, + "aws-cdk-lib.aws_aps": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.APS" + }, + "java": { + "package": "software.amazon.awscdk.services.aps" + }, + "python": { + "module": "aws_cdk.aws_aps" + } + } + }, + "aws-cdk-lib.aws_arczonalshift": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.ARCZonalShift" + }, + "java": { + "package": "software.amazon.awscdk.services.arczonalshift" + }, + "python": { + "module": "aws_cdk.aws_arczonalshift" + } + } + }, + "aws-cdk-lib.aws_athena": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Athena" + }, + "java": { + "package": "software.amazon.awscdk.services.athena" + }, + "python": { + "module": "aws_cdk.aws_athena" + } + } + }, + "aws-cdk-lib.aws_auditmanager": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AuditManager" + }, + "java": { + "package": "software.amazon.awscdk.services.auditmanager" + }, + "python": { + "module": "aws_cdk.aws_auditmanager" + } + } + }, + "aws-cdk-lib.aws_autoscaling": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AutoScaling" + }, + "java": { + "package": "software.amazon.awscdk.services.autoscaling" + }, + "python": { + "module": "aws_cdk.aws_autoscaling" + } + } + }, + "aws-cdk-lib.aws_autoscaling_common": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AutoScaling.Common" + }, + "java": { + "package": "software.amazon.awscdk.services.autoscaling.common" + }, + "python": { + "module": "aws_cdk.aws_autoscaling_common" + } + } + }, + "aws-cdk-lib.aws_autoscaling_hooktargets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AutoScaling.HookTargets" + }, + "java": { + "package": "software.amazon.awscdk.services.autoscaling.hooktargets" + }, + "python": { + "module": "aws_cdk.aws_autoscaling_hooktargets" + } + } + }, + "aws-cdk-lib.aws_autoscalingplans": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AutoScalingPlans" + }, + "java": { + "package": "software.amazon.awscdk.services.autoscalingplans" + }, + "python": { + "module": "aws_cdk.aws_autoscalingplans" + } + } + }, + "aws-cdk-lib.aws_b2bi": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.B2BI" + }, + "java": { + "package": "software.amazon.awscdk.services.b2bi" + }, + "python": { + "module": "aws_cdk.aws_b2bi" + } + } + }, + "aws-cdk-lib.aws_backup": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Backup" + }, + "java": { + "package": "software.amazon.awscdk.services.backup" + }, + "python": { + "module": "aws_cdk.aws_backup" + } + } + }, + "aws-cdk-lib.aws_backupgateway": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.BackupGateway" + }, + "java": { + "package": "software.amazon.awscdk.services.backupgateway" + }, + "python": { + "module": "aws_cdk.aws_backupgateway" + } + } + }, + "aws-cdk-lib.aws_batch": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Batch" + }, + "java": { + "package": "software.amazon.awscdk.services.batch" + }, + "python": { + "module": "aws_cdk.aws_batch" + } + } + }, + "aws-cdk-lib.aws_bcmdataexports": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.BCMDataExports" + }, + "java": { + "package": "software.amazon.awscdk.services.bcmdataexports" + }, + "python": { + "module": "aws_cdk.aws_bcmdataexports" + } + } + }, + "aws-cdk-lib.aws_bedrock": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Bedrock" + }, + "java": { + "package": "software.amazon.awscdk.services.bedrock" + }, + "python": { + "module": "aws_cdk.aws_bedrock" + } + } + }, + "aws-cdk-lib.aws_billingconductor": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.BillingConductor" + }, + "java": { + "package": "software.amazon.awscdk.services.billingconductor" + }, + "python": { + "module": "aws_cdk.aws_billingconductor" + } + } + }, + "aws-cdk-lib.aws_budgets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Budgets" + }, + "java": { + "package": "software.amazon.awscdk.services.budgets" + }, + "python": { + "module": "aws_cdk.aws_budgets" + } + } + }, + "aws-cdk-lib.aws_cassandra": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Cassandra" + }, + "java": { + "package": "software.amazon.awscdk.services.cassandra" + }, + "python": { + "module": "aws_cdk.aws_cassandra" + } + } + }, + "aws-cdk-lib.aws_ce": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CE" + }, + "java": { + "package": "software.amazon.awscdk.services.ce" + }, + "python": { + "module": "aws_cdk.aws_ce" + } + } + }, + "aws-cdk-lib.aws_certificatemanager": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CertificateManager" + }, + "java": { + "package": "software.amazon.awscdk.services.certificatemanager" + }, + "python": { + "module": "aws_cdk.aws_certificatemanager" + } + } + }, + "aws-cdk-lib.aws_chatbot": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Chatbot" + }, + "java": { + "package": "software.amazon.awscdk.services.chatbot" + }, + "python": { + "module": "aws_cdk.aws_chatbot" + } + } + }, + "aws-cdk-lib.aws_cleanrooms": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.CleanRooms" + }, + "java": { + "package": "software.amazon.awscdk.services.cleanrooms" + }, + "python": { + "module": "aws_cdk.aws_cleanrooms" + } + } + }, + "aws-cdk-lib.aws_cleanroomsml": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.CleanRoomsML" + }, + "java": { + "package": "software.amazon.awscdk.services.cleanroomsml" + }, + "python": { + "module": "aws_cdk.aws_cleanroomsml" + } + } + }, + "aws-cdk-lib.aws_cloud9": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Cloud9" + }, + "java": { + "package": "software.amazon.awscdk.services.cloud9" + }, + "python": { + "module": "aws_cdk.aws_cloud9" + } + } + }, + "aws-cdk-lib.aws_cloudformation": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudFormation" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudformation" + }, + "python": { + "module": "aws_cdk.aws_cloudformation" + } + } + }, + "aws-cdk-lib.aws_cloudfront": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudFront" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudfront" + }, + "python": { + "module": "aws_cdk.aws_cloudfront" + } + } + }, + "aws-cdk-lib.aws_cloudfront.experimental": {}, + "aws-cdk-lib.aws_cloudfront_origins": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudFront.Origins" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudfront.origins" + }, + "python": { + "module": "aws_cdk.aws_cloudfront_origins" + } + } + }, + "aws-cdk-lib.aws_cloudtrail": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudTrail" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudtrail" + }, + "python": { + "module": "aws_cdk.aws_cloudtrail" + } + } + }, + "aws-cdk-lib.aws_cloudwatch": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudWatch" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudwatch" + }, + "python": { + "module": "aws_cdk.aws_cloudwatch" + } + } + }, + "aws-cdk-lib.aws_cloudwatch_actions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CloudWatch.Actions" + }, + "java": { + "package": "software.amazon.awscdk.services.cloudwatch.actions" + }, + "python": { + "module": "aws_cdk.aws_cloudwatch_actions" + } + } + }, + "aws-cdk-lib.aws_codeartifact": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeArtifact" + }, + "java": { + "package": "software.amazon.awscdk.services.codeartifact" + }, + "python": { + "module": "aws_cdk.aws_codeartifact" + } + } + }, + "aws-cdk-lib.aws_codebuild": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeBuild" + }, + "java": { + "package": "software.amazon.awscdk.services.codebuild" + }, + "python": { + "module": "aws_cdk.aws_codebuild" + } + } + }, + "aws-cdk-lib.aws_codecommit": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeCommit" + }, + "java": { + "package": "software.amazon.awscdk.services.codecommit" + }, + "python": { + "module": "aws_cdk.aws_codecommit" + } + } + }, + "aws-cdk-lib.aws_codeconnections": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.CodeConnections" + }, + "java": { + "package": "software.amazon.awscdk.services.codeconnections" + }, + "python": { + "module": "aws_cdk.aws_codeconnections" + } + } + }, + "aws-cdk-lib.aws_codedeploy": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeDeploy" + }, + "java": { + "package": "software.amazon.awscdk.services.codedeploy" + }, + "python": { + "module": "aws_cdk.aws_codedeploy" + } + } + }, + "aws-cdk-lib.aws_codeguruprofiler": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeGuruProfiler" + }, + "java": { + "package": "software.amazon.awscdk.services.codeguruprofiler" + }, + "python": { + "module": "aws_cdk.aws_codeguruprofiler" + } + } + }, + "aws-cdk-lib.aws_codegurureviewer": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeGuruReviewer" + }, + "java": { + "package": "software.amazon.awscdk.services.codegurureviewer" + }, + "python": { + "module": "aws_cdk.aws_codegurureviewer" + } + } + }, + "aws-cdk-lib.aws_codepipeline": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodePipeline" + }, + "java": { + "package": "software.amazon.awscdk.services.codepipeline" + }, + "python": { + "module": "aws_cdk.aws_codepipeline" + } + } + }, + "aws-cdk-lib.aws_codepipeline_actions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodePipeline.Actions" + }, + "java": { + "package": "software.amazon.awscdk.services.codepipeline.actions" + }, + "python": { + "module": "aws_cdk.aws_codepipeline_actions" + } + } + }, + "aws-cdk-lib.aws_codestar": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Codestar" + }, + "java": { + "package": "software.amazon.awscdk.services.codestar" + }, + "python": { + "module": "aws_cdk.aws_codestar" + } + } + }, + "aws-cdk-lib.aws_codestarconnections": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeStarConnections" + }, + "java": { + "package": "software.amazon.awscdk.services.codestarconnections" + }, + "python": { + "module": "aws_cdk.aws_codestarconnections" + } + } + }, + "aws-cdk-lib.aws_codestarnotifications": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CodeStarNotifications" + }, + "java": { + "package": "software.amazon.awscdk.services.codestarnotifications" + }, + "python": { + "module": "aws_cdk.aws_codestarnotifications" + } + } + }, + "aws-cdk-lib.aws_cognito": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Cognito" + }, + "java": { + "package": "software.amazon.awscdk.services.cognito" + }, + "python": { + "module": "aws_cdk.aws_cognito" + } + } + }, + "aws-cdk-lib.aws_cognito_identitypool": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Cognito.Identitypool" + }, + "java": { + "package": "software.amazon.awscdk.services.cognito.identitypool" + }, + "python": { + "module": "aws_cdk.aws_cognito_identitypool" + } + } + }, + "aws-cdk-lib.aws_comprehend": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Comprehend" + }, + "java": { + "package": "software.amazon.awscdk.services.comprehend" + }, + "python": { + "module": "aws_cdk.aws_comprehend" + } + } + }, + "aws-cdk-lib.aws_config": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Config" + }, + "java": { + "package": "software.amazon.awscdk.services.config" + }, + "python": { + "module": "aws_cdk.aws_config" + } + } + }, + "aws-cdk-lib.aws_connect": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Connect" + }, + "java": { + "package": "software.amazon.awscdk.services.connect" + }, + "python": { + "module": "aws_cdk.aws_connect" + } + } + }, + "aws-cdk-lib.aws_connectcampaigns": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ConnectCampaigns" + }, + "java": { + "package": "software.amazon.awscdk.services.connectcampaigns" + }, + "python": { + "module": "aws_cdk.aws_connectcampaigns" + } + } + }, + "aws-cdk-lib.aws_connectcampaignsv2": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.ConnectCampaignsV2" + }, + "java": { + "package": "software.amazon.awscdk.services.connectcampaignsv2" + }, + "python": { + "module": "aws_cdk.aws_connectcampaignsv2" + } + } + }, + "aws-cdk-lib.aws_controltower": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ControlTower" + }, + "java": { + "package": "software.amazon.awscdk.services.controltower" + }, + "python": { + "module": "aws_cdk.aws_controltower" + } + } + }, + "aws-cdk-lib.aws_cur": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CUR" + }, + "java": { + "package": "software.amazon.awscdk.services.cur" + }, + "python": { + "module": "aws_cdk.aws_cur" + } + } + }, + "aws-cdk-lib.aws_customerprofiles": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.CustomerProfiles" + }, + "java": { + "package": "software.amazon.awscdk.services.customerprofiles" + }, + "python": { + "module": "aws_cdk.aws_customerprofiles" + } + } + }, + "aws-cdk-lib.aws_databrew": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DataBrew" + }, + "java": { + "package": "software.amazon.awscdk.services.databrew" + }, + "python": { + "module": "aws_cdk.aws_databrew" + } + } + }, + "aws-cdk-lib.aws_datapipeline": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DataPipeline" + }, + "java": { + "package": "software.amazon.awscdk.services.datapipeline" + }, + "python": { + "module": "aws_cdk.aws_datapipeline" + } + } + }, + "aws-cdk-lib.aws_datasync": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DataSync" + }, + "java": { + "package": "software.amazon.awscdk.services.datasync" + }, + "python": { + "module": "aws_cdk.aws_datasync" + } + } + }, + "aws-cdk-lib.aws_datazone": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.DataZone" + }, + "java": { + "package": "software.amazon.awscdk.services.datazone" + }, + "python": { + "module": "aws_cdk.aws_datazone" + } + } + }, + "aws-cdk-lib.aws_dax": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DAX" + }, + "java": { + "package": "software.amazon.awscdk.services.dax" + }, + "python": { + "module": "aws_cdk.aws_dax" + } + } + }, + "aws-cdk-lib.aws_deadline": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Deadline" + }, + "java": { + "package": "software.amazon.awscdk.services.deadline" + }, + "python": { + "module": "aws_cdk.aws_deadline" + } + } + }, + "aws-cdk-lib.aws_detective": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Detective" + }, + "java": { + "package": "software.amazon.awscdk.services.detective" + }, + "python": { + "module": "aws_cdk.aws_detective" + } + } + }, + "aws-cdk-lib.aws_devicefarm": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DeviceFarm" + }, + "java": { + "package": "software.amazon.awscdk.services.devicefarm" + }, + "python": { + "module": "aws_cdk.aws_devicefarm" + } + } + }, + "aws-cdk-lib.aws_devopsguru": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DevOpsGuru" + }, + "java": { + "package": "software.amazon.awscdk.services.devopsguru" + }, + "python": { + "module": "aws_cdk.aws_devopsguru" + } + } + }, + "aws-cdk-lib.aws_directoryservice": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DirectoryService" + }, + "java": { + "package": "software.amazon.awscdk.services.directoryservice" + }, + "python": { + "module": "aws_cdk.aws_directoryservice" + } + } + }, + "aws-cdk-lib.aws_dlm": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DLM" + }, + "java": { + "package": "software.amazon.awscdk.services.dlm" + }, + "python": { + "module": "aws_cdk.aws_dlm" + } + } + }, + "aws-cdk-lib.aws_dms": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DMS" + }, + "java": { + "package": "software.amazon.awscdk.services.dms" + }, + "python": { + "module": "aws_cdk.aws_dms" + } + } + }, + "aws-cdk-lib.aws_docdb": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DocDB" + }, + "java": { + "package": "software.amazon.awscdk.services.docdb" + }, + "python": { + "module": "aws_cdk.aws_docdb" + } + } + }, + "aws-cdk-lib.aws_docdbelastic": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DocDBElastic" + }, + "java": { + "package": "software.amazon.awscdk.services.docdbelastic" + }, + "python": { + "module": "aws_cdk.aws_docdbelastic" + } + } + }, + "aws-cdk-lib.aws_dsql": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.DSQL" + }, + "java": { + "package": "software.amazon.awscdk.services.dsql" + }, + "python": { + "module": "aws_cdk.aws_dsql" + } + } + }, + "aws-cdk-lib.aws_dynamodb": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DynamoDB" + }, + "java": { + "package": "software.amazon.awscdk.services.dynamodb" + }, + "python": { + "module": "aws_cdk.aws_dynamodb" + } + } + }, + "aws-cdk-lib.aws_ec2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EC2" + }, + "java": { + "package": "software.amazon.awscdk.services.ec2" + }, + "python": { + "module": "aws_cdk.aws_ec2" + } + } + }, + "aws-cdk-lib.aws_ecr": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ECR" + }, + "java": { + "package": "software.amazon.awscdk.services.ecr" + }, + "python": { + "module": "aws_cdk.aws_ecr" + } + } + }, + "aws-cdk-lib.aws_ecr_assets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Ecr.Assets" + }, + "java": { + "package": "software.amazon.awscdk.services.ecr.assets" + }, + "python": { + "module": "aws_cdk.aws_ecr_assets" + } + } + }, + "aws-cdk-lib.aws_ecs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ECS" + }, + "java": { + "package": "software.amazon.awscdk.services.ecs" + }, + "python": { + "module": "aws_cdk.aws_ecs" + } + } + }, + "aws-cdk-lib.aws_ecs_patterns": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ECS.Patterns" + }, + "java": { + "package": "software.amazon.awscdk.services.ecs.patterns" + }, + "python": { + "module": "aws_cdk.aws_ecs_patterns" + } + } + }, + "aws-cdk-lib.aws_efs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EFS" + }, + "java": { + "package": "software.amazon.awscdk.services.efs" + }, + "python": { + "module": "aws_cdk.aws_efs" + } + } + }, + "aws-cdk-lib.aws_eks": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EKS" + }, + "java": { + "package": "software.amazon.awscdk.services.eks" + }, + "python": { + "module": "aws_cdk.aws_eks" + } + } + }, + "aws-cdk-lib.aws_elasticache": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElastiCache" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticache" + }, + "python": { + "module": "aws_cdk.aws_elasticache" + } + } + }, + "aws-cdk-lib.aws_elasticbeanstalk": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElasticBeanstalk" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticbeanstalk" + }, + "python": { + "module": "aws_cdk.aws_elasticbeanstalk" + } + } + }, + "aws-cdk-lib.aws_elasticloadbalancing": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElasticLoadBalancing" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticloadbalancing" + }, + "python": { + "module": "aws_cdk.aws_elasticloadbalancing" + } + } + }, + "aws-cdk-lib.aws_elasticloadbalancingv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticloadbalancingv2" + }, + "python": { + "module": "aws_cdk.aws_elasticloadbalancingv2" + } + } + }, + "aws-cdk-lib.aws_elasticloadbalancingv2_actions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Actions" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticloadbalancingv2.actions" + }, + "python": { + "module": "aws_cdk.aws_elasticloadbalancingv2_actions" + } + } + }, + "aws-cdk-lib.aws_elasticloadbalancingv2_targets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Targets" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticloadbalancingv2.targets" + }, + "python": { + "module": "aws_cdk.aws_elasticloadbalancingv2_targets" + } + } + }, + "aws-cdk-lib.aws_elasticsearch": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Elasticsearch" + }, + "java": { + "package": "software.amazon.awscdk.services.elasticsearch" + }, + "python": { + "module": "aws_cdk.aws_elasticsearch" + } + } + }, + "aws-cdk-lib.aws_emr": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EMR" + }, + "java": { + "package": "software.amazon.awscdk.services.emr" + }, + "python": { + "module": "aws_cdk.aws_emr" + } + } + }, + "aws-cdk-lib.aws_emrcontainers": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EMRContainers" + }, + "java": { + "package": "software.amazon.awscdk.services.emrcontainers" + }, + "python": { + "module": "aws_cdk.aws_emrcontainers" + } + } + }, + "aws-cdk-lib.aws_emrserverless": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EMRServerless" + }, + "java": { + "package": "software.amazon.awscdk.services.emrserverless" + }, + "python": { + "module": "aws_cdk.aws_emrserverless" + } + } + }, + "aws-cdk-lib.aws_entityresolution": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.EntityResolution" + }, + "java": { + "package": "software.amazon.awscdk.services.entityresolution" + }, + "python": { + "module": "aws_cdk.aws_entityresolution" + } + } + }, + "aws-cdk-lib.aws_events": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Events" + }, + "java": { + "package": "software.amazon.awscdk.services.events" + }, + "python": { + "module": "aws_cdk.aws_events" + } + } + }, + "aws-cdk-lib.aws_events_targets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Events.Targets" + }, + "java": { + "package": "software.amazon.awscdk.services.events.targets" + }, + "python": { + "module": "aws_cdk.aws_events_targets" + } + } + }, + "aws-cdk-lib.aws_eventschemas": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.EventSchemas" + }, + "java": { + "package": "software.amazon.awscdk.services.eventschemas" + }, + "python": { + "module": "aws_cdk.aws_eventschemas" + } + } + }, + "aws-cdk-lib.aws_evidently": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Evidently" + }, + "java": { + "package": "software.amazon.awscdk.services.evidently" + }, + "python": { + "module": "aws_cdk.aws_evidently" + } + } + }, + "aws-cdk-lib.aws_finspace": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.FinSpace" + }, + "java": { + "package": "software.amazon.awscdk.services.finspace" + }, + "python": { + "module": "aws_cdk.aws_finspace" + } + } + }, + "aws-cdk-lib.aws_fis": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.FIS" + }, + "java": { + "package": "software.amazon.awscdk.services.fis" + }, + "python": { + "module": "aws_cdk.aws_fis" + } + } + }, + "aws-cdk-lib.aws_fms": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.FMS" + }, + "java": { + "package": "software.amazon.awscdk.services.fms" + }, + "python": { + "module": "aws_cdk.aws_fms" + } + } + }, + "aws-cdk-lib.aws_forecast": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Forecast" + }, + "java": { + "package": "software.amazon.awscdk.services.forecast" + }, + "python": { + "module": "aws_cdk.aws_forecast" + } + } + }, + "aws-cdk-lib.aws_frauddetector": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.FraudDetector" + }, + "java": { + "package": "software.amazon.awscdk.services.frauddetector" + }, + "python": { + "module": "aws_cdk.aws_frauddetector" + } + } + }, + "aws-cdk-lib.aws_fsx": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.FSx" + }, + "java": { + "package": "software.amazon.awscdk.services.fsx" + }, + "python": { + "module": "aws_cdk.aws_fsx" + } + } + }, + "aws-cdk-lib.aws_gamelift": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GameLift" + }, + "java": { + "package": "software.amazon.awscdk.services.gamelift" + }, + "python": { + "module": "aws_cdk.aws_gamelift" + } + } + }, + "aws-cdk-lib.aws_gameliftstreams": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.GameLiftStreams" + }, + "java": { + "package": "software.amazon.awscdk.services.gameliftstreams" + }, + "python": { + "module": "aws_cdk.aws_gameliftstreams" + } + } + }, + "aws-cdk-lib.aws_globalaccelerator": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GlobalAccelerator" + }, + "java": { + "package": "software.amazon.awscdk.services.globalaccelerator" + }, + "python": { + "module": "aws_cdk.aws_globalaccelerator" + } + } + }, + "aws-cdk-lib.aws_globalaccelerator_endpoints": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GlobalAccelerator.Endpoints" + }, + "java": { + "package": "software.amazon.awscdk.services.globalaccelerator.endpoints" + }, + "python": { + "module": "aws_cdk.aws_globalaccelerator_endpoints" + } + } + }, + "aws-cdk-lib.aws_glue": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Glue" + }, + "java": { + "package": "software.amazon.awscdk.services.glue" + }, + "python": { + "module": "aws_cdk.aws_glue" + } + } + }, + "aws-cdk-lib.aws_grafana": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Grafana" + }, + "java": { + "package": "software.amazon.awscdk.services.grafana" + }, + "python": { + "module": "aws_cdk.aws_grafana" + } + } + }, + "aws-cdk-lib.aws_greengrass": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Greengrass" + }, + "java": { + "package": "software.amazon.awscdk.services.greengrass" + }, + "python": { + "module": "aws_cdk.aws_greengrass" + } + } + }, + "aws-cdk-lib.aws_greengrassv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GreengrassV2" + }, + "java": { + "package": "software.amazon.awscdk.services.greengrassv2" + }, + "python": { + "module": "aws_cdk.aws_greengrassv2" + } + } + }, + "aws-cdk-lib.aws_groundstation": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GroundStation" + }, + "java": { + "package": "software.amazon.awscdk.services.groundstation" + }, + "python": { + "module": "aws_cdk.aws_groundstation" + } + } + }, + "aws-cdk-lib.aws_guardduty": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.GuardDuty" + }, + "java": { + "package": "software.amazon.awscdk.services.guardduty" + }, + "python": { + "module": "aws_cdk.aws_guardduty" + } + } + }, + "aws-cdk-lib.aws_healthimaging": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.HealthImaging" + }, + "java": { + "package": "software.amazon.awscdk.services.healthimaging" + }, + "python": { + "module": "aws_cdk.aws_healthimaging" + } + } + }, + "aws-cdk-lib.aws_healthlake": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.HealthLake" + }, + "java": { + "package": "software.amazon.awscdk.services.healthlake" + }, + "python": { + "module": "aws_cdk.aws_healthlake" + } + } + }, + "aws-cdk-lib.aws_iam": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IAM" + }, + "java": { + "package": "software.amazon.awscdk.services.iam" + }, + "python": { + "module": "aws_cdk.aws_iam" + } + } + }, + "aws-cdk-lib.aws_identitystore": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IdentityStore" + }, + "java": { + "package": "software.amazon.awscdk.services.identitystore" + }, + "python": { + "module": "aws_cdk.aws_identitystore" + } + } + }, + "aws-cdk-lib.aws_imagebuilder": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ImageBuilder" + }, + "java": { + "package": "software.amazon.awscdk.services.imagebuilder" + }, + "python": { + "module": "aws_cdk.aws_imagebuilder" + } + } + }, + "aws-cdk-lib.aws_inspector": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Inspector" + }, + "java": { + "package": "software.amazon.awscdk.services.inspector" + }, + "python": { + "module": "aws_cdk.aws_inspector" + } + } + }, + "aws-cdk-lib.aws_inspectorv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.InspectorV2" + }, + "java": { + "package": "software.amazon.awscdk.services.inspectorv2" + }, + "python": { + "module": "aws_cdk.aws_inspectorv2" + } + } + }, + "aws-cdk-lib.aws_internetmonitor": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.InternetMonitor" + }, + "java": { + "package": "software.amazon.awscdk.services.internetmonitor" + }, + "python": { + "module": "aws_cdk.aws_internetmonitor" + } + } + }, + "aws-cdk-lib.aws_invoicing": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Invoicing" + }, + "java": { + "package": "software.amazon.awscdk.services.invoicing" + }, + "python": { + "module": "aws_cdk.aws_invoicing" + } + } + }, + "aws-cdk-lib.aws_iot": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoT" + }, + "java": { + "package": "software.amazon.awscdk.services.iot" + }, + "python": { + "module": "aws_cdk.aws_iot" + } + } + }, + "aws-cdk-lib.aws_iotanalytics": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTAnalytics" + }, + "java": { + "package": "software.amazon.awscdk.services.iotanalytics" + }, + "python": { + "module": "aws_cdk.aws_iotanalytics" + } + } + }, + "aws-cdk-lib.aws_iotcoredeviceadvisor": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTCoreDeviceAdvisor" + }, + "java": { + "package": "software.amazon.awscdk.services.iotcoredeviceadvisor" + }, + "python": { + "module": "aws_cdk.aws_iotcoredeviceadvisor" + } + } + }, + "aws-cdk-lib.aws_iotevents": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTEvents" + }, + "java": { + "package": "software.amazon.awscdk.services.iotevents" + }, + "python": { + "module": "aws_cdk.aws_iotevents" + } + } + }, + "aws-cdk-lib.aws_iotfleethub": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTFleetHub" + }, + "java": { + "package": "software.amazon.awscdk.services.iotfleethub" + }, + "python": { + "module": "aws_cdk.aws_iotfleethub" + } + } + }, + "aws-cdk-lib.aws_iotfleetwise": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTFleetWise" + }, + "java": { + "package": "software.amazon.awscdk.services.iotfleetwise" + }, + "python": { + "module": "aws_cdk.aws_iotfleetwise" + } + } + }, + "aws-cdk-lib.aws_iotsitewise": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTSiteWise" + }, + "java": { + "package": "software.amazon.awscdk.services.iotsitewise" + }, + "python": { + "module": "aws_cdk.aws_iotsitewise" + } + } + }, + "aws-cdk-lib.aws_iotthingsgraph": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTThingsGraph" + }, + "java": { + "package": "software.amazon.awscdk.services.iotthingsgraph" + }, + "python": { + "module": "aws_cdk.aws_iotthingsgraph" + } + } + }, + "aws-cdk-lib.aws_iottwinmaker": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTTwinMaker" + }, + "java": { + "package": "software.amazon.awscdk.services.iottwinmaker" + }, + "python": { + "module": "aws_cdk.aws_iottwinmaker" + } + } + }, + "aws-cdk-lib.aws_iotwireless": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IoTWireless" + }, + "java": { + "package": "software.amazon.awscdk.services.iotwireless" + }, + "python": { + "module": "aws_cdk.aws_iotwireless" + } + } + }, + "aws-cdk-lib.aws_ivs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Ivs" + }, + "java": { + "package": "software.amazon.awscdk.services.ivs" + }, + "python": { + "module": "aws_cdk.aws_ivs" + } + } + }, + "aws-cdk-lib.aws_ivschat": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.IVSChat" + }, + "java": { + "package": "software.amazon.awscdk.services.ivschat" + }, + "python": { + "module": "aws_cdk.aws_ivschat" + } + } + }, + "aws-cdk-lib.aws_kafkaconnect": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KafkaConnect" + }, + "java": { + "package": "software.amazon.awscdk.services.kafkaconnect" + }, + "python": { + "module": "aws_cdk.aws_kafkaconnect" + } + } + }, + "aws-cdk-lib.aws_kendra": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Kendra" + }, + "java": { + "package": "software.amazon.awscdk.services.kendra" + }, + "python": { + "module": "aws_cdk.aws_kendra" + } + } + }, + "aws-cdk-lib.aws_kendraranking": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KendraRanking" + }, + "java": { + "package": "software.amazon.awscdk.services.kendraranking" + }, + "python": { + "module": "aws_cdk.aws_kendraranking" + } + } + }, + "aws-cdk-lib.aws_kinesis": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Kinesis" + }, + "java": { + "package": "software.amazon.awscdk.services.kinesis" + }, + "python": { + "module": "aws_cdk.aws_kinesis" + } + } + }, + "aws-cdk-lib.aws_kinesisanalytics": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KinesisAnalytics" + }, + "java": { + "package": "software.amazon.awscdk.services.kinesisanalytics" + }, + "python": { + "module": "aws_cdk.aws_kinesisanalytics" + } + } + }, + "aws-cdk-lib.aws_kinesisanalyticsv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KinesisAnalyticsV2" + }, + "java": { + "package": "software.amazon.awscdk.services.kinesisanalyticsv2" + }, + "python": { + "module": "aws_cdk.aws_kinesisanalyticsv2" + } + } + }, + "aws-cdk-lib.aws_kinesisfirehose": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KinesisFirehose" + }, + "java": { + "package": "software.amazon.awscdk.services.kinesisfirehose" + }, + "python": { + "module": "aws_cdk.aws_kinesisfirehose" + } + } + }, + "aws-cdk-lib.aws_kinesisvideo": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KinesisVideo" + }, + "java": { + "package": "software.amazon.awscdk.services.kinesisvideo" + }, + "python": { + "module": "aws_cdk.aws_kinesisvideo" + } + } + }, + "aws-cdk-lib.aws_kms": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.KMS" + }, + "java": { + "package": "software.amazon.awscdk.services.kms" + }, + "python": { + "module": "aws_cdk.aws_kms" + } + } + }, + "aws-cdk-lib.aws_lakeformation": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.LakeFormation" + }, + "java": { + "package": "software.amazon.awscdk.services.lakeformation" + }, + "python": { + "module": "aws_cdk.aws_lakeformation" + } + } + }, + "aws-cdk-lib.aws_lambda": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lambda" + }, + "java": { + "package": "software.amazon.awscdk.services.lambda" + }, + "python": { + "module": "aws_cdk.aws_lambda" + } + } + }, + "aws-cdk-lib.aws_lambda_destinations": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lambda.Destinations" + }, + "java": { + "package": "software.amazon.awscdk.services.lambda.destinations" + }, + "python": { + "module": "aws_cdk.aws_lambda_destinations" + } + } + }, + "aws-cdk-lib.aws_lambda_event_sources": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lambda.EventSources" + }, + "java": { + "package": "software.amazon.awscdk.services.lambda.eventsources" + }, + "python": { + "module": "aws_cdk.aws_lambda_event_sources" + } + } + }, + "aws-cdk-lib.aws_lambda_nodejs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lambda.Nodejs" + }, + "java": { + "package": "software.amazon.awscdk.services.lambda.nodejs" + }, + "python": { + "module": "aws_cdk.aws_lambda_nodejs" + } + } + }, + "aws-cdk-lib.aws_launchwizard": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.LaunchWizard" + }, + "java": { + "package": "software.amazon.awscdk.services.launchwizard" + }, + "python": { + "module": "aws_cdk.aws_launchwizard" + } + } + }, + "aws-cdk-lib.aws_lex": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lex" + }, + "java": { + "package": "software.amazon.awscdk.services.lex" + }, + "python": { + "module": "aws_cdk.aws_lex" + } + } + }, + "aws-cdk-lib.aws_licensemanager": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.LicenseManager" + }, + "java": { + "package": "software.amazon.awscdk.services.licensemanager" + }, + "python": { + "module": "aws_cdk.aws_licensemanager" + } + } + }, + "aws-cdk-lib.aws_lightsail": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Lightsail" + }, + "java": { + "package": "software.amazon.awscdk.services.lightsail" + }, + "python": { + "module": "aws_cdk.aws_lightsail" + } + } + }, + "aws-cdk-lib.aws_location": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Location" + }, + "java": { + "package": "software.amazon.awscdk.services.location" + }, + "python": { + "module": "aws_cdk.aws_location" + } + } + }, + "aws-cdk-lib.aws_logs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Logs" + }, + "java": { + "package": "software.amazon.awscdk.services.logs" + }, + "python": { + "module": "aws_cdk.aws_logs" + } + } + }, + "aws-cdk-lib.aws_logs_destinations": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Logs.Destinations" + }, + "java": { + "package": "software.amazon.awscdk.services.logs.destinations" + }, + "python": { + "module": "aws_cdk.aws_logs_destinations" + } + } + }, + "aws-cdk-lib.aws_lookoutequipment": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.LookoutEquipment" + }, + "java": { + "package": "software.amazon.awscdk.services.lookoutequipment" + }, + "python": { + "module": "aws_cdk.aws_lookoutequipment" + } + } + }, + "aws-cdk-lib.aws_lookoutmetrics": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.LookoutMetrics" + }, + "java": { + "package": "software.amazon.awscdk.services.lookoutmetrics" + }, + "python": { + "module": "aws_cdk.aws_lookoutmetrics" + } + } + }, + "aws-cdk-lib.aws_lookoutvision": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.LookoutVision" + }, + "java": { + "package": "software.amazon.awscdk.services.lookoutvision" + }, + "python": { + "module": "aws_cdk.aws_lookoutvision" + } + } + }, + "aws-cdk-lib.aws_m2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.M2" + }, + "java": { + "package": "software.amazon.awscdk.services.m2" + }, + "python": { + "module": "aws_cdk.aws_m2" + } + } + }, + "aws-cdk-lib.aws_macie": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Macie" + }, + "java": { + "package": "software.amazon.awscdk.services.macie" + }, + "python": { + "module": "aws_cdk.aws_macie" + } + } + }, + "aws-cdk-lib.aws_managedblockchain": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ManagedBlockchain" + }, + "java": { + "package": "software.amazon.awscdk.services.managedblockchain" + }, + "python": { + "module": "aws_cdk.aws_managedblockchain" + } + } + }, + "aws-cdk-lib.aws_mediaconnect": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaConnect" + }, + "java": { + "package": "software.amazon.awscdk.services.mediaconnect" + }, + "python": { + "module": "aws_cdk.aws_mediaconnect" + } + } + }, + "aws-cdk-lib.aws_mediaconvert": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaConvert" + }, + "java": { + "package": "software.amazon.awscdk.services.mediaconvert" + }, + "python": { + "module": "aws_cdk.aws_mediaconvert" + } + } + }, + "aws-cdk-lib.aws_medialive": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaLive" + }, + "java": { + "package": "software.amazon.awscdk.services.medialive" + }, + "python": { + "module": "aws_cdk.aws_medialive" + } + } + }, + "aws-cdk-lib.aws_mediapackage": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaPackage" + }, + "java": { + "package": "software.amazon.awscdk.services.mediapackage" + }, + "python": { + "module": "aws_cdk.aws_mediapackage" + } + } + }, + "aws-cdk-lib.aws_mediapackagev2": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.MediaPackageV2" + }, + "java": { + "package": "software.amazon.awscdk.services.mediapackagev2" + }, + "python": { + "module": "aws_cdk.aws_mediapackagev2" + } + } + }, + "aws-cdk-lib.aws_mediastore": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaStore" + }, + "java": { + "package": "software.amazon.awscdk.services.mediastore" + }, + "python": { + "module": "aws_cdk.aws_mediastore" + } + } + }, + "aws-cdk-lib.aws_mediatailor": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaTailor" + }, + "java": { + "package": "software.amazon.awscdk.services.mediatailor" + }, + "python": { + "module": "aws_cdk.aws_mediatailor" + } + } + }, + "aws-cdk-lib.aws_memorydb": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MemoryDB" + }, + "java": { + "package": "software.amazon.awscdk.services.memorydb" + }, + "python": { + "module": "aws_cdk.aws_memorydb" + } + } + }, + "aws-cdk-lib.aws_msk": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MSK" + }, + "java": { + "package": "software.amazon.awscdk.services.msk" + }, + "python": { + "module": "aws_cdk.aws_msk" + } + } + }, + "aws-cdk-lib.aws_mwaa": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MWAA" + }, + "java": { + "package": "software.amazon.awscdk.services.mwaa" + }, + "python": { + "module": "aws_cdk.aws_mwaa" + } + } + }, + "aws-cdk-lib.aws_neptune": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Neptune" + }, + "java": { + "package": "software.amazon.awscdk.services.neptune" + }, + "python": { + "module": "aws_cdk.aws_neptune" + } + } + }, + "aws-cdk-lib.aws_neptunegraph": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.NeptuneGraph" + }, + "java": { + "package": "software.amazon.awscdk.services.neptunegraph" + }, + "python": { + "module": "aws_cdk.aws_neptunegraph" + } + } + }, + "aws-cdk-lib.aws_networkfirewall": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.NetworkFirewall" + }, + "java": { + "package": "software.amazon.awscdk.services.networkfirewall" + }, + "python": { + "module": "aws_cdk.aws_networkfirewall" + } + } + }, + "aws-cdk-lib.aws_networkmanager": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.NetworkManager" + }, + "java": { + "package": "software.amazon.awscdk.services.networkmanager" + }, + "python": { + "module": "aws_cdk.aws_networkmanager" + } + } + }, + "aws-cdk-lib.aws_nimblestudio": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.NimbleStudio" + }, + "java": { + "package": "software.amazon.awscdk.services.nimblestudio" + }, + "python": { + "module": "aws_cdk.aws_nimblestudio" + } + } + }, + "aws-cdk-lib.aws_notifications": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Notifications" + }, + "java": { + "package": "software.amazon.awscdk.services.notifications" + }, + "python": { + "module": "aws_cdk.aws_notifications" + } + } + }, + "aws-cdk-lib.aws_notificationscontacts": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.NotificationsContacts" + }, + "java": { + "package": "software.amazon.awscdk.services.notificationscontacts" + }, + "python": { + "module": "aws_cdk.aws_notificationscontacts" + } + } + }, + "aws-cdk-lib.aws_oam": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Oam" + }, + "java": { + "package": "software.amazon.awscdk.services.oam" + }, + "python": { + "module": "aws_cdk.aws_oam" + } + } + }, + "aws-cdk-lib.aws_omics": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Omics" + }, + "java": { + "package": "software.amazon.awscdk.services.omics" + }, + "python": { + "module": "aws_cdk.aws_omics" + } + } + }, + "aws-cdk-lib.aws_opensearchserverless": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.OpenSearchServerless" + }, + "java": { + "package": "software.amazon.awscdk.services.opensearchserverless" + }, + "python": { + "module": "aws_cdk.aws_opensearchserverless" + } + } + }, + "aws-cdk-lib.aws_opensearchservice": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.OpenSearchService" + }, + "java": { + "package": "software.amazon.awscdk.services.opensearchservice" + }, + "python": { + "module": "aws_cdk.aws_opensearchservice" + } + } + }, + "aws-cdk-lib.aws_opsworks": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.OpsWorks" + }, + "java": { + "package": "software.amazon.awscdk.services.opsworks" + }, + "python": { + "module": "aws_cdk.aws_opsworks" + } + } + }, + "aws-cdk-lib.aws_opsworkscm": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.OpsWorksCM" + }, + "java": { + "package": "software.amazon.awscdk.services.opsworkscm" + }, + "python": { + "module": "aws_cdk.aws_opsworkscm" + } + } + }, + "aws-cdk-lib.aws_organizations": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Organizations" + }, + "java": { + "package": "software.amazon.awscdk.services.organizations" + }, + "python": { + "module": "aws_cdk.aws_organizations" + } + } + }, + "aws-cdk-lib.aws_osis": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.OSIS" + }, + "java": { + "package": "software.amazon.awscdk.services.osis" + }, + "python": { + "module": "aws_cdk.aws_osis" + } + } + }, + "aws-cdk-lib.aws_panorama": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Panorama" + }, + "java": { + "package": "software.amazon.awscdk.services.panorama" + }, + "python": { + "module": "aws_cdk.aws_panorama" + } + } + }, + "aws-cdk-lib.aws_paymentcryptography": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.PaymentCryptography" + }, + "java": { + "package": "software.amazon.awscdk.services.paymentcryptography" + }, + "python": { + "module": "aws_cdk.aws_paymentcryptography" + } + } + }, + "aws-cdk-lib.aws_pcaconnectorad": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.PCAConnectorAD" + }, + "java": { + "package": "software.amazon.awscdk.services.pcaconnectorad" + }, + "python": { + "module": "aws_cdk.aws_pcaconnectorad" + } + } + }, + "aws-cdk-lib.aws_pcaconnectorscep": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.PCAConnectorSCEP" + }, + "java": { + "package": "software.amazon.awscdk.services.pcaconnectorscep" + }, + "python": { + "module": "aws_cdk.aws_pcaconnectorscep" + } + } + }, + "aws-cdk-lib.aws_pcs": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.PCS" + }, + "java": { + "package": "software.amazon.awscdk.services.pcs" + }, + "python": { + "module": "aws_cdk.aws_pcs" + } + } + }, + "aws-cdk-lib.aws_personalize": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Personalize" + }, + "java": { + "package": "software.amazon.awscdk.services.personalize" + }, + "python": { + "module": "aws_cdk.aws_personalize" + } + } + }, + "aws-cdk-lib.aws_pinpoint": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Pinpoint" + }, + "java": { + "package": "software.amazon.awscdk.services.pinpoint" + }, + "python": { + "module": "aws_cdk.aws_pinpoint" + } + } + }, + "aws-cdk-lib.aws_pinpointemail": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.PinpointEmail" + }, + "java": { + "package": "software.amazon.awscdk.services.pinpointemail" + }, + "python": { + "module": "aws_cdk.aws_pinpointemail" + } + } + }, + "aws-cdk-lib.aws_pipes": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Pipes" + }, + "java": { + "package": "software.amazon.awscdk.services.pipes" + }, + "python": { + "module": "aws_cdk.aws_pipes" + } + } + }, + "aws-cdk-lib.aws_proton": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Proton" + }, + "java": { + "package": "software.amazon.awscdk.services.proton" + }, + "python": { + "module": "aws_cdk.aws_proton" + } + } + }, + "aws-cdk-lib.aws_qbusiness": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.QBusiness" + }, + "java": { + "package": "software.amazon.awscdk.services.qbusiness" + }, + "python": { + "module": "aws_cdk.aws_qbusiness" + } + } + }, + "aws-cdk-lib.aws_qldb": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.QLDB" + }, + "java": { + "package": "software.amazon.awscdk.services.qldb" + }, + "python": { + "module": "aws_cdk.aws_qldb" + } + } + }, + "aws-cdk-lib.aws_quicksight": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.QuickSight" + }, + "java": { + "package": "software.amazon.awscdk.services.quicksight" + }, + "python": { + "module": "aws_cdk.aws_quicksight" + } + } + }, + "aws-cdk-lib.aws_ram": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RAM" + }, + "java": { + "package": "software.amazon.awscdk.services.ram" + }, + "python": { + "module": "aws_cdk.aws_ram" + } + } + }, + "aws-cdk-lib.aws_rbin": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Rbin" + }, + "java": { + "package": "software.amazon.awscdk.services.rbin" + }, + "python": { + "module": "aws_cdk.aws_rbin" + } + } + }, + "aws-cdk-lib.aws_rds": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RDS" + }, + "java": { + "package": "software.amazon.awscdk.services.rds" + }, + "python": { + "module": "aws_cdk.aws_rds" + } + } + }, + "aws-cdk-lib.aws_redshift": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Redshift" + }, + "java": { + "package": "software.amazon.awscdk.services.redshift" + }, + "python": { + "module": "aws_cdk.aws_redshift" + } + } + }, + "aws-cdk-lib.aws_redshiftserverless": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RedshiftServerless" + }, + "java": { + "package": "software.amazon.awscdk.services.redshiftserverless" + }, + "python": { + "module": "aws_cdk.aws_redshiftserverless" + } + } + }, + "aws-cdk-lib.aws_refactorspaces": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RefactorSpaces" + }, + "java": { + "package": "software.amazon.awscdk.services.refactorspaces" + }, + "python": { + "module": "aws_cdk.aws_refactorspaces" + } + } + }, + "aws-cdk-lib.aws_rekognition": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Rekognition" + }, + "java": { + "package": "software.amazon.awscdk.services.rekognition" + }, + "python": { + "module": "aws_cdk.aws_rekognition" + } + } + }, + "aws-cdk-lib.aws_resiliencehub": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ResilienceHub" + }, + "java": { + "package": "software.amazon.awscdk.services.resiliencehub" + }, + "python": { + "module": "aws_cdk.aws_resiliencehub" + } + } + }, + "aws-cdk-lib.aws_resourceexplorer2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ResourceExplorer2" + }, + "java": { + "package": "software.amazon.awscdk.services.resourceexplorer2" + }, + "python": { + "module": "aws_cdk.aws_resourceexplorer2" + } + } + }, + "aws-cdk-lib.aws_resourcegroups": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ResourceGroups" + }, + "java": { + "package": "software.amazon.awscdk.services.resourcegroups" + }, + "python": { + "module": "aws_cdk.aws_resourcegroups" + } + } + }, + "aws-cdk-lib.aws_robomaker": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RoboMaker" + }, + "java": { + "package": "software.amazon.awscdk.services.robomaker" + }, + "python": { + "module": "aws_cdk.aws_robomaker" + } + } + }, + "aws-cdk-lib.aws_rolesanywhere": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RolesAnywhere" + }, + "java": { + "package": "software.amazon.awscdk.services.rolesanywhere" + }, + "python": { + "module": "aws_cdk.aws_rolesanywhere" + } + } + }, + "aws-cdk-lib.aws_route53": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53" + }, + "java": { + "package": "software.amazon.awscdk.services.route53" + }, + "python": { + "module": "aws_cdk.aws_route53" + } + } + }, + "aws-cdk-lib.aws_route53_patterns": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53.Patterns" + }, + "java": { + "package": "software.amazon.awscdk.services.route53.patterns" + }, + "python": { + "module": "aws_cdk.aws_route53_patterns" + } + } + }, + "aws-cdk-lib.aws_route53_targets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53.Targets" + }, + "java": { + "package": "software.amazon.awscdk.services.route53.targets" + }, + "python": { + "module": "aws_cdk.aws_route53_targets" + } + } + }, + "aws-cdk-lib.aws_route53profiles": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Route53Profiles" + }, + "java": { + "package": "software.amazon.awscdk.services.route53profiles" + }, + "python": { + "module": "aws_cdk.aws_route53profiles" + } + } + }, + "aws-cdk-lib.aws_route53recoverycontrol": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53RecoveryControl" + }, + "java": { + "package": "software.amazon.awscdk.services.route53recoverycontrol" + }, + "python": { + "module": "aws_cdk.aws_route53recoverycontrol" + } + } + }, + "aws-cdk-lib.aws_route53recoveryreadiness": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53RecoveryReadiness" + }, + "java": { + "package": "software.amazon.awscdk.services.route53recoveryreadiness" + }, + "python": { + "module": "aws_cdk.aws_route53recoveryreadiness" + } + } + }, + "aws-cdk-lib.aws_route53resolver": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Route53Resolver" + }, + "java": { + "package": "software.amazon.awscdk.services.route53resolver" + }, + "python": { + "module": "aws_cdk.aws_route53resolver" + } + } + }, + "aws-cdk-lib.aws_rum": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.RUM" + }, + "java": { + "package": "software.amazon.awscdk.services.rum" + }, + "python": { + "module": "aws_cdk.aws_rum" + } + } + }, + "aws-cdk-lib.aws_s3": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3" + }, + "java": { + "package": "software.amazon.awscdk.services.s3" + }, + "python": { + "module": "aws_cdk.aws_s3" + } + } + }, + "aws-cdk-lib.aws_s3_assets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3.Assets" + }, + "java": { + "package": "software.amazon.awscdk.services.s3.assets" + }, + "python": { + "module": "aws_cdk.aws_s3_assets" + } + } + }, + "aws-cdk-lib.aws_s3_deployment": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3.Deployment" + }, + "java": { + "package": "software.amazon.awscdk.services.s3.deployment" + }, + "python": { + "module": "aws_cdk.aws_s3_deployment" + } + } + }, + "aws-cdk-lib.aws_s3_notifications": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3.Notifications" + }, + "java": { + "package": "software.amazon.awscdk.services.s3.notifications" + }, + "python": { + "module": "aws_cdk.aws_s3_notifications" + } + } + }, + "aws-cdk-lib.aws_s3express": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.S3Express" + }, + "java": { + "package": "software.amazon.awscdk.services.s3express" + }, + "python": { + "module": "aws_cdk.aws_s3express" + } + } + }, + "aws-cdk-lib.aws_s3objectlambda": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3ObjectLambda" + }, + "java": { + "package": "software.amazon.awscdk.services.s3objectlambda" + }, + "python": { + "module": "aws_cdk.aws_s3objectlambda" + } + } + }, + "aws-cdk-lib.aws_s3outposts": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.S3Outposts" + }, + "java": { + "package": "software.amazon.awscdk.services.s3outposts" + }, + "python": { + "module": "aws_cdk.aws_s3outposts" + } + } + }, + "aws-cdk-lib.aws_s3tables": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.S3Tables" + }, + "java": { + "package": "software.amazon.awscdk.services.s3tables" + }, + "python": { + "module": "aws_cdk.aws_s3tables" + } + } + }, + "aws-cdk-lib.aws_sagemaker": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Sagemaker" + }, + "java": { + "package": "software.amazon.awscdk.services.sagemaker" + }, + "python": { + "module": "aws_cdk.aws_sagemaker" + } + } + }, + "aws-cdk-lib.aws_sam": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SAM" + }, + "java": { + "package": "software.amazon.awscdk.services.sam" + }, + "python": { + "module": "aws_cdk.aws_sam" + } + } + }, + "aws-cdk-lib.aws_scheduler": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Scheduler" + }, + "java": { + "package": "software.amazon.awscdk.services.scheduler" + }, + "python": { + "module": "aws_cdk.aws_scheduler" + } + } + }, + "aws-cdk-lib.aws_scheduler_targets": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Scheduler.Targets" + }, + "java": { + "package": "software.amazon.awscdk.services.scheduler.targets" + }, + "python": { + "module": "aws_cdk.aws_scheduler_targets" + } + } + }, + "aws-cdk-lib.aws_sdb": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SDB" + }, + "java": { + "package": "software.amazon.awscdk.services.sdb" + }, + "python": { + "module": "aws_cdk.aws_sdb" + } + } + }, + "aws-cdk-lib.aws_secretsmanager": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SecretsManager" + }, + "java": { + "package": "software.amazon.awscdk.services.secretsmanager" + }, + "python": { + "module": "aws_cdk.aws_secretsmanager" + } + } + }, + "aws-cdk-lib.aws_securityhub": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SecurityHub" + }, + "java": { + "package": "software.amazon.awscdk.services.securityhub" + }, + "python": { + "module": "aws_cdk.aws_securityhub" + } + } + }, + "aws-cdk-lib.aws_securitylake": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.SecurityLake" + }, + "java": { + "package": "software.amazon.awscdk.services.securitylake" + }, + "python": { + "module": "aws_cdk.aws_securitylake" + } + } + }, + "aws-cdk-lib.aws_servicecatalog": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Servicecatalog" + }, + "java": { + "package": "software.amazon.awscdk.services.servicecatalog" + }, + "python": { + "module": "aws_cdk.aws_servicecatalog" + } + } + }, + "aws-cdk-lib.aws_servicecatalogappregistry": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Servicecatalogappregistry" + }, + "java": { + "package": "software.amazon.awscdk.services.servicecatalogappregistry" + }, + "python": { + "module": "aws_cdk.aws_servicecatalogappregistry" + } + } + }, + "aws-cdk-lib.aws_servicediscovery": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.ServiceDiscovery" + }, + "java": { + "package": "software.amazon.awscdk.services.servicediscovery" + }, + "python": { + "module": "aws_cdk.aws_servicediscovery" + } + } + }, + "aws-cdk-lib.aws_ses": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SES" + }, + "java": { + "package": "software.amazon.awscdk.services.ses" + }, + "python": { + "module": "aws_cdk.aws_ses" + } + } + }, + "aws-cdk-lib.aws_ses_actions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SES.Actions" + }, + "java": { + "package": "software.amazon.awscdk.services.ses.actions" + }, + "python": { + "module": "aws_cdk.aws_ses_actions" + } + } + }, + "aws-cdk-lib.aws_shield": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.Shield" + }, + "java": { + "package": "software.amazon.awscdk.services.shield" + }, + "python": { + "module": "aws_cdk.aws_shield" + } + } + }, + "aws-cdk-lib.aws_signer": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Signer" + }, + "java": { + "package": "software.amazon.awscdk.services.signer" + }, + "python": { + "module": "aws_cdk.aws_signer" + } + } + }, + "aws-cdk-lib.aws_simspaceweaver": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SimSpaceWeaver" + }, + "java": { + "package": "software.amazon.awscdk.services.simspaceweaver" + }, + "python": { + "module": "aws_cdk.aws_simspaceweaver" + } + } + }, + "aws-cdk-lib.aws_sns": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SNS" + }, + "java": { + "package": "software.amazon.awscdk.services.sns" + }, + "python": { + "module": "aws_cdk.aws_sns" + } + } + }, + "aws-cdk-lib.aws_sns_subscriptions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SNS.Subscriptions" + }, + "java": { + "package": "software.amazon.awscdk.services.sns.subscriptions" + }, + "python": { + "module": "aws_cdk.aws_sns_subscriptions" + } + } + }, + "aws-cdk-lib.aws_sqs": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SQS" + }, + "java": { + "package": "software.amazon.awscdk.services.sqs" + }, + "python": { + "module": "aws_cdk.aws_sqs" + } + } + }, + "aws-cdk-lib.aws_ssm": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SSM" + }, + "java": { + "package": "software.amazon.awscdk.services.ssm" + }, + "python": { + "module": "aws_cdk.aws_ssm" + } + } + }, + "aws-cdk-lib.aws_ssmcontacts": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SSMContacts" + }, + "java": { + "package": "software.amazon.awscdk.services.ssmcontacts" + }, + "python": { + "module": "aws_cdk.aws_ssmcontacts" + } + } + }, + "aws-cdk-lib.aws_ssmincidents": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SSMIncidents" + }, + "java": { + "package": "software.amazon.awscdk.services.ssmincidents" + }, + "python": { + "module": "aws_cdk.aws_ssmincidents" + } + } + }, + "aws-cdk-lib.aws_ssmquicksetup": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.SSMQuickSetup" + }, + "java": { + "package": "software.amazon.awscdk.services.ssmquicksetup" + }, + "python": { + "module": "aws_cdk.aws_ssmquicksetup" + } + } + }, + "aws-cdk-lib.aws_sso": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SSO" + }, + "java": { + "package": "software.amazon.awscdk.services.sso" + }, + "python": { + "module": "aws_cdk.aws_sso" + } + } + }, + "aws-cdk-lib.aws_stepfunctions": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.StepFunctions" + }, + "java": { + "package": "software.amazon.awscdk.services.stepfunctions" + }, + "python": { + "module": "aws_cdk.aws_stepfunctions" + } + } + }, + "aws-cdk-lib.aws_stepfunctions_tasks": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.StepFunctions.Tasks" + }, + "java": { + "package": "software.amazon.awscdk.services.stepfunctions.tasks" + }, + "python": { + "module": "aws_cdk.aws_stepfunctions_tasks" + } + } + }, + "aws-cdk-lib.aws_supportapp": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SupportApp" + }, + "java": { + "package": "software.amazon.awscdk.services.supportapp" + }, + "python": { + "module": "aws_cdk.aws_supportapp" + } + } + }, + "aws-cdk-lib.aws_synthetics": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Synthetics" + }, + "java": { + "package": "software.amazon.awscdk.services.synthetics" + }, + "python": { + "module": "aws_cdk.aws_synthetics" + } + } + }, + "aws-cdk-lib.aws_systemsmanagersap": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.SystemsManagerSAP" + }, + "java": { + "package": "software.amazon.awscdk.services.systemsmanagersap" + }, + "python": { + "module": "aws_cdk.aws_systemsmanagersap" + } + } + }, + "aws-cdk-lib.aws_timestream": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Timestream" + }, + "java": { + "package": "software.amazon.awscdk.services.timestream" + }, + "python": { + "module": "aws_cdk.aws_timestream" + } + } + }, + "aws-cdk-lib.aws_transfer": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Transfer" + }, + "java": { + "package": "software.amazon.awscdk.services.transfer" + }, + "python": { + "module": "aws_cdk.aws_transfer" + } + } + }, + "aws-cdk-lib.aws_verifiedpermissions": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.VerifiedPermissions" + }, + "java": { + "package": "software.amazon.awscdk.services.verifiedpermissions" + }, + "python": { + "module": "aws_cdk.aws_verifiedpermissions" + } + } + }, + "aws-cdk-lib.aws_voiceid": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.VoiceID" + }, + "java": { + "package": "software.amazon.awscdk.services.voiceid" + }, + "python": { + "module": "aws_cdk.aws_voiceid" + } + } + }, + "aws-cdk-lib.aws_vpclattice": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.VpcLattice" + }, + "java": { + "package": "software.amazon.awscdk.services.vpclattice" + }, + "python": { + "module": "aws_cdk.aws_vpclattice" + } + } + }, + "aws-cdk-lib.aws_waf": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.WAF" + }, + "java": { + "package": "software.amazon.awscdk.services.waf" + }, + "python": { + "module": "aws_cdk.aws_waf" + } + } + }, + "aws-cdk-lib.aws_wafregional": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.WAFRegional" + }, + "java": { + "package": "software.amazon.awscdk.services.waf.regional" + }, + "python": { + "module": "aws_cdk.aws_wafregional" + } + } + }, + "aws-cdk-lib.aws_wafv2": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.WAFv2" + }, + "java": { + "package": "software.amazon.awscdk.services.wafv2" + }, + "python": { + "module": "aws_cdk.aws_wafv2" + } + } + }, + "aws-cdk-lib.aws_wisdom": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Wisdom" + }, + "java": { + "package": "software.amazon.awscdk.services.wisdom" + }, + "python": { + "module": "aws_cdk.aws_wisdom" + } + } + }, + "aws-cdk-lib.aws_workspaces": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.WorkSpaces" + }, + "java": { + "package": "software.amazon.awscdk.services.workspaces" + }, + "python": { + "module": "aws_cdk.aws_workspaces" + } + } + }, + "aws-cdk-lib.aws_workspacesthinclient": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.WorkSpacesThinClient" + }, + "java": { + "package": "software.amazon.awscdk.services.workspacesthinclient" + }, + "python": { + "module": "aws_cdk.aws_workspacesthinclient" + } + } + }, + "aws-cdk-lib.aws_workspacesweb": { + "targets": { + "dotnet": { + "package": "Amazon.CDK.AWS.WorkSpacesWeb" + }, + "java": { + "package": "software.amazon.awscdk.services.workspacesweb" + }, + "python": { + "module": "aws_cdk.aws_workspacesweb" + } + } + }, + "aws-cdk-lib.aws_xray": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.XRay" + }, + "java": { + "package": "software.amazon.awscdk.services.xray" + }, + "python": { + "module": "aws_cdk.aws_xray" + } + } + }, + "aws-cdk-lib.cloud_assembly_schema": {}, + "aws-cdk-lib.cloudformation_include": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.CloudFormation.Include" + }, + "java": { + "package": "software.amazon.awscdk.cloudformation.include" + }, + "python": { + "module": "aws_cdk.cloudformation_include" + } + } + }, + "aws-cdk-lib.custom_resources": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.CustomResources" + }, + "java": { + "package": "software.amazon.awscdk.customresources" + }, + "python": { + "module": "aws_cdk.custom_resources" + } + } + }, + "aws-cdk-lib.cx_api": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.CXAPI" + }, + "java": { + "package": "software.amazon.awscdk.cxapi" + }, + "python": { + "module": "aws_cdk.cx_api" + } + } + }, + "aws-cdk-lib.lambda_layer_awscli": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.LambdaLayer.AwsCli" + }, + "java": { + "package": "software.amazon.awscdk.lambdalayer.awscli" + }, + "python": { + "module": "aws_cdk.lambda_layer_awscli" + } + } + }, + "aws-cdk-lib.lambda_layer_node_proxy_agent": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.LambdaLayer.NodeProxyAgent" + }, + "java": { + "package": "software.amazon.awscdk.lambda.layer.node.proxy.agent" + }, + "python": { + "module": "aws_cdk.lambda_layer_node_proxy_agent" + } + } + }, + "aws-cdk-lib.pipelines": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Pipelines" + }, + "java": { + "package": "software.amazon.awscdk.pipelines" + }, + "python": { + "module": "aws_cdk.pipelines" + } + } + }, + "aws-cdk-lib.region_info": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.RegionInfo" + }, + "java": { + "package": "software.amazon.awscdk.regioninfo" + }, + "python": { + "module": "aws_cdk.region_info" + } + } + }, + "aws-cdk-lib.triggers": { + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.Triggers" + }, + "java": { + "package": "software.amazon.awscdk.triggers" + }, + "python": { + "module": "aws_cdk.triggers" + } + } + } + }, + "targets": { + "dotnet": { + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", + "namespace": "Amazon.CDK", + "packageId": "Amazon.CDK.Lib" + }, + "go": { + "moduleName": "github.com/aws/aws-cdk-go", + "packageName": "awscdk" + }, + "java": { + "maven": { + "artifactId": "aws-cdk-lib", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk" + }, + "js": { + "npm": "aws-cdk-lib" + }, + "python": { + "distName": "aws-cdk-lib", + "module": "aws_cdk" + } + } + }, + "constructs": { + "targets": { + "dotnet": { + "namespace": "Constructs", + "packageId": "Constructs" + }, + "go": { + "moduleName": "github.com/aws/constructs-go" + }, + "java": { + "maven": { + "artifactId": "constructs", + "groupId": "software.constructs" + }, + "package": "software.constructs" + }, + "js": { + "npm": "constructs" + }, + "python": { + "distName": "constructs", + "module": "constructs" + } + } + } + }, + "description": "The CDK Construct Library for Amazon Bedrock", + "docs": { + "stability": "experimental" + }, + "homepage": "https://github.com/aws/aws-cdk", + "jsiiVersion": "5.7.10 (build 5114b23)", + "keywords": [ + "aws", + "cdk", + "constructs", + "bedrock" + ], + "license": "Apache-2.0", + "metadata": { + "jsii": { + "compiledWithDeprecationWarnings": true, + "pacmak": { + "hasDefaultInterfaces": true + }, + "rosetta": { + "strict": true + } + } + }, + "name": "@aws-cdk/aws-bedrock-alpha", + "readme": { + "markdown": "# Amazon Bedrock Construct Library\n\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\n| **Language** | **Package** |\n| :--------------------------------------------------------------------------------------------- | --------------------------------------- |\n| ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) TypeScript | `@aws-cdk/aws-bedrock-alpha` |\n\n[Amazon Bedrock](https://aws.amazon.com/bedrock/) is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI.\n\nThis construct library facilitates the deployment of Bedrock Agents, enabling you to create sophisticated AI applications that can interact with your systems and data sources.\n\n## Table of contents\n\n- [API](#api)\n- [Agents](#agents)\n - [Create an Agent](#create-an-agent)\n - [Action groups](#action-groups)\n - [Prepare the Agent](#prepare-the-agent)\n - [Prompt Override Configuration](#prompt-override-configuration)\n - [Memory Configuration](#memory-configuration)\n - [Agent Collaboration](#agent-collaboration)\n - [Custom Orchestration](#custom-orchestration)\n - [Agent Alias](#agent-alias)\n\n## API\n\nSee the [API documentation](../../../apidocs/namespaces/bedrock/README.md).\n\n## Agents\n\nAmazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources.\n\n### Agent Properties\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| name | string | No | The name of the agent. Defaults to a name generated by CDK |\n| instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters |\n| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent |\n| existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role |\n| shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false |\n| idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour |\n| kmsKey | kms.IKey | No | The KMS key of the agent if custom encryption is configured. Defaults to AWS managed key |\n| description | string | No | A description of the agent. Defaults to no description |\n| actionGroups | AgentActionGroup[] | No | The Action Groups associated with the agent |\n| promptOverrideConfiguration | PromptOverrideConfiguration | No | Overrides some prompt templates in different parts of an agent sequence configuration |\n| userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false |\n| codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false |\n| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true |\n\n### Create an Agent\n\nThe following example creates an Agent with a simple instruction and default prompts:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n```\n\n### Action Groups\n\nAn action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them.\n\nExample:\n\n```ts fixture=default\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nagent.addActionGroup(actionGroup);\n```\n\n### Prepare the Agent\n\nThe `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false.\n\nCreating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**.\n\n### Prompt Override Configuration\n\nBedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured:\n\n- PRE_PROCESSING\n- ORCHESTRATION\n- POST_PROCESSING\n- ROUTING_CLASSIFIER\n- MEMORY_SUMMARIZATION\n- KNOWLEDGE_BASE_RESPONSE_GENERATION\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n stepEnabled: true,\n customPromptTemplate: 'Your custom prompt template here',\n inferenceConfig: {\n temperature: 0.0,\n topP: 1,\n topK: 250,\n maximumLength: 1,\n stopSequences: [\"\\n\\nHuman:\"],\n },\n }\n ])\n});\n```\n\nYou can also use a custom Lambda parser to process the model's output:\n\n```ts fixture=default\nconst parserFunction = new lambda.Function(this, 'ParserFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda'),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({\n parser: parserFunction,\n steps: [\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n useCustomParser: true,\n customPromptTemplate: 'Your custom prompt template here',\n }\n ]\n })\n});\n```\n\n### Memory Configuration\n\nAgents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'MyAgent', {\n agentName: 'MyAgent',\n instruction: 'Your instruction here',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n memory: Memory.sessionSummary({\n maxRecentSessions: 10, // Keep the last 10 session summaries\n memoryDuration: Duration.days(20), // Retain summaries for 20 days\n }),\n});\n```\n\n### Agent Collaboration\n\nAgent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries.\n\nExample:\n\n```ts fixture=default\n// Create a specialized agent\nconst customerSupportAgent = new bedrock.Agent(this, 'CustomerSupportAgent', {\n instruction: 'You specialize in answering customer support questions.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n});\n\n// Create an agent alias\nconst customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias', {\n agent: customerSupportAgent,\n agentAliasName: 'production',\n});\n\n// Create a main agent that collaborates with the specialized agent\nconst mainAgent = new bedrock.Agent(this, 'MainAgent', {\n instruction: 'You route specialized questions to other agents.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR,\n agentCollaborators: [\n new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', {\n agentAlias: customerSupportAlias,\n collaborationInstruction: 'Route customer support questions to this agent.',\n collaboratorName: 'CustomerSupport',\n relayConversationHistory: true,\n }),\n ],\n});\n```\n\n### Custom Orchestration\n\nCustom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups.\n\nExample:\n\n```ts fixture=default\nconst orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda/orchestration'),\n});\n\nconst agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', {\n instruction: 'You are a helpful assistant with custom orchestration logic.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION,\n customOrchestration: {\n executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction),\n },\n});\n```\n\n### Agent Alias\n\nAfter you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases.\n\nTo deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias.\n\nBy default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nconst agentAlias = new bedrock.AgentAlias(this, 'myalias', {\n agentAliasName: 'production',\n agent: agent,\n agentVersion: '1', // optional\n description: 'Production version of my agent'\n});\n```\n" + }, + "repository": { + "directory": "packages/@aws-cdk/aws-bedrock-alpha", + "type": "git", + "url": "https://github.com/aws/aws-cdk.git" + }, + "schema": "jsii/0.10.0", + "targets": { + "dotnet": { + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", + "namespace": "Amazon.CDK.Aws.Bedrock.Alpha", + "packageId": "Amazon.CDK.Aws.Bedrock.Alpha" + }, + "go": { + "moduleName": "github.com/aws/aws-cdk-go", + "packageName": "awsbedrockalpha" + }, + "java": { + "maven": { + "artifactId": "bedrock-alpha", + "groupId": "software.amazon.awscdk" + }, + "package": "software.amazon.awscdk.services.bedrock.alpha" + }, + "js": { + "npm": "@aws-cdk/aws-bedrock-alpha" + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 2" + ], + "distName": "aws-cdk.aws-bedrock-alpha", + "module": "aws_cdk.aws_bedrock_alpha" + } + }, + "types": { + "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "Valid executors are:\n- Lambda function\n- Return Control", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/action-handle.html", + "stability": "experimental", + "summary": "Defines how fulfillment of the action group is handled after the necessary information has been elicited from the user." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor", + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/api-executor.ts", + "line": 28 + }, + "methods": [ + { + "docs": { + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html", + "stability": "experimental", + "summary": "Defines an action group with a Lambda function containing the business logic." + }, + "locationInModule": { + "filename": "bedrock/agents/api-executor.ts", + "line": 41 + }, + "name": "fromlambdaFunction", + "parameters": [ + { + "docs": { + "summary": "- Lambda function to be called by the action group." + }, + "name": "lambdaFunction", + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" + } + }, + "static": true + } + ], + "name": "ActionGroupExecutor", + "properties": [ + { + "const": true, + "docs": { + "remarks": "The information and parameters can be sent to your own systems to yield results.", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-returncontrol.html", + "stability": "experimental", + "summary": "Returns the action group invocation results directly in the InvokeAgent response." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/api-executor.ts", + "line": 34 + }, + "name": "RETURN_CONTROL", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" + } + }, + { + "docs": { + "remarks": "Currently only supports 'RETURN_CONTROL' which returns results directly in the InvokeAgent response.", + "stability": "experimental", + "summary": "The custom control type for the action group executor." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/api-executor.ts", + "line": 55 + }, + "name": "customControl", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "docs": { + "remarks": "Contains the business logic for handling the action group's invocation.", + "stability": "experimental", + "summary": "The Lambda function that will be called by the action group." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/api-executor.ts", + "line": 49 + }, + "name": "lambdaFunction", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + } + ], + "symbolId": "bedrock/agents/api-executor:ActionGroupExecutor" + }, + "@aws-cdk/aws-bedrock-alpha.Agent": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "docs": { + "custom": { + "cloudformationResource": "AWS::Bedrock::Agent" + }, + "stability": "experimental", + "summary": "Class to create (or import) an Agent with CDK." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.Agent", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 446 + }, + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentProps" + } + } + ] + }, + "interfaces": [ + "@aws-cdk/aws-bedrock-alpha.IAgent" + ], + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 295 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Static Method for importing an existing Bedrock Agent." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 299 + }, + "name": "fromAgentAttributes", + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "attrs", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAttributes" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Add an action group to the agent." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 610 + }, + "name": "addActionGroup", + "parameters": [ + { + "name": "actionGroup", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + } + } + ] + }, + { + "docs": { + "stability": "experimental", + "summary": "Add multiple action groups to the agent." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 635 + }, + "name": "addActionGroups", + "parameters": [ + { + "name": "actionGroups", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + }, + "variadic": true + } + ], + "variadic": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Add an agent collaborator to the agent." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 627 + }, + "name": "addAgentCollaborator", + "parameters": [ + { + "name": "agentCollaborator", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" + } + } + ] + }, + { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 749 + }, + "name": "generatePhysicalName", + "overrides": "aws-cdk-lib.Resource", + "protected": true, + "returns": { + "type": { + "primitive": "string" + } + } + } + ], + "name": "Agent", + "properties": [ + { + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The ARN of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 325 + }, + "name": "agentArn", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The unique identifier for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 320 + }, + "name": "agentId", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The version of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 330 + }, + "name": "agentVersion", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether the agent can generate, run, and troubleshoot code when trying to complete a task." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 380 + }, + "name": "codeInterpreterEnabled", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether the resource will be deleted even if it's in use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 384 + }, + "name": "forceDelete", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The foundation model used for orchestration by the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 366 + }, + "name": "foundationModel", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The principal to grant permissions to." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 346 + }, + "name": "grantPrincipal", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IPrincipal" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "How long sessions should be kept open for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 362 + }, + "name": "idleSessionTTL", + "type": { + "fqn": "aws-cdk-lib.Duration" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The name of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 353 + }, + "name": "name", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The IAM role associated to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 334 + }, + "name": "role", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IRole" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether the agent will automatically update the DRAFT version of the agent after making changes to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 358 + }, + "name": "shouldPrepareAgent", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "remarks": "This corresponds to the test alias\n(`TSTALIASID`) that points to the working (`DRAFT`) version.", + "stability": "experimental", + "summary": "The default test alias for this agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 371 + }, + "name": "testAlias", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether the agent can prompt additional information from the user when it does not have enough information to respond to an utterance." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 376 + }, + "name": "userInputEnabled", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "Agent collaboration type." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 389 + }, + "name": "agentCollaboration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType" + } + }, + { + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "Agent collaborators." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 394 + }, + "name": "agentCollaborators", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" + }, + "kind": "array" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Custom orchestration configuration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 398 + }, + "name": "customOrchestration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The description for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 409 + }, + "name": "description", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "docs": { + "remarks": "This determines how the agent will perform his task.", + "stability": "experimental", + "summary": "The instruction used by the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 413 + }, + "name": "instruction", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Optional KMS encryption key associated with this agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 338 + }, + "name": "kmsKey", + "optional": true, + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "fqn": "aws-cdk-lib.aws_kms.IKey" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "When this agent was last updated." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 342 + }, + "name": "lastUpdated", + "optional": true, + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The memory configuration for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 423 + }, + "name": "memory", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.Memory" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The type of orchestration for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 402 + }, + "name": "orchestrationType", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType" + } + }, + { + "docs": { + "default": "- No overrides are provided.", + "stability": "experimental", + "summary": "Overrides some prompt templates in different parts of an agent sequence configuration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 419 + }, + "name": "promptOverrideConfiguration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The action groups associated with the agent." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 430 + }, + "name": "actionGroups", + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + }, + "kind": "array" + } + } + } + ], + "symbolId": "bedrock/agents/agent:Agent" + }, + "@aws-cdk/aws-bedrock-alpha.AgentActionGroup": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "**************************************************************************** DEF - Action Group Class ***************************************************************************." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 196 + }, + "parameters": [ + { + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 130 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Defines an action group that allows your agent to request the user for additional information when trying to complete a task." + }, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 152 + }, + "name": "codeInterpreter", + "parameters": [ + { + "docs": { + "summary": "Specifies whether the action group is available for the agent." + }, + "name": "enabled", + "type": { + "primitive": "boolean" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Defines an action group that allows your agent to request the user for additional information when trying to complete a task." + }, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 139 + }, + "name": "userInput", + "parameters": [ + { + "docs": { + "summary": "Specifies whether the action group is available for the agent." + }, + "name": "enabled", + "type": { + "primitive": "boolean" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + } + }, + "static": true + } + ], + "name": "AgentActionGroup", + "properties": [ + { + "docs": { + "stability": "experimental", + "summary": "Whether this action group is available for the agent to invoke or not." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 174 + }, + "name": "enabled", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The name of the action group." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 166 + }, + "name": "name", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The api schema for this action group (if defined)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 178 + }, + "name": "apiSchema", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "A description of the action group." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 170 + }, + "name": "description", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The action group executor for this action group (if defined)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 182 + }, + "name": "executor", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether to delete the resource even if it's in use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 186 + }, + "name": "forceDelete", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The function schema for this action group (if defined)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 190 + }, + "name": "functionSchema", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.FunctionSchemaProperty" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The AWS Defined signature (if defined)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 194 + }, + "name": "parentActionGroupSignature", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" + } + } + ], + "symbolId": "bedrock/agents/action-group:AgentActionGroup" + }, + "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "**************************************************************************** PROPS - Action Group Class ***************************************************************************." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 66 + }, + "name": "AgentActionGroupProps", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The name of the action group." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 70 + }, + "name": "name", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No API Schema is provided", + "stability": "experimental", + "summary": "The API Schema defining the functions available to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 84 + }, + "name": "apiSchema", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No description is provided", + "stability": "experimental", + "summary": "A description of the action group." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 77 + }, + "name": "description", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "true - The action group is enabled", + "stability": "experimental", + "summary": "Specifies whether the action group is available for the agent to invoke or not when sending an InvokeAgent request." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 99 + }, + "name": "enabled", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No executor is provided", + "stability": "experimental", + "summary": "The action group executor that implements the API functions." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 91 + }, + "name": "executor", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" + } + }, + { + "abstract": true, + "docs": { + "default": "false - The resource will not be deleted if it's in use", + "stability": "experimental", + "summary": "Specifies whether to delete the resource even if it's in use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 106 + }, + "name": "forceDelete", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No function schema is provided", + "remarks": "NO L2 yet as this doesn't make much sense IMHO.", + "stability": "experimental", + "summary": "Defines functions that each define parameters that the agent needs to invoke from the user." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 114 + }, + "name": "functionSchema", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.FunctionSchemaProperty" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No parent action group signature is provided", + "remarks": "When this property is specified, you must leave the description, apiSchema,\nand actionGroupExecutor fields blank for this action group.", + "stability": "experimental", + "summary": "The AWS Defined signature for enabling certain capabilities in your agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 123 + }, + "name": "parentActionGroupSignature", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" + } + } + ], + "symbolId": "bedrock/agents/action-group:AgentActionGroupProps" + }, + "@aws-cdk/aws-bedrock-alpha.AgentAlias": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", + "docs": { + "custom": { + "cloudformationResource": "AWS::Bedrock::AgentAlias" + }, + "stability": "experimental", + "summary": "Class to create an Agent Alias with CDK." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAlias", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 238 + }, + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasProps" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 197 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Brings an Agent Alias from an existing one created outside of CDK." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 204 + }, + "name": "fromAttributes", + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "attrs", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" + } + }, + "static": true + } + ], + "name": "AgentAlias", + "properties": [ + { + "docs": { + "stability": "experimental", + "summary": "The underlying agent for this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 226 + }, + "name": "agent", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The ARN of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 228 + }, + "name": "aliasArn", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The unique identifier of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 227 + }, + "name": "aliasId", + "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "remarks": "This is either provided by the user or generated from a hash.", + "stability": "experimental", + "summary": "The name of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 233 + }, + "name": "aliasName", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent-alias:AgentAlias" + }, + "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Attributes needed to create an import." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 170 + }, + "name": "AgentAliasAttributes", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The underlying agent for this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 183 + }, + "name": "agent", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The agent version for this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 187 + }, + "name": "agentVersion", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The Id of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 174 + }, + "name": "aliasId", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No alias name is provided", + "stability": "experimental", + "summary": "The name of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 179 + }, + "name": "aliasName", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent-alias:AgentAliasAttributes" + }, + "@aws-cdk/aws-bedrock-alpha.AgentAliasBase": { + "abstract": true, + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "aws-cdk-lib.Resource", + "docs": { + "remarks": "Contains methods and attributes valid for Agents either created with CDK or imported.", + "stability": "experimental", + "summary": "Abstract base class for an Agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", + "initializer": { + "docs": { + "stability": "stable" + }, + "locationInModule": { + "filename": "core/lib/resource.ts", + "line": 155 + }, + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.ResourceProps" + } + } + ] + }, + "interfaces": [ + "@aws-cdk/aws-bedrock-alpha.IAgentAlias" + ], + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 77 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Grant the given principal identity permissions to perform actions on this agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 85 + }, + "name": "grant", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + }, + { + "name": "actions", + "type": { + "primitive": "string" + }, + "variadic": true + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + }, + "variadic": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Grant the given identity permissions to get the agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 104 + }, + "name": "grantGet", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Grant the given identity permissions to invoke the agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 97 + }, + "name": "grantInvoke", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "docs": { + "remarks": "Requires that there exists at least one CloudTrail Trail in your account\nthat captures the event. This method will not create the Trail.", + "stability": "experimental", + "summary": "Define an EventBridge rule that triggers when something happens to this agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 117 + }, + "name": "onCloudTrailEvent", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "parameters": [ + { + "docs": { + "summary": "The id of the rule." + }, + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "summary": "Options for adding the rule." + }, + "name": "options", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_events.OnEventOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_events.Rule" + } + } + } + ], + "name": "AgentAliasBase", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The underlying agent for this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 80 + }, + "name": "agent", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The ARN of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 79 + }, + "name": "aliasArn", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The unique identifier of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 78 + }, + "name": "aliasId", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent-alias:AgentAliasBase" + }, + "@aws-cdk/aws-bedrock-alpha.AgentAliasProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Properties for creating a CDK-Managed Agent Alias." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 139 + }, + "name": "AgentAliasProps", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The agent associated to this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 156 + }, + "name": "agent", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + { + "abstract": true, + "docs": { + "default": "- \"latest-{hash}\"", + "remarks": "This will be used as the physical name of the agent alias.", + "stability": "experimental", + "summary": "The name for the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 146 + }, + "name": "agentAliasName", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- Creates a new version of the agent.", + "stability": "experimental", + "summary": "The version of the agent to associate with the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 152 + }, + "name": "agentVersion", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No description is provided", + "stability": "experimental", + "summary": "Description for the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 161 + }, + "name": "description", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent-alias:AgentAliasProps" + }, + "@aws-cdk/aws-bedrock-alpha.AgentAttributes": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Attributes for specifying an imported Bedrock Agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAttributes", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 258 + }, + "name": "AgentAttributes", + "properties": [ + { + "abstract": true, + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The ARN of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 263 + }, + "name": "agentArn", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The ARN of the IAM role associated to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 268 + }, + "name": "roleArn", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "'DRAFT'", + "remarks": "If no explicit versions have been created,\nleave this empty to use the DRAFT version. Otherwise, use the\nversion number (e.g. 1).", + "stability": "experimental", + "summary": "The agent version." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 286 + }, + "name": "agentVersion", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - An AWS managed key is used", + "stability": "experimental", + "summary": "Optional KMS encryption key associated with this agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 273 + }, + "name": "kmsKeyArn", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No last updated timestamp is provided", + "stability": "experimental", + "summary": "When this agent was last updated." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 279 + }, + "name": "lastUpdated", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent:AgentAttributes" + }, + "@aws-cdk/aws-bedrock-alpha.AgentBase": { + "abstract": true, + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "aws-cdk-lib.Resource", + "docs": { + "remarks": "Contains methods and attributes valid for Agents either created with CDK or imported.", + "stability": "experimental", + "summary": "Abstract base class for an Agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentBase", + "initializer": { + "docs": { + "stability": "stable" + }, + "locationInModule": { + "filename": "core/lib/resource.ts", + "line": 155 + }, + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.ResourceProps" + } + } + ] + }, + "interfaces": [ + "@aws-cdk/aws-bedrock-alpha.IAgent" + ], + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 84 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Grant invoke permissions on this agent to an IAM principal." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 97 + }, + "name": "grantInvoke", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Return the CloudWatch metric for agent count." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 117 + }, + "name": "metricCount", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "parameters": [ + { + "name": "props", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_cloudwatch.MetricOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_cloudwatch.Metric" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Defines a CloudWatch event rule triggered by agent events." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 105 + }, + "name": "onEvent", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "parameters": [ + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "options", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_events.OnEventOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_events.Rule" + } + } + } + ], + "name": "AgentBase", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The ARN of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 85 + }, + "name": "agentArn", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The ID of the Agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 86 + }, + "name": "agentId", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The version of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 94 + }, + "name": "agentVersion", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The principal to grant permissions to." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 95 + }, + "name": "grantPrincipal", + "overrides": "aws-cdk-lib.aws_iam.IGrantable", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IPrincipal" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The IAM role associated to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 87 + }, + "name": "role", + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IRole" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Optional KMS encryption key associated with this agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 88 + }, + "name": "kmsKey", + "optional": true, + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "type": { + "fqn": "aws-cdk-lib.aws_kms.IKey" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "When this agent was last updated." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 89 + }, + "name": "lastUpdated", + "optional": true, + "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent:AgentBase" + }, + "@aws-cdk/aws-bedrock-alpha.AgentCollaborator": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "constructs.Construct", + "docs": { + "stability": "experimental", + "summary": "**************************************************************************** DEF - Agent Collaborator Class ***************************************************************************." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 115 + }, + "parameters": [ + { + "name": "scope", + "type": { + "fqn": "constructs.Construct" + } + }, + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 88 + }, + "methods": [ + { + "docs": { + "returns": "The Grant object", + "stability": "experimental", + "summary": "Grants the specified principal permissions to get the agent alias and invoke the agent from this collaborator." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 170 + }, + "name": "grant", + "parameters": [ + { + "docs": { + "summary": "The principal to grant permissions to." + }, + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + } + ], + "name": "AgentCollaborator", + "properties": [ + { + "docs": { + "remarks": "This is the agent that will be called upon for collaboration.", + "stability": "experimental", + "summary": "The agent alias that this collaborator represents." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 96 + }, + "name": "agentAlias", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Instructions on how this agent should collaborate with the main agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 101 + }, + "name": "collaborationInstruction", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "A friendly name for the collaborator." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 106 + }, + "name": "collaboratorName", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "default": "- undefined (uses service default)", + "stability": "experimental", + "summary": "Whether to relay conversation history to this collaborator." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 113 + }, + "name": "relayConversationHistory", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "bedrock/agents/agent-collaborator:AgentCollaborator" + }, + "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "**************************************************************************** PROPS - Agent Collaborator Class ***************************************************************************." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 59 + }, + "name": "AgentCollaboratorProps", + "properties": [ + { + "abstract": true, + "docs": { + "remarks": "This cannot be the TSTALIASID (`agent.testAlias`).", + "stability": "experimental", + "summary": "Descriptor for the collaborating agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 64 + }, + "name": "agentAlias", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Instructions on how this agent should collaborate with the main agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 69 + }, + "name": "collaborationInstruction", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "A friendly name for the collaborator." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 74 + }, + "name": "collaboratorName", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- undefined (uses service default)", + "stability": "experimental", + "summary": "Whether to relay conversation history to this collaborator." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 81 + }, + "name": "relayConversationHistory", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "bedrock/agents/agent-collaborator:AgentCollaboratorProps" + }, + "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Enum for collaborator's relay conversation history types." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType", + "kind": "enum", + "locationInModule": { + "filename": "bedrock/agents/agent-collaborator.ts", + "line": 23 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "Supervisor agent." + }, + "name": "SUPERVISOR" + }, + { + "docs": { + "stability": "experimental", + "summary": "Disabling collaboration." + }, + "name": "DISABLED" + }, + { + "docs": { + "stability": "experimental", + "summary": "Supervisor router." + }, + "name": "SUPERVISOR_ROUTER" + } + ], + "name": "AgentCollaboratorType", + "symbolId": "bedrock/agents/agent-collaborator:AgentCollaboratorType" + }, + "@aws-cdk/aws-bedrock-alpha.AgentProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Properties for creating a CDK managed Bedrock Agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 135 + }, + "name": "AgentProps", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The foundation model used for orchestration by the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 151 + }, + "name": "foundationModel", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" + } + }, + { + "abstract": true, + "docs": { + "remarks": "This determines how the agent will perform his task.\nThis instruction must have a minimum of 40 characters.", + "stability": "experimental", + "summary": "The instruction used by the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 147 + }, + "name": "instruction", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- Only default action groups (UserInput and CodeInterpreter) are added", + "stability": "experimental", + "summary": "The Action Groups associated with the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 191 + }, + "name": "actionGroups", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- No collaboration (AgentCollaboratorType.DISABLED).", + "stability": "experimental", + "summary": "The collaboration type for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 232 + }, + "name": "agentCollaboration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType" + } + }, + { + "abstract": true, + "docs": { + "default": "- No collaborators.", + "stability": "experimental", + "summary": "Collaborators that this agent will work with." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 238 + }, + "name": "agentCollaborators", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- A name is generated by CDK.", + "remarks": "This will be used as the physical name of the agent.", + "stability": "experimental", + "summary": "The name of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 142 + }, + "name": "agentName", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Select whether the agent can generate, run, and troubleshoot code when trying to complete a task." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 211 + }, + "name": "codeInterpreterEnabled", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- Standard orchestration.", + "stability": "experimental", + "summary": "Details of custom orchestration for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 244 + }, + "name": "customOrchestration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration" + } + }, + { + "abstract": true, + "docs": { + "default": "- No description is provided.", + "stability": "experimental", + "summary": "A description of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 186 + }, + "name": "description", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- A new role is created for you.", + "remarks": "Ensure the role has a trust policy that allows the Bedrock service to assume the role.", + "stability": "experimental", + "summary": "The existing IAM Role for the agent to use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 158 + }, + "name": "existingRole", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_iam.IRole" + } + }, + { + "abstract": true, + "docs": { + "default": "- true", + "stability": "experimental", + "summary": "Whether to delete the resource even if it's in use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 217 + }, + "name": "forceDelete", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- 1 hour", + "remarks": "If no conversation occurs\nduring this time, the session expires and Amazon Bedrock deletes any data\nprovided before the timeout.", + "stability": "experimental", + "summary": "How long sessions should be kept open for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 174 + }, + "name": "idleSessionTTL", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.Duration" + } + }, + { + "abstract": true, + "docs": { + "default": "- An AWS managed key is used.", + "stability": "experimental", + "summary": "The KMS key of the agent if custom encryption is configured." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 180 + }, + "name": "kmsKey", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_kms.IKey" + } + }, + { + "abstract": true, + "docs": { + "default": "- No memory will be used. Agents will retain context from the current session only.", + "remarks": "This can be useful for maintaining continuity in multi-turn conversations and recalling user preferences\nor past interactions.", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html", + "stability": "experimental", + "summary": "The type and configuration of the memory to maintain context across multiple sessions and recall past interactions." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 226 + }, + "name": "memory", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.Memory" + } + }, + { + "abstract": true, + "docs": { + "default": "- STANDARD", + "stability": "experimental", + "summary": "The type of orchestration to use for the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 250 + }, + "name": "orchestrationType", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType" + } + }, + { + "abstract": true, + "docs": { + "default": "- No overrides are provided.", + "stability": "experimental", + "summary": "Overrides some prompt templates in different parts of an agent sequence configuration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 198 + }, + "name": "promptOverrideConfiguration", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "remarks": "The `DRAFT` version can be continually iterated\nupon during internal development.", + "stability": "experimental", + "summary": "Specifies whether to automatically update the `DRAFT` version of the agent after making changes to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 166 + }, + "name": "shouldPrepareAgent", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Select whether the agent can prompt additional information from the user when it does not have enough information to respond to an utterance." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 205 + }, + "name": "userInputEnabled", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "bedrock/agents/agent:AgentProps" + }, + "@aws-cdk/aws-bedrock-alpha.AgentStepType": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "The step in the agent sequence that this prompt configuration applies to." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentStepType", + "kind": "enum", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 25 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "Pre-processing step that prepares the user input for orchestration." + }, + "name": "PRE_PROCESSING" + }, + { + "docs": { + "stability": "experimental", + "summary": "Main orchestration step that determines the agent's actions." + }, + "name": "ORCHESTRATION" + }, + { + "docs": { + "stability": "experimental", + "summary": "Post-processing step that refines the agent's response." + }, + "name": "POST_PROCESSING" + }, + { + "docs": { + "stability": "experimental", + "summary": "Step that classifies and routes requests to appropriate collaborators." + }, + "name": "ROUTING_CLASSIFIER" + }, + { + "docs": { + "stability": "experimental", + "summary": "Step that summarizes conversation history for memory retention." + }, + "name": "MEMORY_SUMMARIZATION" + }, + { + "docs": { + "stability": "experimental", + "summary": "Step that generates responses using knowledge base content." + }, + "name": "KNOWLEDGE_BASE_RESPONSE_GENERATION" + } + ], + "name": "AgentStepType", + "symbolId": "bedrock/agents/prompt-override:AgentStepType" + }, + "@aws-cdk/aws-bedrock-alpha.ApiSchema": { + "abstract": true, + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Represents the concept of an API Schema for a Bedrock Agent Action Group." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema", + "initializer": { + "docs": { + "stability": "experimental", + "summary": "Constructor accessible only to extending classes." + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 68 + }, + "parameters": [ + { + "name": "s3File", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_s3.Location" + } + }, + { + "name": "inlineSchema", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "protected": true + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 24 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Creates an API Schema from an inline string." + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 37 + }, + "name": "fromInline", + "parameters": [ + { + "docs": { + "summary": "- the JSON or YAML payload defining the OpenAPI schema for the action group." + }, + "name": "schema", + "type": { + "primitive": "string" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Creates an API Schema from a local file." + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 29 + }, + "name": "fromLocalAsset", + "parameters": [ + { + "docs": { + "summary": "- the path to the local file containing the OpenAPI schema for the action group." + }, + "name": "path", + "type": { + "primitive": "string" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Creates an API Schema from an S3 File." + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 46 + }, + "name": "fromS3File", + "parameters": [ + { + "docs": { + "summary": "- the bucket containing the local file containing the OpenAPI schema for the action group." + }, + "name": "bucket", + "type": { + "fqn": "aws-cdk-lib.aws_s3.IBucket" + } + }, + { + "docs": { + "summary": "- object key in the bucket." + }, + "name": "objectKey", + "type": { + "primitive": "string" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.S3ApiSchema" + } + }, + "static": true + } + ], + "name": "ApiSchema", + "properties": [ + { + "docs": { + "remarks": "Can be in JSON or YAML format.", + "stability": "experimental", + "summary": "The inline OpenAPI schema definition as a string, if using an inline schema." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 63 + }, + "name": "inlineSchema", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "docs": { + "remarks": "Contains the bucket name and object key information.", + "stability": "experimental", + "summary": "The S3 location of the API schema file, if using an S3-based schema." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 57 + }, + "name": "s3File", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_s3.Location" + } + } + ], + "symbolId": "bedrock/agents/api-schema:ApiSchema" + }, + "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "If you need to use a model name that doesn't exist as a static member, you\ncan instantiate a `BedrockFoundationModel` object, e.g: `new BedrockFoundationModel('my-model')`.", + "stability": "experimental", + "summary": "Bedrock models." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 548 + }, + "parameters": [ + { + "name": "value", + "type": { + "primitive": "string" + } + }, + { + "name": "props", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" + } + } + ] + }, + "interfaces": [ + "@aws-cdk/aws-bedrock-alpha.IInvokable" + ], + "kind": "class", + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 113 + }, + "methods": [ + { + "docs": { + "returns": "A new BedrockFoundationModel instance", + "stability": "experimental", + "summary": "Creates a BedrockFoundationModel from a CDK FoundationModel." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 497 + }, + "name": "fromCdkFoundationModel", + "parameters": [ + { + "docs": { + "summary": "The foundation model." + }, + "name": "modelId", + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.FoundationModel" + } + }, + { + "docs": { + "summary": "Optional properties for the model." + }, + "name": "props", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + "static": true + }, + { + "docs": { + "returns": "A new BedrockFoundationModel instance", + "stability": "experimental", + "summary": "Creates a BedrockFoundationModel from a CDK FoundationModelIdentifier." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 484 + }, + "name": "fromCdkFoundationModelId", + "parameters": [ + { + "docs": { + "summary": "The foundation model identifier." + }, + "name": "modelId", + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.FoundationModelIdentifier" + } + }, + { + "docs": { + "summary": "Optional properties for the model." + }, + "name": "props", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Returns the ARN of the foundation model in the following format: `arn:${Partition}:bedrock:${Region}::foundation-model/${ResourceId}`." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 575 + }, + "name": "asArn", + "parameters": [ + { + "name": "construct", + "type": { + "fqn": "constructs.IConstruct" + } + } + ], + "returns": { + "type": { + "primitive": "string" + } + } + }, + { + "docs": { + "remarks": "This allows using the model with APIs that expect an IModel.", + "returns": "This foundation model as an IModel", + "stability": "experimental", + "summary": "Returns this foundation model as an IModel interface." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 587 + }, + "name": "asIModel", + "parameters": [ + { + "docs": { + "summary": "The scope in which to create any required resources." + }, + "name": "construct", + "type": { + "fqn": "constructs.IConstruct" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.IModel" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Gives the appropriate policies to invoke and use the Foundation Model in the stack region." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 596 + }, + "name": "grantInvoke", + "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Gives the appropriate policies to invoke and use the Foundation Model in all regions." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 608 + }, + "name": "grantInvokeAllRegions", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Returns a string representation of an object." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 567 + }, + "name": "toString", + "returns": { + "type": { + "primitive": "string" + } + } + } + ], + "name": "BedrockFoundationModel", + "properties": [ + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "AI21's Jamba 1.5 Large model, optimized for general text generation and understanding. Suitable for complex language tasks with high accuracy requirements." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 121 + }, + "name": "AI21_JAMBA_1_5_LARGE_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "AI21's Jamba 1.5 Mini model, a lightweight version optimized for faster inference. Suitable for simpler language tasks where speed is prioritized." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 132 + }, + "name": "AI21_JAMBA_1_5_MINI_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Optimized for understanding and executing natural language instructions.", + "stability": "experimental", + "summary": "AI21's Jamba Instruct model, specifically designed for instruction-following tasks." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 143 + }, + "name": "AI21_JAMBA_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Optimized for Bedrock Agents with cross-region support.", + "stability": "experimental", + "summary": "Amazon's Nova Lite model, balancing performance and resource usage." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 191 + }, + "name": "AMAZON_NOVA_LITE_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides fast inference with cross-region support.", + "stability": "experimental", + "summary": "Amazon's Nova Micro model, a lightweight model optimized for Bedrock Agents." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 178 + }, + "name": "AMAZON_NOVA_MICRO_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides high-quality outputs with cross-region support and agent optimization.", + "stability": "experimental", + "summary": "Amazon's Nova Pro model, offering advanced capabilities for complex tasks." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 201 + }, + "name": "AMAZON_NOVA_PRO_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides higher quality outputs compared to Express version.", + "stability": "experimental", + "summary": "Amazon's Titan Premier model, offering enhanced capabilities for complex text generation." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 167 + }, + "name": "AMAZON_TITAN_PREMIER_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Suitable for real-time applications requiring quick responses.", + "stability": "experimental", + "summary": "Amazon's Titan Text Express model, optimized for fast text generation." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 156 + }, + "name": "AMAZON_TITAN_TEXT_EXPRESS_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude 3.5 Haiku model, a lightweight version optimized for speed. Ideal for applications requiring quick responses with good accuracy." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 292 + }, + "name": "ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude 3.5 Sonnet V1 model, with cross-region support. Balances performance and resource usage for general-purpose tasks." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 283 + }, + "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude 3.5 Sonnet V2 model, optimized for Bedrock Agents. Offers improved performance and reliability over V1." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 274 + }, + "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V2_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude 3.7 Sonnet model, the latest version with enhanced capabilities. Provides advanced natural language understanding and generation with cross-region support." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 265 + }, + "name": "ANTHROPIC_CLAUDE_3_7_SONNET_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Suitable for applications requiring quick responses with good quality.", + "stability": "experimental", + "summary": "Anthropic's Claude Haiku model, optimized for fast inference." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 319 + }, + "name": "ANTHROPIC_CLAUDE_HAIKU_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude Instant V1.2 model, a legacy fast-inference version. Optimized for quick responses while maintaining good output quality." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 351 + }, + "name": "ANTHROPIC_CLAUDE_INSTANT_V1_2", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides highest quality outputs with enhanced reasoning capabilities.", + "stability": "experimental", + "summary": "Anthropic's Claude Opus model, their most advanced model for complex tasks." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 301 + }, + "name": "ANTHROPIC_CLAUDE_OPUS_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides reliable performance for general language tasks.", + "stability": "experimental", + "summary": "Anthropic's Claude Sonnet model, a legacy version with agent optimization." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 310 + }, + "name": "ANTHROPIC_CLAUDE_SONNET_V1_0", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Suitable for a wide range of language understanding and generation tasks.", + "stability": "experimental", + "summary": "Anthropic's Claude V2 model, a legacy version of their general-purpose model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 341 + }, + "name": "ANTHROPIC_CLAUDE_V2", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Anthropic's Claude V2.1 model, a legacy version with enhanced capabilities. Provides reliable performance for a wide range of language tasks." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 328 + }, + "name": "ANTHROPIC_CLAUDE_V2_1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Generates 1024-dimensional vectors with support for both floating-point and binary types.", + "stability": "experimental", + "summary": "Cohere's English embedding model, optimized for English text." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 367 + }, + "name": "COHERE_EMBED_ENGLISH_V3", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Generates 1024-dimensional vectors with support for both floating-point and binary types.", + "stability": "experimental", + "summary": "Cohere's multilingual embedding model, supporting multiple languages." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 380 + }, + "name": "COHERE_EMBED_MULTILINGUAL_V3", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Supports cross-region deployment and Bedrock Agents integration.", + "stability": "experimental", + "summary": "Deepseek's R1 model, offering advanced language capabilities." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 395 + }, + "name": "DEEPSEEK_R1_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides high-quality outputs for complex language tasks.", + "stability": "experimental", + "summary": "Meta's Llama 3 70B instruction-tuned model, their largest model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 422 + }, + "name": "META_LLAMA_3_1_70B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Meta's Llama 3 1.8B instruction-tuned model, a lightweight version. Suitable for tasks requiring quick responses with good accuracy." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 410 + }, + "name": "META_LLAMA_3_1_8B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Balances performance and resource usage for general tasks.", + "stability": "experimental", + "summary": "Meta's Llama 3 11B instruction-tuned model, a mid-sized version." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 434 + }, + "name": "META_LLAMA_3_2_11B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Ideal for resource-constrained environments.", + "stability": "experimental", + "summary": "Meta's Llama 3 1B instruction-tuned model, their most compact version." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 458 + }, + "name": "META_LLAMA_3_2_1B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Suitable for applications requiring fast inference.", + "stability": "experimental", + "summary": "Meta's Llama 3 3B instruction-tuned model, optimized for efficiency." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 446 + }, + "name": "META_LLAMA_3_2_3B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Meta's Llama 3.3 70B instruction-tuned model, latest large version. Offers enhanced capabilities with cross-region support." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 470 + }, + "name": "META_LLAMA_3_3_70B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Generates 1536-dimensional floating-point vector embeddings.", + "stability": "experimental", + "summary": "Amazon's Titan Embed Text V1 model for text embeddings." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 211 + }, + "name": "TITAN_EMBED_TEXT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Supports both floating-point and binary vector embeddings.", + "stability": "experimental", + "summary": "Amazon's Titan Embed Text V2 model with 1024-dimensional vectors." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 224 + }, + "name": "TITAN_EMBED_TEXT_V2_1024", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Optimized for applications requiring compact vector representations.", + "stability": "experimental", + "summary": "Amazon's Titan Embed Text V2 model with 256-dimensional vectors." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 250 + }, + "name": "TITAN_EMBED_TEXT_V2_256", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Provides a balance between precision and resource usage.", + "stability": "experimental", + "summary": "Amazon's Titan Embed Text V2 model with 512-dimensional vectors." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 237 + }, + "name": "TITAN_EMBED_TEXT_V2_512", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The ARN used for invoking the model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 520 + }, + "name": "invokableArn", + "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The ARN of the foundation model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 515 + }, + "name": "modelArn", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The unique identifier of the foundation model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 510 + }, + "name": "modelId", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether this model can be used with Bedrock Agents." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 525 + }, + "name": "supportsAgents", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether this model supports cross-region inference." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 530 + }, + "name": "supportsCrossRegion", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "Whether this model can be used with Bedrock Knowledge Base." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 541 + }, + "name": "supportsKnowledgeBase", + "type": { + "primitive": "boolean" + } + }, + { + "docs": { + "remarks": "Only applicable for embedding models.", + "stability": "experimental", + "summary": "The vector types supported by this model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 547 + }, + "name": "supportedVectorType", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType" + }, + "kind": "array" + } + } + }, + { + "docs": { + "remarks": "Only applicable for embedding models.", + "stability": "experimental", + "summary": "The dimensionality of vectors produced by this model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 536 + }, + "name": "vectorDimensions", + "optional": true, + "type": { + "primitive": "number" + } + } + ], + "symbolId": "bedrock/models:BedrockFoundationModel" + }, + "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Properties for configuring a Bedrock Foundation Model." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 56 + }, + "name": "BedrockFoundationModelProps", + "properties": [ + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html A version is marked Legacy when there is a more recent version which provides superior performance. Amazon Bedrock sets an EOL date for Legacy versions." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 75 + }, + "name": "legacy", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Currently, some of the offered models are optimized with prompts/parsers fine-tuned for integrating with the agents architecture." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 68 + }, + "name": "optimizedForAgents", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No vector types specified", + "stability": "experimental", + "summary": "Embeddings models have different supported vector types." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 104 + }, + "name": "supportedVectorType", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Bedrock Agents can use this model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 62 + }, + "name": "supportsAgents", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Can be used with a Cross-Region Inference Profile." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 86 + }, + "name": "supportsCrossRegion", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Bedrock Knowledge Base can use this model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 81 + }, + "name": "supportsKnowledgeBase", + "optional": true, + "type": { + "primitive": "boolean" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No vector dimensions specified", + "remarks": "Only applicable for embedding models.", + "stability": "experimental", + "summary": "Embedding models have different vector dimensions." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 97 + }, + "name": "vectorDimensions", + "optional": true, + "type": { + "primitive": "number" + } + } + ], + "symbolId": "bedrock/models:BedrockFoundationModelProps" + }, + "@aws-cdk/aws-bedrock-alpha.CustomOrchestration": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Configuration for custom orchestration of the agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/orchestration.ts", + "line": 19 + }, + "name": "CustomOrchestration", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The Lambda function to use for custom orchestration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/orchestration.ts", + "line": 23 + }, + "name": "executor", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor" + } + } + ], + "symbolId": "bedrock/agents/orchestration:CustomOrchestration" + }, + "@aws-cdk/aws-bedrock-alpha.CustomParserProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Properties for configuring a custom Lambda parser for prompt overrides." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.CustomParserProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 173 + }, + "name": "CustomParserProps", + "properties": [ + { + "abstract": true, + "docs": { + "default": "undefined - No custom parser is used", + "stability": "experimental", + "summary": "Lambda function to use as custom parser." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 178 + }, + "name": "parser", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - No custom prompt step configurations", + "remarks": "At least one of the steps must make use of the custom parser.", + "stability": "experimental", + "summary": "Prompt step configurations." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 184 + }, + "name": "steps", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser" + }, + "kind": "array" + } + } + } + ], + "symbolId": "bedrock/agents/prompt-override:CustomParserProps" + }, + "@aws-cdk/aws-bedrock-alpha.IAgent": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Represents an Agent, either created with CDK or imported." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent", + "interfaces": [ + "aws-cdk-lib.IResource", + "aws-cdk-lib.aws_iam.IGrantable" + ], + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 38 + }, + "methods": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Grant invoke permissions on this agent to an IAM principal." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 65 + }, + "name": "grantInvoke", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Return the CloudWatch metric for agent count." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 75 + }, + "name": "metricCount", + "parameters": [ + { + "name": "props", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_cloudwatch.MetricOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_cloudwatch.Metric" + } + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Defines a CloudWatch event rule triggered by agent events." + }, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 70 + }, + "name": "onEvent", + "parameters": [ + { + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "name": "options", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_events.OnEventOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_events.Rule" + } + } + } + ], + "name": "IAgent", + "properties": [ + { + "abstract": true, + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The ARN of the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 43 + }, + "name": "agentArn", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "custom": { + "attribute": "true" + }, + "stability": "experimental", + "summary": "The ID of the Agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 48 + }, + "name": "agentId", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The IAM role associated to the agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 52 + }, + "name": "role", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IRole" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Optional KMS encryption key associated with this agent." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 56 + }, + "name": "kmsKey", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_kms.IKey" + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "When this agent was last updated." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent.ts", + "line": 60 + }, + "name": "lastUpdated", + "optional": true, + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent:IAgent" + }, + "@aws-cdk/aws-bedrock-alpha.IAgentAlias": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Represents an Agent Alias, either created with CDK or imported." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", + "interfaces": [ + "aws-cdk-lib.IResource" + ], + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 27 + }, + "methods": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Grant the given principal identity permissions to perform actions on this agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 46 + }, + "name": "grant", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + }, + { + "name": "actions", + "type": { + "primitive": "string" + }, + "variadic": true + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + }, + "variadic": true + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Grant the given identity permissions to get the agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 56 + }, + "name": "grantGet", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Grant the given identity permissions to invoke the agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 51 + }, + "name": "grantInvoke", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + }, + { + "abstract": true, + "docs": { + "remarks": "Requires that there exists at least one CloudTrail Trail in your account\nthat captures the event. This method will not create the Trail.", + "stability": "experimental", + "summary": "Define an EventBridge rule that triggers when something happens to this agent alias." + }, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 67 + }, + "name": "onCloudTrailEvent", + "parameters": [ + { + "docs": { + "summary": "The id of the rule." + }, + "name": "id", + "type": { + "primitive": "string" + } + }, + { + "docs": { + "summary": "Options for adding the rule." + }, + "name": "options", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_events.OnEventOptions" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_events.Rule" + } + } + } + ], + "name": "IAgentAlias", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The underlying agent for this alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 41 + }, + "name": "agent", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" + } + }, + { + "abstract": true, + "docs": { + "example": "`arn:aws:bedrock:us-east-1:123456789012:agent-alias/DNCJJYQKSU/TCLCITFZTN`", + "stability": "experimental", + "summary": "The ARN of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 37 + }, + "name": "aliasArn", + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "example": "`TCLCITFZTN`", + "stability": "experimental", + "summary": "The unique identifier of the agent alias." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/agent-alias.ts", + "line": 32 + }, + "name": "aliasId", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/agent-alias:IAgentAlias" + }, + "@aws-cdk/aws-bedrock-alpha.IInvokable": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "This can be a Foundational Model,\na Custom Model, or an Inference Profile.", + "stability": "experimental", + "summary": "Represents an Amazon Bedrock abstraction on which you can run the `Invoke` API." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 41 + }, + "methods": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "Gives the appropriate policies to invoke and use the invokable abstraction." + }, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 50 + }, + "name": "grantInvoke", + "parameters": [ + { + "name": "grantee", + "type": { + "fqn": "aws-cdk-lib.aws_iam.IGrantable" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_iam.Grant" + } + } + } + ], + "name": "IInvokable", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The ARN of the Bedrock invokable abstraction." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 45 + }, + "name": "invokableArn", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/models:IInvokable" + }, + "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "LLM inference configuration." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 60 + }, + "name": "InferenceConfiguration", + "properties": [ + { + "abstract": true, + "docs": { + "remarks": "Integer\n\nmin 0\nmax 4096", + "stability": "experimental", + "summary": "The maximum number of tokens to generate in the response." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 115 + }, + "name": "maximumLength", + "type": { + "primitive": "number" + } + }, + { + "abstract": true, + "docs": { + "remarks": "A stop sequence is a sequence of characters that\ncauses the model to stop generating the response.\n\nlength 0-4", + "stability": "experimental", + "summary": "A list of stop sequences." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 106 + }, + "name": "stopSequences", + "type": { + "collection": { + "elementtype": { + "primitive": "string" + }, + "kind": "array" + } + } + }, + { + "abstract": true, + "docs": { + "remarks": "A lower value makes the model more likely to choose\nhigher-probability options, while a higher value makes the model more\nlikely to choose lower-probability options.\n\nFloating point\n\nmin 0\nmax 1", + "stability": "experimental", + "summary": "The likelihood of the model selecting higher-probability options while generating a response." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 72 + }, + "name": "temperature", + "type": { + "primitive": "number" + } + }, + { + "abstract": true, + "docs": { + "remarks": "The value that you set for\ntopK is the number of most-likely candidates from which the model chooses\nthe next token in the sequence. For example, if you set topK to 50, the\nmodel selects the next token from among the top 50 most likely choices.\n\nInteger\n\nmin 0\nmax 500", + "stability": "experimental", + "summary": "While generating a response, the model determines the probability of the following token at each point of generation." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 99 + }, + "name": "topK", + "type": { + "primitive": "number" + } + }, + { + "abstract": true, + "docs": { + "remarks": "The value that you set for\nTop P determines the number of most-likely candidates from which the model\nchooses the next token in the sequence. For example, if you set topP to\n80, the model only selects the next token from the top 80% of the\nprobability distribution of next tokens.\n\nFloating point\n\nmin 0\nmax 1", + "stability": "experimental", + "summary": "While generating a response, the model determines the probability of the following token at each point of generation." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 86 + }, + "name": "topP", + "type": { + "primitive": "number" + } + } + ], + "symbolId": "bedrock/agents/prompt-override:InferenceConfiguration" + }, + "@aws-cdk/aws-bedrock-alpha.InlineApiSchema": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "@aws-cdk/aws-bedrock-alpha.ApiSchema", + "docs": { + "remarks": "The schema can be provided directly as a string in either JSON or YAML format.", + "stability": "experimental", + "summary": "Class to define an API Schema from an inline string." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 89 + }, + "parameters": [ + { + "name": "schema", + "type": { + "primitive": "string" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 88 + }, + "name": "InlineApiSchema", + "symbolId": "bedrock/agents/api-schema:InlineApiSchema" + }, + "@aws-cdk/aws-bedrock-alpha.Memory": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "Enables conversational context retention\nacross multiple sessions through session identifiers. Memory context is stored with unique\nmemory IDs per user, allowing access to conversation history and summaries. Supports viewing\nstored sessions and clearing memory.", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html", + "stability": "experimental", + "summary": "Memory class for managing Bedrock Agent memory configurations." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.Memory", + "initializer": { + "docs": { + "stability": "experimental" + } + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 62 + }, + "methods": [ + { + "docs": { + "returns": "Memory configuration object", + "stability": "experimental", + "summary": "Creates a session summary memory with custom configuration." + }, + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 74 + }, + "name": "sessionSummary", + "parameters": [ + { + "docs": { + "summary": "Optional memory configuration properties." + }, + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps" + } + } + ], + "returns": { + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.MemoryConfigurationProperty" + } + }, + "static": true + } + ], + "name": "Memory", + "properties": [ + { + "const": true, + "docs": { + "default": "memoryDuration=Duration.days(30), maxRecentSessions=20", + "stability": "experimental", + "summary": "Returns session summary memory with default configuration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 67 + }, + "name": "SESSION_SUMMARY", + "static": true, + "type": { + "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.MemoryConfigurationProperty" + } + } + ], + "symbolId": "bedrock/agents/memory:Memory" + }, + "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Contains details about the Lambda function containing the orchestration logic carried out upon invoking the custom orchestration." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor", + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/orchestration-executor.ts", + "line": 24 + }, + "methods": [ + { + "docs": { + "stability": "experimental", + "summary": "Defines an orchestration executor with a Lambda function containing the business logic." + }, + "locationInModule": { + "filename": "bedrock/agents/orchestration-executor.ts", + "line": 29 + }, + "name": "fromlambdaFunction", + "parameters": [ + { + "docs": { + "summary": "- Lambda function to be called by the orchestration." + }, + "name": "lambdaFunction", + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor" + } + }, + "static": true + } + ], + "name": "OrchestrationExecutor", + "properties": [ + { + "docs": { + "remarks": "This function is called when the agent needs to make decisions about action execution.", + "stability": "experimental", + "summary": "The Lambda function that contains the custom orchestration logic." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/orchestration-executor.ts", + "line": 37 + }, + "name": "lambdaFunction", + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + } + ], + "symbolId": "bedrock/agents/orchestration-executor:OrchestrationExecutor" + }, + "@aws-cdk/aws-bedrock-alpha.OrchestrationType": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "Enum for orchestration types available for agents." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType", + "kind": "enum", + "locationInModule": { + "filename": "bedrock/agents/orchestration.ts", + "line": 29 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "Default orchestration by the agent." + }, + "name": "DEFAULT" + }, + { + "docs": { + "stability": "experimental", + "summary": "Custom orchestration using Lambda." + }, + "name": "CUSTOM_ORCHESTRATION" + } + ], + "name": "OrchestrationType", + "symbolId": "bedrock/agents/orchestration:OrchestrationType" + }, + "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "stability": "experimental", + "summary": "AWS Defined signatures for enabling certain capabilities in your agent." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature", + "initializer": { + "docs": { + "stability": "experimental", + "summary": "Constructor should be used as a temporary solution when a new signature is supported but its implementation in CDK hasn't been added yet." + }, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 48 + }, + "parameters": [ + { + "docs": { + "summary": "The AWS-defined signature value for this action group capability." + }, + "name": "value", + "type": { + "primitive": "string" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 34 + }, + "methods": [ + { + "docs": { + "remarks": "Used when configuring the action group in CloudFormation.", + "stability": "experimental", + "summary": "Returns the string representation of the signature value." + }, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 59 + }, + "name": "toString", + "returns": { + "type": { + "primitive": "string" + } + } + } + ], + "name": "ParentActionGroupSignature", + "properties": [ + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Signature that allows your agent to generate, run, and troubleshoot code when trying to complete a task." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 42 + }, + "name": "CODE_INTERPRETER", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" + } + }, + { + "const": true, + "docs": { + "stability": "experimental", + "summary": "Signature that allows your agent to request the user for additional information when trying to complete a task." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 38 + }, + "name": "USER_INPUT", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" + } + }, + { + "docs": { + "stability": "experimental", + "summary": "The AWS-defined signature value for this action group capability." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/action-group.ts", + "line": 52 + }, + "name": "value", + "type": { + "primitive": "string" + } + } + ], + "symbolId": "bedrock/agents/action-group:ParentActionGroupSignature" + }, + "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "This allows customizing how the agent processes inputs,\nmakes decisions, and generates responses.", + "stability": "experimental", + "summary": "Configuration for overriding prompt templates and behaviors in different parts of an agent's sequence." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration", + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 192 + }, + "methods": [ + { + "docs": { + "remarks": "Use this method when you want to override prompts without using a custom parser.", + "returns": "A new PromptOverrideConfiguration instance", + "stability": "experimental", + "summary": "Creates a PromptOverrideConfiguration from a list of prompt step configurations." + }, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 199 + }, + "name": "fromSteps", + "parameters": [ + { + "docs": { + "summary": "The prompt step configurations to use." + }, + "name": "steps", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration" + }, + "kind": "array" + } + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" + } + }, + "static": true + }, + { + "docs": { + "stability": "experimental", + "summary": "Creates a PromptOverrideConfiguration with a custom Lambda parser function." + }, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 209 + }, + "name": "withCustomParser", + "parameters": [ + { + "docs": { + "remarks": "At least one of the steps must make use of the custom parser.", + "summary": "Configuration including: - `parser`: Lambda function to use as custom parser - `steps`: prompt step configurations." + }, + "name": "props", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.CustomParserProps" + } + } + ], + "returns": { + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" + } + }, + "static": true + } + ], + "name": "PromptOverrideConfiguration", + "properties": [ + { + "docs": { + "remarks": "The Lambda parser processes and interprets the raw foundation model output.\nIt receives an input event with:\n- messageVersion: Version of message format (1.0)\n- agent: Info about the agent (name, id, alias, version)\n- invokeModelRawResponse: Raw model output to parse\n- promptType: Type of prompt being parsed\n- overrideType: Type of override (OUTPUT_PARSER)\n\nThe Lambda must return a response that the agent uses for next actions.", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/lambda-parser.html", + "stability": "experimental", + "summary": "The custom Lambda parser function to use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 227 + }, + "name": "parser", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.aws_lambda.IFunction" + } + }, + { + "docs": { + "default": "- No prompt configuration will be overridden.", + "stability": "experimental", + "summary": "The prompt configurations to override the prompt templates in the agent sequence." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 234 + }, + "name": "steps", + "optional": true, + "type": { + "collection": { + "elementtype": { + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser" + }, + "kind": "array" + } + } + } + ], + "symbolId": "bedrock/agents/prompt-override:PromptOverrideConfiguration" + }, + "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Contains configurations to override a prompt template in one part of an agent sequence." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 121 + }, + "name": "PromptStepConfiguration", + "properties": [ + { + "abstract": true, + "docs": { + "stability": "experimental", + "summary": "The step in the agent sequence where to set a specific prompt configuration." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 125 + }, + "name": "stepType", + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.AgentStepType" + } + }, + { + "abstract": true, + "docs": { + "default": "- The default prompt template will be used.", + "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-placeholders.html", + "stability": "experimental", + "summary": "The custom prompt template to be used." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 142 + }, + "name": "customPromptTemplate", + "optional": true, + "type": { + "primitive": "string" + } + }, + { + "abstract": true, + "docs": { + "default": "- The agent's default foundation model will be used.", + "remarks": "This allows using different models for different steps in the agent sequence.", + "stability": "experimental", + "summary": "The foundation model to use for this specific prompt step." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 154 + }, + "name": "foundationModel", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" + } + }, + { + "abstract": true, + "docs": { + "default": "undefined - Default inference configuration will be used", + "stability": "experimental", + "summary": "The inference configuration parameters to use." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 147 + }, + "name": "inferenceConfig", + "optional": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration" + } + }, + { + "abstract": true, + "docs": { + "default": "- The default state for each step type is as follows.\n\nPRE_PROCESSING – ENABLED\nORCHESTRATION – ENABLED\nKNOWLEDGE_BASE_RESPONSE_GENERATION – ENABLED\nPOST_PROCESSING – DISABLED", + "stability": "experimental", + "summary": "Whether to enable or skip this step in the agent sequence." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 135 + }, + "name": "stepEnabled", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "bedrock/agents/prompt-override:PromptStepConfiguration" + }, + "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "remarks": "Extends the base PromptStepConfiguration with custom parser options.", + "stability": "experimental", + "summary": "Configuration for a prompt step that can use a custom Lambda parser." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser", + "interfaces": [ + "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration" + ], + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 161 + }, + "name": "PromptStepConfigurationCustomParser", + "properties": [ + { + "abstract": true, + "docs": { + "default": "- false", + "stability": "experimental", + "summary": "Whether to use the custom Lambda parser defined for the sequence." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/prompt-override.ts", + "line": 167 + }, + "name": "useCustomParser", + "optional": true, + "type": { + "primitive": "boolean" + } + } + ], + "symbolId": "bedrock/agents/prompt-override:PromptStepConfigurationCustomParser" + }, + "@aws-cdk/aws-bedrock-alpha.S3ApiSchema": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "base": "@aws-cdk/aws-bedrock-alpha.ApiSchema", + "docs": { + "stability": "experimental", + "summary": "Class to define an API Schema from an S3 object." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.S3ApiSchema", + "initializer": { + "docs": { + "stability": "experimental" + }, + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 110 + }, + "parameters": [ + { + "name": "location", + "type": { + "fqn": "aws-cdk-lib.aws_s3.Location" + } + } + ] + }, + "kind": "class", + "locationInModule": { + "filename": "bedrock/agents/api-schema.ts", + "line": 109 + }, + "name": "S3ApiSchema", + "symbolId": "bedrock/agents/api-schema:S3ApiSchema" + }, + "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "datatype": true, + "docs": { + "stability": "experimental", + "summary": "Properties for SessionSummaryConfiguration." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps", + "kind": "interface", + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 40 + }, + "name": "SessionSummaryMemoryProps", + "properties": [ + { + "abstract": true, + "docs": { + "default": "20", + "stability": "experimental", + "summary": "Maximum number of recent session summaries to include (min 1)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 51 + }, + "name": "maxRecentSessions", + "optional": true, + "type": { + "primitive": "number" + } + }, + { + "abstract": true, + "docs": { + "default": "Duration.days(30)", + "stability": "experimental", + "summary": "Duration for which session summaries are retained (between 1 and 365 days)." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/agents/memory.ts", + "line": 45 + }, + "name": "memoryDuration", + "optional": true, + "type": { + "fqn": "aws-cdk-lib.Duration" + } + } + ], + "symbolId": "bedrock/agents/memory:SessionSummaryMemoryProps" + }, + "@aws-cdk/aws-bedrock-alpha.VectorType": { + "assembly": "@aws-cdk/aws-bedrock-alpha", + "docs": { + "remarks": "The model must support the specified data type for vector embeddings. Floating-point (float32)\nis the default data type, and is supported by most models for vector embeddings. See Supported\nembeddings models for information on the available models and their vector data types.", + "stability": "experimental", + "summary": "The data type for the vectors when using a model to convert text into vector embeddings." + }, + "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType", + "kind": "enum", + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 25 + }, + "members": [ + { + "docs": { + "stability": "experimental", + "summary": "`FLOATING_POINT` convert the data to floating-point (float32) vector embeddings (more precise, but more costly)." + }, + "name": "FLOATING_POINT" + }, + { + "docs": { + "stability": "experimental", + "summary": "`BINARY` convert the data to binary vector embeddings (less precise, but less costly)." + }, + "name": "BINARY" + } + ], + "name": "VectorType", + "symbolId": "bedrock/models:VectorType" + } + }, + "version": "0.0.0", + "fingerprint": "y4Ek1Lh3YA1jEm2X2QwMkZCc/w0FENetidN+N243fr4=" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.npmignore b/packages/@aws-cdk/aws-bedrock-alpha/.npmignore new file mode 100644 index 0000000000000..7782bcab1dc19 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/.npmignore @@ -0,0 +1,18 @@ +dist +.LAST_PACKAGE +*.tsbuildinfo +test/ +tsconfig.json +.eslintrc.js +coverage +.nyc_output +*.tgz +*.ts +!*.d.ts +!*.js +!*.lit.ts +!.jsii +.LAST_BUILD +*.snk +junit.xml +**/cdk.out diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index b9b59dde1cd13..d3ebeb6fd3daf 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -4,11 +4,13 @@ --- -![Stability: Experimental](https://img.shields.io/badge/stability-Experimental-important.svg?style=for-the-badge) +![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) -> All classes are under active development and subject to non-backward compatible changes or removal in any -> future version. These are not subject to the [Semantic Versioning](https://semver.org/) model. -> This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package. +> The APIs of higher level constructs in this module are experimental and under active development. +> They are subject to non-backward compatible changes or removal in any future version. These are +> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be +> announced in the release notes. This means that while you may use them, you may need to update +> your source code when upgrading to a newer version of this package. --- @@ -65,7 +67,7 @@ Amazon Bedrock Agents allow generative AI applications to automate complex, mult The following example creates an Agent with a simple instruction and default prompts: -```ts +```ts fixture=default const agent = new bedrock.Agent(this, 'Agent', { foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, instruction: 'You are a helpful and friendly agent that answers questions about literature.', @@ -78,13 +80,14 @@ An action group defines functions your agent can call. The functions are Lambda Example: -```ts -const actionGroupFunction = new lambda_python.PythonFunction(this, 'ActionGroupFunction', { +```ts fixture=default +const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { runtime: lambda.Runtime.PYTHON_3_12, - entry: path.join(__dirname, '../lambda/action-group'), + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), }); -const actionGroup = new AgentActionGroup({ +const actionGroup = new bedrock.AgentActionGroup({ name: 'query-library', description: 'Use these functions to get information about the books in the library.', executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction), @@ -92,6 +95,11 @@ const actionGroup = new AgentActionGroup({ apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')), }); +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); + agent.addActionGroup(actionGroup); ``` @@ -114,7 +122,7 @@ Bedrock Agents allows you to customize the prompts and LLM configuration for dif Example: -```ts +```ts fixture=default const agent = new bedrock.Agent(this, 'Agent', { foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, instruction: 'You are a helpful assistant.', @@ -137,7 +145,7 @@ const agent = new bedrock.Agent(this, 'Agent', { You can also use a custom Lambda parser to process the model's output: -```ts +```ts fixture=default const parserFunction = new lambda.Function(this, 'ParserFunction', { runtime: lambda.Runtime.PYTHON_3_10, handler: 'index.handler', @@ -166,14 +174,14 @@ Agents can maintain context across multiple sessions and recall past interaction Example: -```typescript -const agent = new Agent(this, 'MyAgent', { - name: 'MyAgent', +```ts fixture=default +const agent = new bedrock.Agent(this, 'MyAgent', { + agentName: 'MyAgent', instruction: 'Your instruction here', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, memory: Memory.sessionSummary({ maxRecentSessions: 10, // Keep the last 10 session summaries - memoryDurationDays: 20, // Retain summaries for 20 days + memoryDuration: Duration.days(20), // Retain summaries for 20 days }), }); ``` @@ -184,28 +192,26 @@ Agent Collaboration enables multiple Bedrock Agents to work together on complex Example: -```typescript +```ts fixture=default // Create a specialized agent -const customerSupportAgent = new Agent(this, 'CustomerSupportAgent', { - name: 'CustomerSupportAgent', +const customerSupportAgent = new bedrock.Agent(this, 'CustomerSupportAgent', { instruction: 'You specialize in answering customer support questions.', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, }); // Create an agent alias -const customerSupportAlias = new AgentAlias(this, 'CustomerSupportAlias', { +const customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias', { agent: customerSupportAgent, - aliasName: 'production', + agentAliasName: 'production', }); // Create a main agent that collaborates with the specialized agent -const mainAgent = new Agent(this, 'MainAgent', { - name: 'MainAgent', +const mainAgent = new bedrock.Agent(this, 'MainAgent', { instruction: 'You route specialized questions to other agents.', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, - agentCollaboration: AgentCollaboratorType.SUPERVISOR, + agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, agentCollaborators: [ - new bedrock.AgentCollaborator({ + new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', { agentAlias: customerSupportAlias, collaborationInstruction: 'Route customer support questions to this agent.', collaboratorName: 'CustomerSupport', @@ -221,20 +227,19 @@ Custom Orchestration allows you to override the default agent orchestration flow Example: -```typescript +```ts fixture=default const orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', { runtime: lambda.Runtime.PYTHON_3_10, handler: 'index.handler', code: lambda.Code.fromAsset('lambda/orchestration'), }); -const agent = new Agent(this, 'CustomOrchestrationAgent', { - name: 'CustomOrchestrationAgent', +const agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', { instruction: 'You are a helpful assistant with custom orchestration logic.', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, - orchestrationType: OrchestrationType.CUSTOM_ORCHESTRATION, + orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, customOrchestration: { - executor: OrchestrationExecutor.fromlambdaFunction(orchestrationFunction), + executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction), }, }); ``` @@ -243,11 +248,20 @@ const agent = new Agent(this, 'CustomOrchestrationAgent', { After you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases. +To deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias. + +By default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version. + Example: -```ts +```ts fixture=default +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); + const agentAlias = new bedrock.AgentAlias(this, 'myalias', { - aliasName: 'production', + agentAliasName: 'production', agent: agent, agentVersion: '1', // optional description: 'Production version of my agent' diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts index edb927b3b7147..89f94ef4b536b 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts @@ -15,6 +15,16 @@ import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { ActionGroupExecutor } from './api-executor'; import { ApiSchema } from './api-schema'; +/** + * Error thrown when action group validation fails. + */ +class ActionGroupValidationError extends Error { + constructor(message: string) { + super(message); + this.name = 'ActionGroupValidationError'; + } +} + /****************************************************************************** * Signatures *****************************************************************************/ @@ -34,7 +44,18 @@ export class ParentActionGroupSignature { * Constructor should be used as a temporary solution when a new signature is supported * but its implementation in CDK hasn't been added yet. */ - constructor(public readonly value: string) {} + + constructor( + /** + * The AWS-defined signature value for this action group capability. + */ + public readonly value: string, + ) {} + + /** + * Returns the string representation of the signature value. + * Used when configuring the action group in CloudFormation. + */ public toString() { return this.value; } @@ -51,21 +72,21 @@ export interface AgentActionGroupProps { /** * A description of the action group. * - * @default - No description + * @default undefined - No description is provided */ readonly description?: string; /** - * The API Schema + * The API Schema defining the functions available to the agent. * - * @default - No API Schema + * @default undefined - No API Schema is provided */ readonly apiSchema?: ApiSchema; /** - * The action group executor. + * The action group executor that implements the API functions. * - * @default - No executor + * @default undefined - No executor is provided */ readonly executor?: ActionGroupExecutor; @@ -73,27 +94,31 @@ export interface AgentActionGroupProps { * Specifies whether the action group is available for the agent to invoke or * not when sending an InvokeAgent request. * - * @default true + * @default true - The action group is enabled */ readonly enabled?: boolean; /** * Specifies whether to delete the resource even if it's in use. * - * @default false + * @default false - The resource will not be deleted if it's in use */ readonly forceDelete?: boolean; /** * Defines functions that each define parameters that the agent needs to invoke from the user. - * NO L2 yet as this doesn't make much sense IMHO + * NO L2 yet as this doesn't make much sense IMHO. + * + * @default undefined - No function schema is provided */ readonly functionSchema?: CfnAgent.FunctionSchemaProperty; /** * The AWS Defined signature for enabling certain capabilities in your agent. * When this property is specified, you must leave the description, apiSchema, - * and actionGroupExecutor fields blank for this action group + * and actionGroupExecutor fields blank for this action group. + * + * @default undefined - No parent action group signature is provided */ readonly parentActionGroupSignature?: ParentActionGroupSignature; } @@ -187,7 +212,7 @@ export class AgentActionGroup { private validateProps(props: AgentActionGroupProps) { if (props.parentActionGroupSignature && (props.description || props.apiSchema || props.executor)) { - throw new Error( + throw new ActionGroupValidationError( 'When parentActionGroupSignature is specified, you must leave the description, ' + 'apiSchema, and actionGroupExecutor fields blank for this action group', ); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts index 580f66cf25471..5436afc583351 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts @@ -139,10 +139,11 @@ export abstract class AgentAliasBase extends Resource implements IAgentAlias { export interface AgentAliasProps { /** * The name for the agent alias. + * This will be used as the physical name of the agent alias. * * @default - "latest-{hash}" */ - readonly aliasName?: string; + readonly agentAliasName?: string; /** * The version of the agent to associate with the agent alias. * @@ -155,6 +156,7 @@ export interface AgentAliasProps { readonly agent: IAgent; /** * Description for the agent alias. + * @default undefined - No description is provided */ readonly description?: string; } @@ -172,6 +174,7 @@ export interface AgentAliasAttributes { readonly aliasId: string; /** * The name of the agent alias. + * @default undefined - No alias name is provided */ readonly aliasName?: string; /** @@ -223,6 +226,10 @@ export class AgentAlias extends AgentAliasBase { public readonly agent: IAgent; public readonly aliasId: string; public readonly aliasArn: string; + /** + * The name of the agent alias. + * This is either provided by the user or generated from a hash. + */ public readonly aliasName: string; // ------------------------------------------------------ @@ -238,13 +245,13 @@ export class AgentAlias extends AgentAliasBase { // Set properties or defaults // ------------------------------------------------------ // see https://github.com/awslabs/generative-ai-cdk-constructs/issues/947 - this.aliasName = props.aliasName ?? `latest-${hash}`; + this.aliasName = props.agentAliasName ?? `latest-${hash}`; this.agent = props.agent; // ------------------------------------------------------ // L1 Instantiation // ------------------------------------------------------ - const alias = new bedrock.CfnAgentAlias(this, `MyCfnAgentAlias+${hash}`, { + const alias = new bedrock.CfnAgentAlias(this, 'Resource', { agentAliasName: this.aliasName, agentId: this.agent.agentId, description: props.description, diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts index 5421781c647f9..0e62715fe15eb 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -13,6 +13,8 @@ import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; +import { Construct } from 'constructs'; +import { ValidationError } from 'aws-cdk-lib'; import { IAgentAlias } from './agent-alias'; /** @@ -32,22 +34,23 @@ export enum AgentCollaboratorType { /** * Supervisor router. */ - SUPERVISOR_ROUTER = 'SUPERVISOR_ROUTER' + SUPERVISOR_ROUTER = 'SUPERVISOR_ROUTER', } /** * Enum for collaborator's relay conversation history types. + * @internal */ export enum RelayConversationHistoryType { /** - * Sending to the collaborator. - */ + * Sending to the collaborator. + */ TO_COLLABORATOR = 'TO_COLLABORATOR', /** - * Disabling relay of conversation history to the collaborator. - */ - DISABLED = 'DISABLED' + * Disabling relay of conversation history to the collaborator. + */ + DISABLED = 'DISABLED', } /****************************************************************************** @@ -82,10 +85,14 @@ export interface AgentCollaboratorProps { * DEF - Agent Collaborator Class *****************************************************************************/ -export class AgentCollaborator { +export class AgentCollaborator extends Construct { // ------------------------------------------------------ // Attributes // ------------------------------------------------------ + /** + * The agent alias that this collaborator represents. + * This is the agent that will be called upon for collaboration. + */ public readonly agentAlias: IAgentAlias; /** @@ -105,8 +112,8 @@ export class AgentCollaborator { */ public readonly relayConversationHistory?: boolean; - - public constructor(props: AgentCollaboratorProps) { + public constructor(scope: Construct, id: string, props: AgentCollaboratorProps) { + super(scope, id); // Validate Props this.validateProps(props); @@ -122,26 +129,26 @@ export class AgentCollaborator { private validateProps(props: AgentCollaboratorProps) { // Validate required properties if (!props.agentAlias) { - throw new Error('agentAlias is required for AgentCollaborator'); + throw new ValidationError('agentAlias is required for AgentCollaborator', this); } if (props.agentAlias.aliasId === 'TSTALIASID') { - throw new Error('Agent cannot collaborate with TSTALIASID alias of another agent. Use a different alias to collaborate with.'); + throw new ValidationError('Agent cannot collaborate with TSTALIASID alias of another agent. Use a different alias to collaborate with.', this); } if (!props.collaborationInstruction || props.collaborationInstruction.trim() === '') { - throw new Error('collaborationInstruction is required and cannot be empty for AgentCollaborator'); + throw new ValidationError('collaborationInstruction is required and cannot be empty for AgentCollaborator', this); } if (!props.collaboratorName || props.collaboratorName.trim() === '') { - throw new Error('collaboratorName is required and cannot be empty for AgentCollaborator'); + throw new ValidationError('collaboratorName is required and cannot be empty for AgentCollaborator', this); } } /** - * Format as CFN properties - * - * @internal This is an internal core function and should not be called directly. - */ + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ public _render(): CfnAgent.AgentCollaboratorProperty { return { agentDescriptor: { @@ -154,12 +161,12 @@ export class AgentCollaborator { } /** - * Grants the specified principal permissions to get the agent alias and invoke the agent - * from this collaborator. - * - * @param grantee The principal to grant permissions to - * @returns The Grant object - */ + * Grants the specified principal permissions to get the agent alias and invoke the agent + * from this collaborator. + * + * @param grantee The principal to grant permissions to + * @returns The Grant object + */ public grant(grantee: IGrantable): Grant { const grant1 = this.agentAlias.grantInvoke(grantee); const combinedGrant = grant1.combine(this.agentAlias.grantGet(grantee)); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 2b22c6fcbd874..8764a703a2fe0 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -11,7 +11,8 @@ * and limitations under the License. */ -import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token } from 'aws-cdk-lib/core'; +import * as crypto from 'crypto'; +import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError } from 'aws-cdk-lib/core'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as events from 'aws-cdk-lib/aws-events'; @@ -24,8 +25,6 @@ import { AgentAlias, IAgentAlias } from './agent-alias'; import { AgentCollaborator, AgentCollaboratorType } from './agent-collaborator'; import { PromptOverrideConfiguration } from './prompt-override'; import * as validation from './validation-helpers'; -//import { IGuardrail } from '../guardrails/guardrails'; -//import { IKnowledgeBase } from '../knowledge-bases/knowledge-base'; import { IInvokable } from '.././models'; import { Memory } from './memory'; import { OrchestrationType, CustomOrchestration } from './orchestration'; @@ -39,13 +38,11 @@ import { OrchestrationType, CustomOrchestration } from './orchestration'; export interface IAgent extends IResource, iam.IGrantable { /** * The ARN of the agent. - * @example "arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO" * @attribute */ readonly agentArn: string; /** * The ID of the Agent. - * @example "OKDSJOGKMO" * @attribute */ readonly agentId: string; @@ -90,7 +87,11 @@ export abstract class AgentBase extends Resource implements IAgent { public abstract readonly role: iam.IRole; public abstract readonly kmsKey?: kms.IKey; public abstract readonly lastUpdated?: string; - public abstract agentVersion: string; + /** + * The version of the agent. + * @attribute + */ + public abstract readonly agentVersion: string; public abstract readonly grantPrincipal: iam.IPrincipal; public grantInvoke(grantee: iam.IGrantable): iam.Grant { @@ -134,10 +135,11 @@ export abstract class AgentBase extends Resource implements IAgent { export interface AgentProps { /** * The name of the agent. + * This will be used as the physical name of the agent. * * @default - A name is generated by CDK. */ - readonly name?: string; + readonly agentName?: string; /** * The instruction used by the agent. This determines how the agent will perform his task. * This instruction must have a minimum of 40 characters. @@ -184,6 +186,7 @@ export interface AgentProps { readonly description?: string; /** * The Action Groups associated with the agent. + * @default - Only default action groups (UserInput and CodeInterpreter) are added */ readonly actionGroups?: AgentActionGroup[]; @@ -255,28 +258,30 @@ export interface AgentProps { export interface AgentAttributes { /** * The ARN of the agent. - * @example "arn:aws:bedrock:us-east-1:123456789012:agent/OKDSJOGKMO" * @attribute */ readonly agentArn: string; /** * The ARN of the IAM role associated to the agent. - * @example "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" * @attribute */ readonly roleArn: string; /** * Optional KMS encryption key associated with this agent + * @default undefined - An AWS managed key is used */ readonly kmsKeyArn?: string; + /** * When this agent was last updated. + * @default undefined - No last updated timestamp is provided */ readonly lastUpdated?: string; /** * The agent version. If no explicit versions have been created, - * leave this empty to use the DRAFT version. Otherwise, use the + * leave this empty to use the DRAFT version. Otherwise, use the * version number (e.g. 1). + * @default 'DRAFT' */ readonly agentVersion?: string; } @@ -287,11 +292,11 @@ export interface AgentAttributes { * Class to create (or import) an Agent with CDK. * @cloudformationResource AWS::Bedrock::Agent */ -export class Agent extends AgentBase { +export class Agent extends AgentBase implements IAgent { /** * Static Method for importing an existing Bedrock Agent. */ - public static fromAgentAttrs(scope: Construct, id: string, attrs: AgentAttributes): IAgent { + public static fromAgentAttributes(scope: Construct, id: string, attrs: AgentAttributes): IAgent { class Import extends AgentBase { public readonly agentArn = attrs.agentArn; public readonly agentId = Arn.split(attrs.agentArn, ArnFormat.SLASH_RESOURCE_NAME).resourceName!; @@ -310,16 +315,19 @@ export class Agent extends AgentBase { // ------------------------------------------------------ /** * The unique identifier for the agent + * @attribute */ public readonly agentId: string; /** * The ARN of the agent. + * @attribute */ public readonly agentArn: string; /** * The version of the agent. + * @attribute */ - public agentVersion: string; + public readonly agentVersion: string; /** * The IAM role associated to the agent. */ @@ -376,10 +384,12 @@ export class Agent extends AgentBase { public readonly forceDelete: boolean; /** * Agent collaboration type. + * @attribute */ public readonly agentCollaboration?: AgentCollaboratorType; /** * Agent collaborators. + * @attribute */ public readonly agentCollaborators?: AgentCollaborator[]; /** @@ -439,26 +449,26 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // Validate props // ------------------------------------------------------ - if (props.instruction !== undefined && - !Token.isUnresolved(props.instruction) && + if (props.instruction !== undefined && + !Token.isUnresolved(props.instruction) && props.instruction.length < 40) { - throw new Error('instruction must be at least 40 characters'); + throw new ValidationError('instruction must be at least 40 characters', this); } // Validate orchestration configuration if (props.orchestrationType === OrchestrationType.CUSTOM_ORCHESTRATION && !props.customOrchestration) { - throw new Error('customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION'); + throw new ValidationError('customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION', this); } if (props.customOrchestration && props.orchestrationType !== OrchestrationType.CUSTOM_ORCHESTRATION) { - throw new Error('customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION'); + throw new ValidationError('customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION', this); } // ------------------------------------------------------ // Set properties and defaults // ------------------------------------------------------ this.name = - props.name ?? this.generatePhysicalName() + this.ROLE_NAME_SUFFIX; + props.agentName ?? this.generatePhysicalName() + this.ROLE_NAME_SUFFIX; this.idleSessionTTL = props.idleSessionTTL ?? Duration.hours(1); this.shouldPrepareAgent = props.shouldPrepareAgent ?? false; this.userInputEnabled = props.userInputEnabled ?? false; @@ -482,7 +492,7 @@ export class Agent extends AgentBase { // If existing role is provided, use it. if (props.existingRole) { this.role = props.existingRole; - this.grantPrincipal = this.role; + this.grantPrincipal = this.role; // Otherwise, create a new one } else { this.role = new iam.Role(this, 'Role', { @@ -491,7 +501,7 @@ export class Agent extends AgentBase { // ensure the role has a trust policy that allows the Bedrock service to assume the role assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com').withConditions({ StringEquals: { - 'aws:SourceAccount': { 'Ref': 'AWS::AccountId' }, + 'aws:SourceAccount': { Ref: 'AWS::AccountId' }, }, ArnLike: { 'aws:SourceArn': Stack.of(this).formatArn({ @@ -562,7 +572,7 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // L1 Instantiation // ------------------------------------------------------ - this.__resource = new bedrock.CfnAgent(this, 'AgentResource', cfnProps); + this.__resource = new bedrock.CfnAgent(this, 'Resource', cfnProps); this.agentId = this.getResourceNameAttribute(this.__resource.attrAgentId); this.agentArn = this.getResourceArnAttribute(this.__resource.attrAgentArn, { @@ -593,7 +603,7 @@ export class Agent extends AgentBase { // ------------------------------------------------------ // HELPER METHODS - addX() // ------------------------------------------------------ - + /** * Add an action group to the agent. */ @@ -686,7 +696,6 @@ export class Agent extends AgentBase { * Check if the action group is valid */ private validateActionGroup = (actionGroup: AgentActionGroup) => { - console.log('Validating action group: ', actionGroup.name); let errors: string[] = []; // Find if there is a conflicting action group name if (this.actionGroups?.find(ag => ag.name === actionGroup.name)) { @@ -695,8 +704,6 @@ export class Agent extends AgentBase { return errors; }; - - private generatePhysicalNameHash( scope: IConstruct, prefix: string, @@ -711,7 +718,7 @@ export class Agent extends AgentBase { const objectToHash = (obj: any): string => { if (obj === undefined) { return ''; } const jsonString = JSON.stringify(obj); - const hash = require('crypto').createHash('sha256'); + const hash = crypto.createHash('sha256'); return hash.update(jsonString).digest('hex').slice(0, 7); }; @@ -725,7 +732,7 @@ export class Agent extends AgentBase { const hash = objectToHash(destroyCreate); if (maxLength < (prefix + hash + separator).length) { - throw new Error('The prefix is longer than the maximum length.'); + throw new ValidationError('The prefix is longer than the maximum length.', this); } const uniqueName = Names.uniqueResourceName( @@ -734,7 +741,7 @@ export class Agent extends AgentBase { ); const name = `${prefix}${hash}${separator}${uniqueName}`; if (name.length > maxLength) { - throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + throw new ValidationError(`The generated name is longer than the maximum length of ${maxLength}`, this); } return lower ? name.toLowerCase() : name; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts index 9ace7a0f6640d..333417d26c008 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts @@ -42,7 +42,16 @@ export class ActionGroupExecutor { return new ActionGroupExecutor(lambdaFunction, undefined); } + /** + * The Lambda function that will be called by the action group. + * Contains the business logic for handling the action group's invocation. + */ public readonly lambdaFunction?: IFunction; + + /** + * The custom control type for the action group executor. + * Currently only supports 'RETURN_CONTROL' which returns results directly in the InvokeAgent response. + */ public readonly customControl?: string; private constructor(lambdaFunction?: IFunction, customControl?: string) { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts index 2a7d737356292..8efadefaeed00 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -50,7 +50,16 @@ export abstract class ApiSchema { }); } + /** + * The S3 location of the API schema file, if using an S3-based schema. + * Contains the bucket name and object key information. + */ public readonly s3File?: Location; + + /** + * The inline OpenAPI schema definition as a string, if using an inline schema. + * Can be in JSON or YAML format. + */ public readonly inlineSchema?: string; /** @@ -72,6 +81,10 @@ export abstract class ApiSchema { // ------------------------------------------------------ // Inline Definition // ------------------------------------------------------ +/** + * Class to define an API Schema from an inline string. + * The schema can be provided directly as a string in either JSON or YAML format. + */ export class InlineApiSchema extends ApiSchema { constructor(private readonly schema: string) { super(undefined, schema); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts index f02ebc08c7cad..007112990e153 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts @@ -11,6 +11,7 @@ * and limitations under the License. */ +import { Duration } from 'aws-cdk-lib/core'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import * as validation from './validation-helpers'; /** @@ -38,10 +39,10 @@ enum MemoryType { */ export interface SessionSummaryMemoryProps { /** - * Duration in days for which session summaries are retained (1-365) - * @default 30 + * Duration for which session summaries are retained (between 1 and 365 days) + * @default Duration.days(30) */ - readonly memoryDurationDays?: number; + readonly memoryDuration?: Duration; /** * Maximum number of recent session summaries to include (min 1) @@ -61,9 +62,9 @@ export interface SessionSummaryMemoryProps { export class Memory { /** * Returns session summary memory with default configuration. - * @default memoryDurationDays=30, maxRecentSessions=20 + * @default memoryDuration=Duration.days(30), maxRecentSessions=20 */ - public static readonly SESSION_SUMMARY = Memory.sessionSummary({ memoryDurationDays: 30, maxRecentSessions: 20 }); + public static readonly SESSION_SUMMARY = Memory.sessionSummary({ memoryDuration: Duration.days(30), maxRecentSessions: 20 }); /** * Creates a session summary memory with custom configuration. @@ -72,35 +73,31 @@ export class Memory { */ public static sessionSummary(props: SessionSummaryMemoryProps): CfnAgent.MemoryConfigurationProperty { // Do some checks - validation.throwIfInvalid(this.validateSessionSummaryMemoryProps, props); + validation.throwIfInvalid((config: SessionSummaryMemoryProps) => { + let errors: string[] = []; + + // Validate memory duration is between 1 and 365 days + if (config.memoryDuration !== undefined) { + const days = config.memoryDuration.toDays(); + if (days < 1 || days > 365) { + errors.push('memoryDuration must be between 1 and 365 days'); + } + } + if (config.maxRecentSessions !== undefined) { + if (config.maxRecentSessions < 1) { + errors.push('maxRecentSessions must be greater than 0'); + } + } + + return errors; + }, props); return { enabledMemoryTypes: [MemoryType.SESSION_SUMMARY], - storageDays: props?.memoryDurationDays ?? 30, + storageDays: props?.memoryDuration?.toDays() ?? 30, sessionSummaryConfiguration: { maxRecentSessions: props?.maxRecentSessions ?? 20, }, }; } - - /** - * Validate at synth time the configuration. - */ - private static validateSessionSummaryMemoryProps(props: SessionSummaryMemoryProps): string[] { - let errors: string[] = []; - - // Validate storage days is between 0 and 365 - if (props.memoryDurationDays !== undefined) { - if (props.memoryDurationDays < 1 || props.memoryDurationDays > 365) { - errors.push('memoryDurationDays must be between 1 and 365'); - } - } - if (props.maxRecentSessions !== undefined) { - if (props.maxRecentSessions < 1) { - errors.push('maxRecentSessions must be greater than 0'); - } - } - - return errors; - } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts index 84c08bcb31244..43beae15671de 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts @@ -30,6 +30,10 @@ export class OrchestrationExecutor { return new OrchestrationExecutor(lambdaFunction); } + /** + * The Lambda function that contains the custom orchestration logic. + * This function is called when the agent needs to make decisions about action execution. + */ public readonly lambdaFunction: IFunction; private constructor(lambdaFunction: IFunction) { @@ -46,4 +50,4 @@ export class OrchestrationExecutor { lambda: this.lambdaFunction?.functionArn, }; } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts index 222e176930e1d..3bc45ced90612 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts @@ -18,8 +18,8 @@ import { OrchestrationExecutor } from './orchestration-executor'; */ export interface CustomOrchestration { /** - * The Lambda function to use for custom orchestration. - */ + * The Lambda function to use for custom orchestration. + */ readonly executor: OrchestrationExecutor; } @@ -28,12 +28,12 @@ export interface CustomOrchestration { */ export enum OrchestrationType { /** - * Default orchestration by the agent. - */ + * Default orchestration by the agent. + */ DEFAULT = 'DEFAULT', /** - * Custom orchestration using Lambda. - */ - CUSTOM_ORCHESTRATION = 'CUSTOM_ORCHESTRATION' -} \ No newline at end of file + * Custom orchestration using Lambda. + */ + CUSTOM_ORCHESTRATION = 'CUSTOM_ORCHESTRATION', +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts index 4acec8ab0fd0f..82454090378a5 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -16,15 +16,41 @@ import { IFunction } from 'aws-cdk-lib/aws-lambda'; import * as validation from './validation-helpers'; import { IInvokable } from '../models'; +/** + * The step in the agent sequence that this prompt configuration applies to. + */ /** * The step in the agent sequence that this prompt configuration applies to. */ export enum AgentStepType { + /** + * Pre-processing step that prepares the user input for orchestration. + */ PRE_PROCESSING = 'PRE_PROCESSING', + + /** + * Main orchestration step that determines the agent's actions. + */ ORCHESTRATION = 'ORCHESTRATION', + + /** + * Post-processing step that refines the agent's response. + */ POST_PROCESSING = 'POST_PROCESSING', + + /** + * Step that classifies and routes requests to appropriate collaborators. + */ ROUTING_CLASSIFIER = 'ROUTING_CLASSIFIER', + + /** + * Step that summarizes conversation history for memory retention. + */ MEMORY_SUMMARIZATION = 'MEMORY_SUMMARIZATION', + + /** + * Step that generates responses using knowledge base content. + */ KNOWLEDGE_BASE_RESPONSE_GENERATION = 'KNOWLEDGE_BASE_RESPONSE_GENERATION', } @@ -116,6 +142,7 @@ export interface PromptStepConfiguration { readonly customPromptTemplate?: string; /** * The inference configuration parameters to use. + * @default undefined - Default inference configuration will be used */ readonly inferenceConfig?: InferenceConfiguration; /** @@ -127,6 +154,10 @@ export interface PromptStepConfiguration { readonly foundationModel?: IInvokable; } +/** + * Configuration for a prompt step that can use a custom Lambda parser. + * Extends the base PromptStepConfiguration with custom parser options. + */ export interface PromptStepConfigurationCustomParser extends PromptStepConfiguration { /** * Whether to use the custom Lambda parser defined for the sequence. @@ -136,18 +167,35 @@ export interface PromptStepConfigurationCustomParser extends PromptStepConfigura readonly useCustomParser?: boolean; } +/** + * Properties for configuring a custom Lambda parser for prompt overrides. + */ export interface CustomParserProps { - /* - * Lambda function to use as custom parser + /** + * Lambda function to use as custom parser. + * @default undefined - No custom parser is used */ readonly parser?: IFunction; - /* - * prompt step configurations. At least one of the steps must make use of the custom parser. + + /** + * Prompt step configurations. At least one of the steps must make use of the custom parser. + * @default undefined - No custom prompt step configurations */ readonly steps?: PromptStepConfigurationCustomParser[]; } +/** + * Configuration for overriding prompt templates and behaviors in different parts + * of an agent's sequence. This allows customizing how the agent processes inputs, + * makes decisions, and generates responses. + */ export class PromptOverrideConfiguration { + /** + * Creates a PromptOverrideConfiguration from a list of prompt step configurations. + * Use this method when you want to override prompts without using a custom parser. + * @param steps The prompt step configurations to use + * @returns A new PromptOverrideConfiguration instance + */ public static fromSteps(steps?: PromptStepConfiguration[]): PromptOverrideConfiguration { // Create new object return new PromptOverrideConfiguration({ steps }); @@ -281,7 +329,6 @@ export class PromptOverrideConfiguration { errors.push(`Step ${step.stepType}: Foundation model can only be specified for ROUTING_CLASSIFIER step type`); } } - }); return errors; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts index fc7020a273c43..de5c14d4284a1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts @@ -78,7 +78,6 @@ export function generatePhysicalName( return prefix.toLowerCase() + allParts + '-' + uniqueStackIdPart; } - export interface GeneratePhysicalNameV2Options extends cdk.UniqueResourceNameOptions { /** * Whether to convert the name to lower case. @@ -161,10 +160,14 @@ export function lambdaMemorySizeLimiter(construct: IConstruct, requestedMemorySi recommendedMaximumLambdaMemorySize : parseInt(construct.node.tryGetContext(maximumLambdaMemorySizeContextItem)); if (maximumLambaMemorySize < recommendedMaximumLambdaMemorySize) { - console.warn(`Maximum Lambda memorySize, ${maximumLambaMemorySize}, is less than the recommended ${recommendedMaximumLambdaMemorySize}.`); + cdk.Annotations.of(construct).addWarning( + `Maximum Lambda memorySize, ${maximumLambaMemorySize}, is less than the recommended ${recommendedMaximumLambdaMemorySize}.`, + ); } if (requestedMemorySizeInMegabytes > maximumLambaMemorySize) { - console.warn(`Reducing Lambda memorySize, ${requestedMemorySizeInMegabytes} to ${maximumLambaMemorySize} for ${construct.constructor.name}`); + cdk.Annotations.of(construct).addWarning( + `Reducing Lambda memorySize, ${requestedMemorySizeInMegabytes} to ${maximumLambaMemorySize} for ${construct.constructor.name}`, + ); return maximumLambaMemorySize; } else { return requestedMemorySizeInMegabytes; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts index d43c5f6a51c36..17a8e5e9e5752 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts @@ -1,6 +1,6 @@ -//=================================== +// =================================== // Agents -//=================================== +// =================================== export * from './agents/action-group'; export * from './agents/agent'; export * from './agents/agent-alias'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts index 8364e5a283918..799eb64dbc5d9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -50,6 +50,9 @@ export interface IInvokable { grantInvoke(grantee: IGrantable): Grant; } +/** + * Properties for configuring a Bedrock Foundation Model. + */ export interface BedrockFoundationModelProps { /** * Bedrock Agents can use this model. @@ -85,9 +88,18 @@ export interface BedrockFoundationModelProps { * Embedding models have different vector dimensions. * Only applicable for embedding models. */ + /** + * Embedding models have different vector dimensions. + * Only applicable for embedding models. + * + * @default undefined - No vector dimensions specified + */ readonly vectorDimensions?: number; + /** - * Embeddings models have different supported vector types + * Embeddings models have different supported vector types. + * + * @default undefined - No vector types specified */ readonly supportedVectorType?: VectorType[]; } @@ -102,6 +114,10 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * AI21 ***************************************************************************/ + /** + * AI21's Jamba 1.5 Large model, optimized for general text generation and understanding. + * Suitable for complex language tasks with high accuracy requirements. + */ public static readonly AI21_JAMBA_1_5_LARGE_V1 = new BedrockFoundationModel( 'ai21.jamba-1-5-large-v1:0', { @@ -109,6 +125,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * AI21's Jamba 1.5 Mini model, a lightweight version optimized for faster inference. + * Suitable for simpler language tasks where speed is prioritized. + */ public static readonly AI21_JAMBA_1_5_MINI_V1 = new BedrockFoundationModel( 'ai21.jamba-1-5-mini-v1:0', { @@ -116,6 +136,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * AI21's Jamba Instruct model, specifically designed for instruction-following tasks. + * Optimized for understanding and executing natural language instructions. + */ public static readonly AI21_JAMBA_INSTRUCT_V1 = new BedrockFoundationModel( 'ai21.jamba-instruct-v1:0', { @@ -125,6 +149,10 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * AMAZON ***************************************************************************/ + /** + * Amazon's Titan Text Express model, optimized for fast text generation. + * Suitable for real-time applications requiring quick responses. + */ public static readonly AMAZON_TITAN_TEXT_EXPRESS_V1 = new BedrockFoundationModel( 'amazon.titan-text-express-v1', { @@ -132,6 +160,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Titan Premier model, offering enhanced capabilities for complex text generation. + * Provides higher quality outputs compared to Express version. + */ public static readonly AMAZON_TITAN_PREMIER_V1_0 = new BedrockFoundationModel( 'amazon.titan-text-premier-v1:0', { @@ -139,6 +171,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Nova Micro model, a lightweight model optimized for Bedrock Agents. + * Provides fast inference with cross-region support. + */ public static readonly AMAZON_NOVA_MICRO_V1 = new BedrockFoundationModel( 'amazon.nova-micro-v1:0', { @@ -148,18 +184,30 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Nova Lite model, balancing performance and resource usage. + * Optimized for Bedrock Agents with cross-region support. + */ public static readonly AMAZON_NOVA_LITE_V1 = new BedrockFoundationModel('amazon.nova-lite-v1:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true, }); + /** + * Amazon's Nova Pro model, offering advanced capabilities for complex tasks. + * Provides high-quality outputs with cross-region support and agent optimization. + */ public static readonly AMAZON_NOVA_PRO_V1 = new BedrockFoundationModel('amazon.nova-pro-v1:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true, }); + /** + * Amazon's Titan Embed Text V1 model for text embeddings. + * Generates 1536-dimensional floating-point vector embeddings. + */ public static readonly TITAN_EMBED_TEXT_V1 = new BedrockFoundationModel( 'amazon.titan-embed-text-v1', { @@ -169,6 +217,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Titan Embed Text V2 model with 1024-dimensional vectors. + * Supports both floating-point and binary vector embeddings. + */ public static readonly TITAN_EMBED_TEXT_V2_1024 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', { @@ -178,6 +230,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Titan Embed Text V2 model with 512-dimensional vectors. + * Provides a balance between precision and resource usage. + */ public static readonly TITAN_EMBED_TEXT_V2_512 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', { @@ -187,6 +243,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Amazon's Titan Embed Text V2 model with 256-dimensional vectors. + * Optimized for applications requiring compact vector representations. + */ public static readonly TITAN_EMBED_TEXT_V2_256 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', { @@ -198,42 +258,73 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * ANTHROPIC ***************************************************************************/ + /** + * Anthropic's Claude 3.7 Sonnet model, the latest version with enhanced capabilities. + * Provides advanced natural language understanding and generation with cross-region support. + */ public static readonly ANTHROPIC_CLAUDE_3_7_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-7-sonnet-20250219-v1:0', - { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: false }, ); + /** + * Anthropic's Claude 3.5 Sonnet V2 model, optimized for Bedrock Agents. + * Offers improved performance and reliability over V1. + */ public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V2_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-sonnet-20241022-v2:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude 3.5 Sonnet V1 model, with cross-region support. + * Balances performance and resource usage for general-purpose tasks. + */ public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-sonnet-20240620-v1:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude 3.5 Haiku model, a lightweight version optimized for speed. + * Ideal for applications requiring quick responses with good accuracy. + */ public static readonly ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-haiku-20241022-v1:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude Opus model, their most advanced model for complex tasks. + * Provides highest quality outputs with enhanced reasoning capabilities. + */ public static readonly ANTHROPIC_CLAUDE_OPUS_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-opus-20240229-v1:0', { supportsAgents: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude Sonnet model, a legacy version with agent optimization. + * Provides reliable performance for general language tasks. + */ public static readonly ANTHROPIC_CLAUDE_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-sonnet-20240229-v1:0', { supportsAgents: true, supportsCrossRegion: true, legacy: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude Haiku model, optimized for fast inference. + * Suitable for applications requiring quick responses with good quality. + */ public static readonly ANTHROPIC_CLAUDE_HAIKU_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-haiku-20240307-v1:0', { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: true }, ); + /** + * Anthropic's Claude V2.1 model, a legacy version with enhanced capabilities. + * Provides reliable performance for a wide range of language tasks. + */ public static readonly ANTHROPIC_CLAUDE_V2_1 = new BedrockFoundationModel( 'anthropic.claude-v2:1', { @@ -243,12 +334,20 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Anthropic's Claude V2 model, a legacy version of their general-purpose model. + * Suitable for a wide range of language understanding and generation tasks. + */ public static readonly ANTHROPIC_CLAUDE_V2 = new BedrockFoundationModel('anthropic.claude-v2', { supportsAgents: true, legacy: true, optimizedForAgents: true, }); + /** + * Anthropic's Claude Instant V1.2 model, a legacy fast-inference version. + * Optimized for quick responses while maintaining good output quality. + */ public static readonly ANTHROPIC_CLAUDE_INSTANT_V1_2 = new BedrockFoundationModel( 'anthropic.claude-instant-v1', { @@ -261,6 +360,10 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * COHERE ***************************************************************************/ + /** + * Cohere's English embedding model, optimized for English text. + * Generates 1024-dimensional vectors with support for both floating-point and binary types. + */ public static readonly COHERE_EMBED_ENGLISH_V3 = new BedrockFoundationModel( 'cohere.embed-english-v3', { @@ -270,6 +373,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Cohere's multilingual embedding model, supporting multiple languages. + * Generates 1024-dimensional vectors with support for both floating-point and binary types. + */ public static readonly COHERE_EMBED_MULTILINGUAL_V3 = new BedrockFoundationModel( 'cohere.embed-multilingual-v3', { @@ -281,6 +388,10 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * DEEPSEEK ***************************************************************************/ + /** + * Deepseek's R1 model, offering advanced language capabilities. + * Supports cross-region deployment and Bedrock Agents integration. + */ public static readonly DEEPSEEK_R1_V1 = new BedrockFoundationModel( 'deepseek.r1-v1:0', { @@ -292,6 +403,10 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * META ***************************************************************************/ + /** + * Meta's Llama 3 1.8B instruction-tuned model, a lightweight version. + * Suitable for tasks requiring quick responses with good accuracy. + */ public static readonly META_LLAMA_3_1_8B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-1-8b-instruct-v1:0', { @@ -300,6 +415,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 3 70B instruction-tuned model, their largest model. + * Provides high-quality outputs for complex language tasks. + */ public static readonly META_LLAMA_3_1_70B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-1-70b-instruct-v1:0', { @@ -308,6 +427,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 3 11B instruction-tuned model, a mid-sized version. + * Balances performance and resource usage for general tasks. + */ public static readonly META_LLAMA_3_2_11B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-11b-instruct-v1:0', { @@ -316,6 +439,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 3 3B instruction-tuned model, optimized for efficiency. + * Suitable for applications requiring fast inference. + */ public static readonly META_LLAMA_3_2_3B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-3b-instruct-v1:0', { @@ -324,6 +451,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 3 1B instruction-tuned model, their most compact version. + * Ideal for resource-constrained environments. + */ public static readonly META_LLAMA_3_2_1B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-1b-instruct-v1:0', { @@ -332,6 +463,10 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 3.3 70B instruction-tuned model, latest large version. + * Offers enhanced capabilities with cross-region support. + */ public static readonly META_LLAMA_3_3_70B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-3-70b-instruct-v1:0', { @@ -340,12 +475,25 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Creates a BedrockFoundationModel from a CDK FoundationModelIdentifier. + * @param modelId The foundation model identifier + * @param props Optional properties for the model + * @returns A new BedrockFoundationModel instance + */ public static fromCdkFoundationModelId( modelId: FoundationModelIdentifier, props: BedrockFoundationModelProps = {}, ): BedrockFoundationModel { return new BedrockFoundationModel(modelId.modelId, props); } + + /** + * Creates a BedrockFoundationModel from a CDK FoundationModel. + * @param modelId The foundation model + * @param props Optional properties for the model + * @returns A new BedrockFoundationModel instance + */ public static fromCdkFoundationModel( modelId: FoundationModel, props: BedrockFoundationModelProps = {}, @@ -356,13 +504,46 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * Constructor ***************************************************************************/ + /** + * The unique identifier of the foundation model. + */ public readonly modelId: string; + + /** + * The ARN of the foundation model. + */ public readonly modelArn: string; + + /** + * The ARN used for invoking the model. + */ public readonly invokableArn: string; + + /** + * Whether this model can be used with Bedrock Agents. + */ public readonly supportsAgents: boolean; + + /** + * Whether this model supports cross-region inference. + */ public readonly supportsCrossRegion: boolean; + + /** + * The dimensionality of vectors produced by this model. + * Only applicable for embedding models. + */ public readonly vectorDimensions?: number; + + /** + * Whether this model can be used with Bedrock Knowledge Base. + */ public readonly supportsKnowledgeBase: boolean; + + /** + * The vector types supported by this model. + * Only applicable for embedding models. + */ public readonly supportedVectorType?: VectorType[]; constructor(value: string, props: BedrockFoundationModelProps = {}) { this.modelId = value; @@ -397,6 +578,12 @@ export class BedrockFoundationModel implements IInvokable { return this.modelArn; } + /** + * Returns this foundation model as an IModel interface. + * This allows using the model with APIs that expect an IModel. + * @param construct The scope in which to create any required resources + * @returns This foundation model as an IModel + */ asIModel(construct: IConstruct): IModel { if (construct) { } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/package.json b/packages/@aws-cdk/aws-bedrock-alpha/package.json index 20112712d2cd9..b6d61c985a270 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/package.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/package.json @@ -1,17 +1,18 @@ { "name": "@aws-cdk/aws-bedrock-alpha", "version": "0.0.0", - "description": "An example CDK Construct Library for aws-bedrock-alpha", + "private": false, + "description": "The CDK Construct Library for Amazon Bedrock", "main": "lib/index.js", "types": "lib/index.d.ts", "jsii": { "outdir": "dist", "targets": { "java": { - "package": "software.amazon.awscdk.services.aws.bedrock.alpha", + "package": "software.amazon.awscdk.services.bedrock.alpha", "maven": { "groupId": "software.amazon.awscdk", - "artifactId": "aws-bedrock-alpha" + "artifactId": "bedrock-alpha" } }, "dotnet": { @@ -47,10 +48,17 @@ "directory": "packages/@aws-cdk/aws-bedrock-alpha" }, "scripts": { - "build": "tsc", - "watch": "tsc-w", - "test": "jest", + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "integ-runner --language javascript", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", "build+test": "yarn build && yarn test", + "build+test+package": "yarn build+test && yarn package", + "compat": "cdk-compat", "rosetta:extract": "yarn --silent jsii-rosetta extract", "build+extract": "yarn build && yarn rosetta:extract", "build+test+extract": "yarn build+test && yarn rosetta:extract" @@ -58,9 +66,8 @@ "keywords": [ "aws", "cdk", - "example", - "construct", - "library" + "constructs", + "bedrock" ], "author": { "name": "Amazon Web Services", @@ -69,7 +76,13 @@ }, "license": "Apache-2.0", "devDependencies": { + "aws-cdk-lib": "0.0.0", + "@aws-cdk/cdk-build-tools": "0.0.0", + "@aws-cdk/integ-runner": "^2.186.0", + "@aws-cdk/pkglint": "0.0.0", + "@aws-cdk/integ-tests-alpha": "0.0.0", "@types/jest": "^29.5.14", + "constructs": "^10.0.0", "jest": "^29.7.0" }, "homepage": "https://github.com/aws/aws-cdk", @@ -77,7 +90,6 @@ "aws-cdk-lib": "^0.0.0", "constructs": "^10.0.0" }, - "separate-module": false, "engines": { "node": ">= 14.15.0" }, @@ -87,5 +99,17 @@ "env": { "AWSLINT_BASE_CONSTRUCT": true } + }, + "publishConfig": { + "tag": "latest" + }, + "awscdkio": { + "announce": false + }, + "pkglint": { + "exclude": [ + "naming/package-matches-directory", + "assert/assert-dependency" + ] } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture index e8deb6060d76d..dde0716a8af12 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture +++ b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture @@ -1,6 +1,12 @@ // Fixture with packages imported, but nothing else +import * as path from 'path'; import { Construct } from 'constructs'; -import { Stack } from '@aws-cdk/core'; +import { Stack } from 'aws-cdk-lib'; +import * as bedrock from '@aws-cdk/aws-bedrock-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import { Duration } from 'aws-cdk-lib'; +import { Memory } from '@aws-cdk/aws-bedrock-alpha'; + class Fixture extends Stack { constructor(scope: Construct, id: string) { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts index b0f390aed41c3..3d07480c7e2c6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts @@ -38,11 +38,11 @@ describe('AgentActionGroup', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ + ActionGroups: Match.arrayWith([ Match.objectLike({ - 'ActionGroupName': 'CustomAction', - 'ActionGroupState': 'ENABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', + ActionGroupName: 'CustomAction', + ActionGroupState: 'ENABLED', + ParentActionGroupSignature: 'AMAZON.UserInput', }), ]), }); @@ -63,11 +63,11 @@ describe('AgentActionGroup', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ + ActionGroups: Match.arrayWith([ Match.objectLike({ - 'ActionGroupName': 'CustomAction', - 'ActionGroupState': 'ENABLED', - 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + ActionGroupName: 'CustomAction', + ActionGroupState: 'ENABLED', + ParentActionGroupSignature: 'AMAZON.CodeInterpreter', }), ]), }); @@ -88,11 +88,11 @@ describe('AgentActionGroup', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ + ActionGroups: Match.arrayWith([ Match.objectLike({ - 'ActionGroupName': 'CustomAction', - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', + ActionGroupName: 'CustomAction', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.UserInput', }), ]), }); @@ -119,16 +119,16 @@ describe('AgentActionGroup', () => { agent.addActionGroups(actionGroup1, actionGroup2); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ + ActionGroups: Match.arrayWith([ Match.objectLike({ - 'ActionGroupName': 'CustomAction1', - 'ActionGroupState': 'ENABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', + ActionGroupName: 'CustomAction1', + ActionGroupState: 'ENABLED', + ParentActionGroupSignature: 'AMAZON.UserInput', }), Match.objectLike({ - 'ActionGroupName': 'CustomAction2', - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', + ActionGroupName: 'CustomAction2', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.CodeInterpreter', }), ]), }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts index d7429e71d7d94..8ebb5d8ceaefa 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts @@ -49,7 +49,7 @@ describe('AgentAlias', () => { // WHEN const alias = new AgentAlias(stack, 'TestAlias', { agent: mockAgent, - aliasName: 'test-alias', + agentAliasName: 'test-alias', agentVersion: '1.0.0', description: 'Test description', }); @@ -86,7 +86,7 @@ describe('AgentAlias', () => { resource: 'agent-alias', resourceName: 'test-agent-id/test-alias-id', arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }) + }), ); }); @@ -111,10 +111,10 @@ describe('AgentAlias', () => { Action: 'bedrock:InvokeAgent', Effect: 'Allow', Resource: { - 'Fn::GetAtt': assertions.Match.arrayWith([ - assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), - 'AgentAliasArn', - ]), + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAlias[A-Z0-9]+'), + 'AgentAliasArn', + ]), }, }, ], @@ -144,7 +144,7 @@ describe('AgentAlias', () => { Effect: 'Allow', Resource: { 'Fn::GetAtt': assertions.Match.arrayWith([ - assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + assertions.Match.stringLikeRegexp('TestAlias[A-Z0-9]+'), 'AgentAliasArn', ]), }, @@ -176,7 +176,7 @@ describe('AgentAlias', () => { Effect: 'Allow', Resource: { 'Fn::GetAtt': assertions.Match.arrayWith([ - assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), + assertions.Match.stringLikeRegexp('TestAlias[A-Z0-9]+'), 'AgentAliasArn', ]), }, @@ -207,14 +207,16 @@ describe('AgentAlias', () => { const template = assertions.Template.fromStack(stack); template.hasResourceProperties('AWS::Events::Rule', { EventPattern: { - source: ['aws.bedrock'], + 'source': ['aws.bedrock'], 'detail-type': ['AWS API Call via CloudTrail'], - detail: { + 'detail': { requestParameters: { - agentAliasId: [{ 'Fn::GetAtt': assertions.Match.arrayWith([ - assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), - 'AgentAliasId' - ]) }], + agentAliasId: [{ + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAlias[A-Z0-9]+'), + 'AgentAliasId', + ]), + }], }, }, }, @@ -235,14 +237,16 @@ describe('AgentAlias', () => { const template = assertions.Template.fromStack(stack); template.hasResourceProperties('AWS::Events::Rule', { EventPattern: { - source: ['aws.bedrock'], + 'source': ['aws.bedrock'], 'detail-type': ['AWS API Call via CloudTrail'], - detail: { + 'detail': { requestParameters: { - agentAliasId: [{ 'Fn::GetAtt': assertions.Match.arrayWith([ - assertions.Match.stringLikeRegexp('TestAliasMyCfnAgentAlias'), - 'AgentAliasId' - ]) }], + agentAliasId: [{ + 'Fn::GetAtt': assertions.Match.arrayWith([ + assertions.Match.stringLikeRegexp('TestAlias[A-Z0-9]+'), + 'AgentAliasId', + ]), + }], }, }, }, @@ -251,7 +255,7 @@ describe('AgentAlias', () => { test('handles undefined agentVersion', () => { // WHEN - new AgentAlias(stack, 'TestAlias', { + new AgentAlias(stack, 'TestAlias', { agent: mockAgent, agentVersion: undefined, }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts index ff35b06c00a07..42d4cc494b914 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts @@ -6,19 +6,21 @@ import { IAgentAlias } from '../../../bedrock/agents/agent-alias'; describe('AgentCollaborator', () => { let stack: Stack; let mockAgentAlias: IAgentAlias; + let mockGrantInvoke: jest.Mock; + let mockGrantGet: jest.Mock; beforeEach(() => { stack = new Stack(); + const mockCombine = jest.fn().mockReturnThis(); + mockGrantInvoke = jest.fn().mockReturnValue({ combine: mockCombine }); + mockGrantGet = jest.fn().mockReturnValue({ combine: mockCombine }); + mockAgentAlias = { aliasId: 'test-alias-id', aliasArn: 'arn:aws:bedrock:us-east-1:123456789012:agent-alias/test-agent/test-alias-id', agent: {} as any, - grantInvoke: jest.fn().mockReturnValue({ - combine: jest.fn().mockReturnThis(), - }), - grantGet: jest.fn().mockReturnValue({ - combine: jest.fn().mockReturnThis(), - }), + grantInvoke: mockGrantInvoke, + grantGet: mockGrantGet, grant: jest.fn(), onCloudTrailEvent: jest.fn(), node: stack.node, @@ -30,7 +32,7 @@ describe('AgentCollaborator', () => { test('creates with valid properties', () => { // WHEN - const collaborator = new AgentCollaborator({ + const collaborator = new AgentCollaborator(stack, 'TestCollaborator', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -47,7 +49,7 @@ describe('AgentCollaborator', () => { test('throws error when agentAlias is missing', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator1', { agentAlias: undefined as any, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -64,7 +66,7 @@ describe('AgentCollaborator', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator2', { agentAlias: testAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -75,7 +77,7 @@ describe('AgentCollaborator', () => { test('throws error when collaborationInstruction is empty', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator3', { agentAlias: mockAgentAlias, collaborationInstruction: '', collaboratorName: 'Test collaborator', @@ -86,7 +88,7 @@ describe('AgentCollaborator', () => { test('throws error when collaborationInstruction is whitespace', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator4', { agentAlias: mockAgentAlias, collaborationInstruction: ' ', collaboratorName: 'Test collaborator', @@ -97,7 +99,7 @@ describe('AgentCollaborator', () => { test('throws error when collaboratorName is empty', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator5', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: '', @@ -108,7 +110,7 @@ describe('AgentCollaborator', () => { test('throws error when collaboratorName is whitespace', () => { // THEN expect(() => { - new AgentCollaborator({ + new AgentCollaborator(stack, 'TestCollaborator6', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: ' ', @@ -118,7 +120,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory true', () => { // GIVEN - const collaborator = new AgentCollaborator({ + const collaborator = new AgentCollaborator(stack, 'TestCollaborator7', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -141,7 +143,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory false', () => { // GIVEN - const collaborator = new AgentCollaborator({ + const collaborator = new AgentCollaborator(stack, 'TestCollaborator8', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -164,7 +166,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory undefined', () => { // GIVEN - const collaborator = new AgentCollaborator({ + const collaborator = new AgentCollaborator(stack, 'TestCollaborator9', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -186,7 +188,7 @@ describe('AgentCollaborator', () => { test('grants permissions to grantee', () => { // GIVEN - const collaborator = new AgentCollaborator({ + const collaborator = new AgentCollaborator(stack, 'TestCollaborator10', { agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -199,7 +201,9 @@ describe('AgentCollaborator', () => { collaborator.grant(grantee); // THEN - expect(mockAgentAlias.grantInvoke).toHaveBeenCalledWith(grantee); - expect(mockAgentAlias.grantGet).toHaveBeenCalledWith(grantee); + const checkGrantInvoke = () => expect(mockGrantInvoke).toHaveBeenCalledWith(grantee); + const checkGrantGet = () => expect(mockGrantGet).toHaveBeenCalledWith(grantee); + checkGrantInvoke(); + checkGrantGet(); }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts index 2217022057873..bbaf37c3a3204 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -32,12 +32,12 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), - 'FoundationModel': foundationModel.invokableArn, - 'IdleSessionTTLInSeconds': 3600, - 'AutoPrepare': false, - 'Description': Match.absent(), - 'CustomerEncryptionKeyArn': Match.absent(), + Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), + FoundationModel: foundationModel.invokableArn, + IdleSessionTTLInSeconds: 3600, + AutoPrepare: false, + Description: Match.absent(), + CustomerEncryptionKeyArn: Match.absent(), }); }); @@ -45,7 +45,7 @@ describe('Agent', () => { new bedrock.Agent(stack, 'TestAgent', { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel, - name: 'MyTestAgent', + agentName: 'MyTestAgent', description: 'Test agent description', shouldPrepareAgent: true, idleSessionTTL: core.Duration.minutes(30), @@ -55,13 +55,13 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentName': 'MyTestAgent', - 'Description': 'Test agent description', - 'Instruction': Match.stringLikeRegexp('.*at least 40 characters.*'), - 'FoundationModel': foundationModel.invokableArn, - 'IdleSessionTTLInSeconds': 1800, - 'AutoPrepare': true, - 'SkipResourceInUseCheckOnDelete': true, + AgentName: 'MyTestAgent', + Description: 'Test agent description', + Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), + FoundationModel: foundationModel.invokableArn, + IdleSessionTTLInSeconds: 1800, + AutoPrepare: true, + SkipResourceInUseCheckOnDelete: true, }); }); @@ -72,28 +72,28 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { - 'AssumeRolePolicyDocument': { - 'Statement': [ + AssumeRolePolicyDocument: { + Statement: [ { - 'Action': 'sts:AssumeRole', - 'Effect': 'Allow', - 'Principal': { - 'Service': 'bedrock.amazonaws.com', + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { + Service: 'bedrock.amazonaws.com', }, - 'Condition': { - 'StringEquals': { - 'aws:SourceAccount': Match.objectLike({ 'Ref': 'AWS::AccountId' }) + Condition: { + StringEquals: { + 'aws:SourceAccount': Match.objectLike({ Ref: 'AWS::AccountId' }), }, - 'ArnLike': { + ArnLike: { 'aws:SourceArn': { 'Fn::Join': ['', [ 'arn:', - { 'Ref': 'AWS::Partition' }, + { Ref: 'AWS::Partition' }, ':bedrock:', - { 'Ref': 'AWS::Region' }, + { Ref: 'AWS::Region' }, ':', - { 'Ref': 'AWS::AccountId' }, - ':agent/*' + { Ref: 'AWS::AccountId' }, + ':agent/*', ]], }, }, @@ -117,13 +117,13 @@ describe('Agent', () => { agent.grantInvoke(role); Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': Match.arrayWith([ + PolicyDocument: { + Statement: Match.arrayWith([ Match.objectLike({ - 'Action': 'bedrock:InvokeAgent', - 'Effect': 'Allow', - 'Resource': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + Action: 'bedrock:InvokeAgent', + Effect: 'Allow', + Resource: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], }, }), ]), @@ -167,10 +167,10 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'OrchestrationType': 'CUSTOM_ORCHESTRATION', - 'CustomOrchestration': { - 'Executor': { - 'Lambda': { + OrchestrationType: 'CUSTOM_ORCHESTRATION', + CustomOrchestration: { + Executor: { + Lambda: { 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], }, }, @@ -178,16 +178,16 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { - 'Action': 'lambda:InvokeFunction', - 'FunctionName': { + Action: 'lambda:InvokeFunction', + FunctionName: { 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], }, - 'Principal': 'bedrock.amazonaws.com', - 'SourceArn': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + Principal: 'bedrock.amazonaws.com', + SourceArn: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], }, - 'SourceAccount': { - 'Ref': 'AWS::AccountId', + SourceAccount: { + Ref: 'AWS::AccountId', }, }); }); @@ -232,7 +232,7 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'CustomerEncryptionKeyArn': { + CustomerEncryptionKeyArn: { 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], }, }); @@ -250,7 +250,7 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentResourceRoleArn': { + AgentResourceRoleArn: { 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], }, }); @@ -265,8 +265,8 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'AgentCollaboration': 'SUPERVISOR', - 'AgentCollaborators': Match.absent(), + AgentCollaboration: 'SUPERVISOR', + AgentCollaborators: Match.absent(), }); }); @@ -279,19 +279,19 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': [ + ActionGroups: [ { - 'ActionGroupName': 'UserInputAction', - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.UserInput', - 'SkipResourceInUseCheckOnDelete': false + ActionGroupName: 'UserInputAction', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.UserInput', + SkipResourceInUseCheckOnDelete: false, }, { - 'ActionGroupName': 'CodeInterpreterAction', - 'ActionGroupState': 'DISABLED', - 'ParentActionGroupSignature': 'AMAZON.CodeInterpreter', - 'SkipResourceInUseCheckOnDelete': false - } + ActionGroupName: 'CodeInterpreterAction', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.CodeInterpreter', + SkipResourceInUseCheckOnDelete: false, + }, ], }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts index 1e38857be945e..6223105a185e3 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts @@ -45,12 +45,12 @@ describe('AgentActionGroupExecutor', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'ActionGroups': Match.arrayWith([ + ActionGroups: Match.arrayWith([ Match.objectLike({ - 'ActionGroupName': 'CustomAction', - 'ActionGroupState': 'ENABLED', - 'ActionGroupExecutor': { - 'Lambda': { + ActionGroupName: 'CustomAction', + ActionGroupState: 'ENABLED', + ActionGroupExecutor: { + Lambda: { 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], }, }, @@ -60,16 +60,16 @@ describe('AgentActionGroupExecutor', () => { // Verify Lambda permissions Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { - 'Action': 'lambda:InvokeFunction', - 'FunctionName': { + Action: 'lambda:InvokeFunction', + FunctionName: { 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], }, - 'Principal': 'bedrock.amazonaws.com', - 'SourceArn': { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgentAgentResource[A-Z0-9]+'), 'AgentArn'], + Principal: 'bedrock.amazonaws.com', + SourceArn: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], }, - 'SourceAccount': { - 'Ref': 'AWS::AccountId', + SourceAccount: { + Ref: 'AWS::AccountId', }, }); }); @@ -95,12 +95,12 @@ describe('AgentActionGroupExecutor', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': Match.arrayWith([ + PolicyDocument: { + Statement: Match.arrayWith([ Match.objectLike({ - 'Action': 'lambda:InvokeFunction', - 'Effect': 'Allow', - 'Resource': Match.arrayWith([ + Action: 'lambda:InvokeFunction', + Effect: 'Allow', + Resource: Match.arrayWith([ { 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], }, diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts index e509d743fffe2..8cd2a0a5f1405 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts @@ -21,7 +21,7 @@ describe('ApiSchema', () => { '/test': { get: { responses: { - '200': { + 200: { description: 'OK', }, }, @@ -38,7 +38,7 @@ describe('ApiSchema', () => { '/test': { get: { responses: { - '200': { + 200: { description: 'OK', }, }, @@ -123,12 +123,12 @@ describe('ApiSchema', () => { agent.addActionGroup(actionGroup); Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': Match.arrayWith([ + PolicyDocument: { + Statement: Match.arrayWith([ Match.objectLike({ - 'Action': ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - 'Effect': 'Allow', - 'Resource': 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + Action: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + Effect: 'Allow', + Resource: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', }), ]), }, diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json index 2c66261e627c2..4e16fe1a158f0 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json @@ -1,7 +1,7 @@ { "version": "41.0.0", "files": { - "8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832": { + "f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6": { "displayName": "agentIntegTestStack Template", "source": { "path": "agentIntegTestStack.template.json", @@ -10,7 +10,7 @@ "destinations": { "551246883740-us-east-1": { "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", - "objectKey": "8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832.json", + "objectKey": "f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6.json", "region": "us-east-1", "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json index 06585e1969a24..a8609ab084484 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json @@ -67,7 +67,7 @@ ] } }, - "TestAgentAgentResource807C0F50": { + "TestAgent44AF1AE6": { "Type": "AWS::Bedrock::Agent", "Properties": { "ActionGroups": [ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json index 20c755c848321..42baf65c39f70 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -18,7 +18,7 @@ "validateOnSynth": false, "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/8f3aa2d8186452954031b889b726fb27222b71cc657457e00acc2687de173832.json", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ @@ -118,10 +118,10 @@ "data": "TestAgentRoleDefaultPolicy0A38CDBA" } ], - "/agentIntegTestStack/TestAgent/AgentResource": [ + "/agentIntegTestStack/TestAgent/Resource": [ { "type": "aws:cdk:logicalId", - "data": "TestAgentAgentResource807C0F50" + "data": "TestAgent44AF1AE6" } ], "/agentIntegTestStack/BootstrapVersion": [ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json index faea7f9af62b6..6313a861e3fa5 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"agentIntegTestStack":{"id":"agentIntegTestStack","path":"agentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"agentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"agentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"agentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--agentintegteststack-testagent-ba71f531-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"AgentResource":{"id":"AgentResource","path":"agentIntegTestStack/TestAgent/AgentResource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"agentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"agentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"agentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"agentIntegTestStack":{"id":"agentIntegTestStack","path":"agentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"agentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"agentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"agentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--agentintegteststack-testagent-ba71f531-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"agentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"agentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"agentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts index c74a0d9893916..bd029f7738af9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts @@ -1,6 +1,6 @@ /* * Integration test for Bedrock Agent construct - * + * * Stack verification steps: * * Verify that a Bedrock Agent is created with the specified instruction * * Verify that the agent uses Claude 3.5 Sonnet v2.0 as its foundation model @@ -19,7 +19,7 @@ class TestStack extends cdk.Stack { // Create a Bedrock Agent with minimal properties new bedrock.Agent(this, 'TestAgent', { - name: 'test-agent-1', + agentName: 'test-agent-1', instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, // Clean up the agent after test @@ -31,12 +31,12 @@ class TestStack extends cdk.Stack { const stack = new TestStack(app, 'agentIntegTestStack', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION , -}, + region: process.env.CDK_DEFAULT_REGION, + }, }); new IntegTest(app, 'BedrockAgentIntegTest', { testCases: [stack], - + }); app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts index 5a48eff407f14..e2fb2e55406f6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts @@ -30,17 +30,17 @@ describe('Memory', () => { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel, memory: Memory.sessionSummary({ - memoryDurationDays: 30, + memoryDuration: core.Duration.days(30), maxRecentSessions: 20, }), }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'MemoryConfiguration': { - 'EnabledMemoryTypes': ['SESSION_SUMMARY'], - 'StorageDays': 30, - 'SessionSummaryConfiguration': { - 'MaxRecentSessions': 20, + MemoryConfiguration: { + EnabledMemoryTypes: ['SESSION_SUMMARY'], + StorageDays: 30, + SessionSummaryConfiguration: { + MaxRecentSessions: 20, }, }, }); @@ -49,23 +49,23 @@ describe('Memory', () => { test('validates memory duration days range', () => { expect(() => { Memory.sessionSummary({ - memoryDurationDays: 0, + memoryDuration: core.Duration.days(0), maxRecentSessions: 20, }); - }).toThrow(/memoryDurationDays must be between 1 and 365/); + }).toThrow(/memoryDuration must be between 1 and 365 days/); expect(() => { Memory.sessionSummary({ - memoryDurationDays: 366, + memoryDuration: core.Duration.days(366), maxRecentSessions: 20, }); - }).toThrow(/memoryDurationDays must be between 1 and 365/); + }).toThrow(/memoryDuration must be between 1 and 365 days/); }); test('validates maxRecentSessions range', () => { expect(() => { Memory.sessionSummary({ - memoryDurationDays: 30, + memoryDuration: core.Duration.days(30), maxRecentSessions: 0, }); }).toThrow(/maxRecentSessions must be greater than 0/); @@ -79,11 +79,11 @@ describe('Memory', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'MemoryConfiguration': { - 'EnabledMemoryTypes': ['SESSION_SUMMARY'], - 'StorageDays': 30, - 'SessionSummaryConfiguration': { - 'MaxRecentSessions': 20, + MemoryConfiguration: { + EnabledMemoryTypes: ['SESSION_SUMMARY'], + StorageDays: 30, + SessionSummaryConfiguration: { + MaxRecentSessions: 20, }, }, }); @@ -99,11 +99,11 @@ describe('Memory', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - 'MemoryConfiguration': { - 'EnabledMemoryTypes': ['SESSION_SUMMARY'], - 'StorageDays': 30, - 'SessionSummaryConfiguration': { - 'MaxRecentSessions': 20, + MemoryConfiguration: { + EnabledMemoryTypes: ['SESSION_SUMMARY'], + StorageDays: 30, + SessionSummaryConfiguration: { + MaxRecentSessions: 20, }, }, }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts index 1bbb14cdd8f98..51d833119364e 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/validation-helpers.test.ts @@ -88,7 +88,6 @@ describe('validation-helpers', () => { expect(result[0]).toContain('Expected string'); }); - test('skips validation for unresolved tokens', () => { const tokenValue = Token.asString({ Ref: 'SomeParameter' }); const result = validateFieldPattern( diff --git a/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json b/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json index f61cc798beda3..6d202934fdbaa 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json @@ -43,7 +43,10 @@ }, { "path": "../../../tools/@aws-cdk/pkglint" + }, + { + "path": "../integ-tests-alpha" } ], "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" -} +} \ No newline at end of file From f1ac084a9844fb5bdf81bd3016150093f3eb702c Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 17 Apr 2025 16:46:07 -0400 Subject: [PATCH 10/39] fix(bedrockl2):removed integ test snapshot --- ...efaultTestDeployAssertE6F8548D.assets.json | 20 -- ...aultTestDeployAssertE6F8548D.template.json | 36 ---- .../agentIntegTestStack.assets.json | 21 -- .../agentIntegTestStack.template.json | 154 -------------- .../agents/integ.agent.js.snapshot/cdk.out | 1 - .../agents/integ.agent.js.snapshot/integ.json | 12 -- .../integ.agent.js.snapshot/manifest.json | 198 ------------------ .../agents/integ.agent.js.snapshot/tree.json | 1 - 8 files changed, 443 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json deleted file mode 100644 index dd5768ddca1cc..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D Template", - "source": { - "path": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json deleted file mode 100644 index 4e16fe1a158f0..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6": { - "displayName": "agentIntegTestStack Template", - "source": { - "path": "agentIntegTestStack.template.json", - "packaging": "file" - }, - "destinations": { - "551246883740-us-east-1": { - "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", - "objectKey": "f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6.json", - "region": "us-east-1", - "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json deleted file mode 100644 index a8609ab084484..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "Resources": { - "TestAgentRole522C6259": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": "arn:aws:bedrock:us-east-1:551246883740:agent/*" - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--agentintegteststack-testagent-ba71f531-bedrockagent" - } - }, - "TestAgentRoleDefaultPolicy0A38CDBA": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "TestAgentRoleDefaultPolicy0A38CDBA", - "Roles": [ - { - "Ref": "TestAgentRole522C6259" - } - ] - } - }, - "TestAgent44AF1AE6": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "test-agent-1", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "TestAgentRole522C6259", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "TestAgentRoleDefaultPolicy0A38CDBA" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json deleted file mode 100644 index 15164a53e6dd1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockAgentIntegTest/DefaultTest": { - "stacks": [ - "agentIntegTestStack" - ], - "assertionStack": "BedrockAgentIntegTest/DefaultTest/DeployAssert", - "assertionStackName": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json deleted file mode 100644 index 42baf65c39f70..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "agentIntegTestStack.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "agentIntegTestStack.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "agentIntegTestStack": { - "type": "aws:cloudformation:stack", - "environment": "aws://551246883740/us-east-1", - "properties": { - "templateFile": "agentIntegTestStack.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "agentIntegTestStack.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-lookup-role-551246883740-us-east-1", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "agentIntegTestStack.assets" - ], - "metadata": { - "/agentIntegTestStack/TestAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - } - ], - "/agentIntegTestStack/TestAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/agentIntegTestStack/TestAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "TestAgentRole522C6259" - } - ], - "/agentIntegTestStack/TestAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "TestAgentRoleDefaultPolicy0A38CDBA" - } - ], - "/agentIntegTestStack/TestAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "TestAgent44AF1AE6" - } - ], - "/agentIntegTestStack/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/agentIntegTestStack/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "agentIntegTestStack" - }, - "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets" - ], - "metadata": { - "/BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockAgentIntegTest/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json deleted file mode 100644 index 6313a861e3fa5..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"agentIntegTestStack":{"id":"agentIntegTestStack","path":"agentIntegTestStack","children":{"TestAgent":{"id":"TestAgent","path":"agentIntegTestStack/TestAgent","children":{"Role":{"id":"Role","path":"agentIntegTestStack/TestAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"agentIntegTestStack/TestAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--agentintegteststack-testagent-ba71f531-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"TestAgentRoleDefaultPolicy0A38CDBA","roles":[{"Ref":"TestAgentRole522C6259"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"agentIntegTestStack/TestAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["TestAgentRole522C6259","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"agentIntegTestStack/TestAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"agentIntegTestStack/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"agentIntegTestStack/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentIntegTest":{"id":"BedrockAgentIntegTest","path":"BedrockAgentIntegTest","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentIntegTest/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentIntegTest/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentIntegTest/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From 80ef4ea8bee8d2abae2b89d338d36aeae47cf2a7 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 17 Apr 2025 17:08:22 -0400 Subject: [PATCH 11/39] fix(bedrockl2):added integ snapshot --- ...ckAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json | 3 +++ ...AgentIntegTestDefaultTestDeployAssertE6F8548D.template.json | 3 +++ .../integ.agent.js.snapshot/agentIntegTestStack.assets.json | 3 +++ .../integ.agent.js.snapshot/agentIntegTestStack.template.json | 3 +++ .../test/bedrock/agents/integ.agent.js.snapshot/cdk.out | 3 +++ .../test/bedrock/agents/integ.agent.js.snapshot/integ.json | 3 +++ .../test/bedrock/agents/integ.agent.js.snapshot/manifest.json | 3 +++ .../test/bedrock/agents/integ.agent.js.snapshot/tree.json | 3 +++ 8 files changed, 24 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json new file mode 100644 index 0000000000000..64e2803ddf31b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3672a6ec669f77fe936ae1b1c10eb5701a425ccc1438bb2f3500905b0bc1828e +size 782 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json new file mode 100644 index 0000000000000..170d80e9c67e9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22 +size 770 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json new file mode 100644 index 0000000000000..6731bcb940063 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79fd19644a7af6211e5238d06f3cbb1fdc1b2800d029e2cc01d89351311e5ed1 +size 716 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json new file mode 100644 index 0000000000000..bb5c558848676 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6 +size 3468 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out new file mode 100644 index 0000000000000..09a6fb2429227 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ab717fae04e1e06e810f053a4ec68e3ee81bae0038f74bffa3e6ce15bbe7274 +size 20 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json new file mode 100644 index 0000000000000..24fcc52d5636e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c85b5d8073b614fec026e5c22c8353f8b84d7986a641072bb3d6f2a3ef6366eb +size 310 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json new file mode 100644 index 0000000000000..d506dabfafcb3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47aef14892c21ce59e1aed283349afebd71a0a93b5725a291eafaa12e860a36b +size 6782 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json new file mode 100644 index 0000000000000..ec595581a27e4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:506129a686d0f494e4d818572353cb18e873d6331abb209913735321b83f8464 +size 5220 From bbd172be696e79e85524973e76b856a3904a0d91 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Fri, 18 Apr 2025 12:11:24 -0400 Subject: [PATCH 12/39] feat(bedrockl2):added new integ test --- ...efaultTestDeployAssertE6F8548D.assets.json | 3 -- ...aultTestDeployAssertE6F8548D.template.json | 3 -- .../agentIntegTestStack.assets.json | 3 -- .../agentIntegTestStack.template.json | 3 -- .../agents/integ.agent.js.snapshot/cdk.out | 3 -- .../agents/integ.agent.js.snapshot/integ.json | 3 -- .../integ.agent.js.snapshot/manifest.json | 3 -- .../agents/integ.agent.js.snapshot/tree.json | 3 -- .../test/bedrock/agents/integ.agent.ts | 39 +++++++------------ 9 files changed, 15 insertions(+), 48 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json deleted file mode 100644 index 64e2803ddf31b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.assets.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3672a6ec669f77fe936ae1b1c10eb5701a425ccc1438bb2f3500905b0bc1828e -size 782 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json deleted file mode 100644 index 170d80e9c67e9..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentIntegTestDefaultTestDeployAssertE6F8548D.template.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22 -size 770 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json deleted file mode 100644 index 6731bcb940063..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.assets.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79fd19644a7af6211e5238d06f3cbb1fdc1b2800d029e2cc01d89351311e5ed1 -size 716 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json deleted file mode 100644 index bb5c558848676..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/agentIntegTestStack.template.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f325476d3b90fed3efe14c8079ae43d0b4ad717c3aecdbeec49002efa031dfc6 -size 3468 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out deleted file mode 100644 index 09a6fb2429227..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ab717fae04e1e06e810f053a4ec68e3ee81bae0038f74bffa3e6ce15bbe7274 -size 20 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json deleted file mode 100644 index 24fcc52d5636e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c85b5d8073b614fec026e5c22c8353f8b84d7986a641072bb3d6f2a3ef6366eb -size 310 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json deleted file mode 100644 index d506dabfafcb3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:47aef14892c21ce59e1aed283349afebd71a0a93b5725a291eafaa12e860a36b -size 6782 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json deleted file mode 100644 index ec595581a27e4..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:506129a686d0f494e4d818572353cb18e873d6331abb209913735321b83f8464 -size 5220 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts index bd029f7738af9..708bc8f90a2fe 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts @@ -1,42 +1,33 @@ /* * Integration test for Bedrock Agent construct - * - * Stack verification steps: - * * Verify that a Bedrock Agent is created with the specified instruction - * * Verify that the agent uses Claude 3.5 Sonnet v2.0 as its foundation model - * * Verify that the agent is configured to be deleted when the stack is destroyed */ +/// !cdk-integ aws-cdk-bedrock-agent-1 + import * as cdk from 'aws-cdk-lib'; -import { IntegTest } from '@aws-cdk/integ-tests-alpha'; +import * as integ from '@aws-cdk/integ-tests-alpha'; import * as bedrock from '../../../lib'; const app = new cdk.App(); -class TestStack extends cdk.Stack { - constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { - super(scope, id, props); - - // Create a Bedrock Agent with minimal properties - new bedrock.Agent(this, 'TestAgent', { - agentName: 'test-agent-1', - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, - // Clean up the agent after test - forceDelete: true, - }); - } -} - -const stack = new TestStack(app, 'agentIntegTestStack', { +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-agent-1', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION, }, }); -new IntegTest(app, 'BedrockAgentIntegTest', { - testCases: [stack], +// Create a Bedrock Agent with default values +new bedrock.Agent(stack, 'MyAgent', { + agentName: 'test-agent-1', + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, +}); + +new integ.IntegTest(app, 'BedrockAgent', { + testCases: [stack], }); app.synth(); + From 3e2c3fc7b93ba287861bc67ccfb20fcd0c996f67 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 21 Apr 2025 14:10:56 -0400 Subject: [PATCH 13/39] fix(bedrockl2):added new integ snapshot --- ...efaultTestDeployAssertB292ADF7.assets.json | 20 ++ ...aultTestDeployAssertB292ADF7.template.json | 36 ++++ .../aws-cdk-bedrock-agent-1.assets.json | 21 ++ .../aws-cdk-bedrock-agent-1.template.json | 154 ++++++++++++++ .../agents/integ.agent.js.snapshot/cdk.out | 1 + .../agents/integ.agent.js.snapshot/integ.json | 12 ++ .../integ.agent.js.snapshot/manifest.json | 198 ++++++++++++++++++ .../agents/integ.agent.js.snapshot/tree.json | 1 + 8 files changed, 443 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json new file mode 100644 index 0000000000000..18f4f27a25ebc --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockAgentDefaultTestDeployAssertB292ADF7 Template", + "source": { + "path": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json new file mode 100644 index 0000000000000..50644926a59f7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json @@ -0,0 +1,21 @@ +{ + "version": "41.0.0", + "files": { + "689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1": { + "displayName": "aws-cdk-bedrock-agent-1 Template", + "source": { + "path": "aws-cdk-bedrock-agent-1.template.json", + "packaging": "file" + }, + "destinations": { + "551246883740-us-east-1": { + "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", + "objectKey": "689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1.json", + "region": "us-east-1", + "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json new file mode 100644 index 0000000000000..5c88b0117abe6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json @@ -0,0 +1,154 @@ +{ + "Resources": { + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": "arn:aws:bedrock:us-east-1:551246883740:agent/*" + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-agent-1", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json new file mode 100644 index 0000000000000..af0826e620a5c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockAgent/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-agent-1" + ], + "assertionStack": "BedrockAgent/DefaultTest/DeployAssert", + "assertionStackName": "BedrockAgentDefaultTestDeployAssertB292ADF7" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json new file mode 100644 index 0000000000000..34ebf386193b4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -0,0 +1,198 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-agent-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-agent-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-agent-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://551246883740/us-east-1", + "properties": { + "templateFile": "aws-cdk-bedrock-agent-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-agent-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-lookup-role-551246883740-us-east-1", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-agent-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-agent-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-agent-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-agent-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-agent-1" + }, + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockAgentDefaultTestDeployAssertB292ADF7": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" + ], + "metadata": { + "/BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockAgent/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json new file mode 100644 index 0000000000000..188c713ac266a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-1":{"id":"aws-cdk-bedrock-agent-1","path":"aws-cdk-bedrock-agent-1","children":{"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-agent-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgent":{"id":"BedrockAgent","path":"BedrockAgent","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgent/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgent/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgent/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From ba9f1a88b9ceaac659a22eb2c0635b29e05b0973 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 21 Apr 2025 15:47:38 -0400 Subject: [PATCH 14/39] fix(bedrockl2):updated integ test --- .../aws-cdk-bedrock-agent-1.assets.json | 11 +++++----- .../aws-cdk-bedrock-agent-1.template.json | 21 ++++++++++++++++++- .../integ.agent.js.snapshot/manifest.json | 10 ++++----- .../agents/integ.agent.js.snapshot/tree.json | 2 +- .../test/bedrock/agents/integ.agent.ts | 7 +------ 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json index 50644926a59f7..1a201b412829d 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json @@ -1,18 +1,17 @@ { "version": "41.0.0", "files": { - "689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1": { + "3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7": { "displayName": "aws-cdk-bedrock-agent-1 Template", "source": { "path": "aws-cdk-bedrock-agent-1.template.json", "packaging": "file" }, "destinations": { - "551246883740-us-east-1": { - "bucketName": "cdk-hnb659fds-assets-551246883740-us-east-1", - "objectKey": "689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1.json", - "region": "us-east-1", - "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-file-publishing-role-551246883740-us-east-1" + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" } } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json index 5c88b0117abe6..cbe44793b7bca 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json @@ -14,7 +14,26 @@ } }, "ArnLike": { - "aws:SourceArn": "arn:aws:bedrock:us-east-1:551246883740:agent/*" + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } } }, "Effect": "Allow", diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json index 34ebf386193b4..32bcf072ced3f 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -11,21 +11,21 @@ }, "aws-cdk-bedrock-agent-1": { "type": "aws:cloudformation:stack", - "environment": "aws://551246883740/us-east-1", + "environment": "aws://unknown-account/unknown-region", "properties": { "templateFile": "aws-cdk-bedrock-agent-1.template.json", "terminationProtection": false, "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-deploy-role-551246883740-us-east-1", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-cfn-exec-role-551246883740-us-east-1", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-551246883740-us-east-1/689972bd65bdb3a99e628c461320e9861bb588293238ce968fbc8c8b8144c6f1.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7.json", "requiresBootstrapStackVersion": 6, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", "additionalDependencies": [ "aws-cdk-bedrock-agent-1.assets" ], "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::551246883740:role/cdk-hnb659fds-lookup-role-551246883740-us-east-1", + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", "requiresBootstrapStackVersion": 8, "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json index 188c713ac266a..06a3b101fe6f2 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -1 +1 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-1":{"id":"aws-cdk-bedrock-agent-1","path":"aws-cdk-bedrock-agent-1","children":{"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-agent-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":"arn:aws:bedrock:us-east-1:551246883740:agent/*"}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgent":{"id":"BedrockAgent","path":"BedrockAgent","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgent/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgent/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgent/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-1":{"id":"aws-cdk-bedrock-agent-1","path":"aws-cdk-bedrock-agent-1","children":{"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-agent-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgent":{"id":"BedrockAgent","path":"BedrockAgent","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgent/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgent/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgent/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts index 708bc8f90a2fe..41fb2d78d4f56 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts @@ -10,12 +10,7 @@ import * as bedrock from '../../../lib'; const app = new cdk.App(); -const stack = new cdk.Stack(app, 'aws-cdk-bedrock-agent-1', { - env: { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION, - }, -}); +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-agent-1'); // Create a Bedrock Agent with default values new bedrock.Agent(stack, 'MyAgent', { From a336b73947a659b5467b30de8164bba7a22d6a52 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 21 Apr 2025 16:35:17 -0400 Subject: [PATCH 15/39] feat(bedrockl2): updated documentation --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index d3ebeb6fd3daf..9e65748cbc4ee 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -26,7 +26,6 @@ This construct library facilitates the deployment of Bedrock Agents, enabling yo ## Table of contents -- [API](#api) - [Agents](#agents) - [Create an Agent](#create-an-agent) - [Action groups](#action-groups) @@ -37,16 +36,26 @@ This construct library facilitates the deployment of Bedrock Agents, enabling yo - [Custom Orchestration](#custom-orchestration) - [Agent Alias](#agent-alias) -## API +## Agents -See the [API documentation](../../../apidocs/namespaces/bedrock/README.md). +Amazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources. It uses the reasoning of foundation models (FMs), APIs, and data to break down user requests, gather relevant information, and efficiently complete tasks. -## Agents +### Create an Agent -Amazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources. +Building an agent is straightforward and fast. +The following example creates an Agent with a simple instruction and default prompts: + +```ts fixture=default +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); +``` ### Agent Properties +The Bedrock Agent class supports the following properties. + | Name | Type | Required | Description | |---|---|---|---| | name | string | No | The name of the agent. Defaults to a name generated by CDK | @@ -63,17 +72,6 @@ Amazon Bedrock Agents allow generative AI applications to automate complex, mult | codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false | | forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true | -### Create an Agent - -The following example creates an Agent with a simple instruction and default prompts: - -```ts fixture=default -const agent = new bedrock.Agent(this, 'Agent', { - foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, - instruction: 'You are a helpful and friendly agent that answers questions about literature.', -}); -``` - ### Action Groups An action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them. From 1c242a220deaea7dbbecdf807e3b16357ecefce2 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 1 May 2025 14:09:27 -0400 Subject: [PATCH 16/39] fix(bedrockl2): added appsec review comments --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 75 +++++++ .../aws-bedrock-alpha/bedrock/agents/agent.ts | 16 +- .../bedrock/agents/prompt-override.ts | 6 +- .../aws-bedrock-alpha/bedrock/models.ts | 34 +++ .../rosetta/default.ts-fixture | 4 +- .../test/bedrock/agents/action-group.test.ts | 2 +- .../test/bedrock/agents/integ.action-group.ts | 110 ++++++++++ .../agents/integ.agent-collaborator.ts | 52 +++++ .../test/bedrock/agents/integ.api-schema.ts | 167 +++++++++++++++ .../test/bedrock/agents/integ.memory.ts | 131 ++++++++++++ .../bedrock/agents/integ.orchestration.ts | 69 ++++++ .../bedrock/agents/integ.prompt-override.ts | 202 ++++++++++++++++++ 12 files changed, 861 insertions(+), 7 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 9e65748cbc4ee..30661621fc008 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -101,6 +101,81 @@ const agent = new bedrock.Agent(this, 'Agent', { agent.addActionGroup(actionGroup); ``` +If you chose to load your schema file from S3, the construct will provide the necessary permissions to your agent's execution role to access the schema file from the specific bucket. Similar to performing the operation through the console, the agent execution role will get a permission like: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AmazonBedrockAgentS3PolicyProd", + "Effect": "Allow", + "Action": [ + "s3:GetObject" + ], + "Resource": [ + "arn:aws:s3:::/" + ], + "Condition": { + "StringEquals": { + "aws:ResourceAccount": "ACCOUNT_NUMBER" + } + } + } + ] +} +``` + +```ts fixture=default +// create a bucket containing the input schema +const schemaBucket = new s3.Bucket(this, 'SchemaBucket', { + enforceSSL: true, + versioned: true, + publicReadAccess: false, + blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, + encryption: s3.BucketEncryption.S3_MANAGED, + removalPolicy: RemovalPolicy.DESTROY, + autoDeleteObjects: true, +}); + +// deploy the local schema file to S3 +const deployement = new aws_s3_deployment.BucketDeployment(this, 'DeployWebsite', { + sources: [aws_s3_deployment.Source.asset(path.join(__dirname, '../inputschema'))], + destinationBucket: schemaBucket, + destinationKeyPrefix: 'inputschema', +}); + +// create the agent +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', + userInputEnabled: true, + shouldPrepareAgent:true +}); + +// create a lambda function +const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { + runtime: lambda.Runtime.PYTHON_3_12, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), +}); + +// create an action group and read the schema file from S3 +const actionGroup = new bedrock.AgentActionGroup({ + name: 'query-library', + description: 'Use these functions to get information about the books in the library.', + executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction), + enabled: true, + apiSchema: bedrock.ApiSchema.fromS3File(schemaBucket, 'inputschema/action-group.yaml'), +}); + +// add the action group to the agent +agent.addActionGroup(actionGroup); + +// add dependency for the agent on the s3 deployment +agent.node.addDependency(deployement); +``` + ### Prepare the Agent The `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 8764a703a2fe0..2688f2f4720e8 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -12,7 +12,7 @@ */ import * as crypto from 'crypto'; -import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError } from 'aws-cdk-lib/core'; +import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError, Aws } from 'aws-cdk-lib/core'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as events from 'aws-cdk-lib/aws-events'; @@ -619,6 +619,18 @@ export class Agent extends AgentBase implements IAgent { sourceArn: this.agentArn, sourceAccount: Stack.of(this).account, }); + // Handle permissions to access the schema file from S3 + if (actionGroup.apiSchema?.s3File) { + this.role.addToPrincipalPolicy(new iam.PolicyStatement({ + actions: ['s3:GetObject'], + resources: [`arn:${Aws.PARTITION}:s3:::${actionGroup.apiSchema.s3File.bucketName}/${actionGroup.apiSchema.s3File.objectKey}`], + conditions: { + StringEquals: { + 'aws:ResourceAccount': Stack.of(this).account, + }, + }, + })); + } } /** @@ -699,7 +711,7 @@ export class Agent extends AgentBase implements IAgent { let errors: string[] = []; // Find if there is a conflicting action group name if (this.actionGroups?.find(ag => ag.name === actionGroup.name)) { - errors.push(`An action group with name: ${actionGroup.name} has already been defined`); + errors.push('Action group already exists'); } return errors; }; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts index 82454090378a5..8397165982dfa 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -316,17 +316,17 @@ export class PromptOverrideConfiguration { steps?.forEach(step => { const inferenceErrors = this.validateInferenceConfig(step.inferenceConfig); if (inferenceErrors.length > 0) { - errors.push(`Step ${step.stepType}: ${inferenceErrors.join(', ')}`); + errors.push(`Step ${inferenceErrors.join(', ')}`); } // Validate foundationModel if provided if (step.foundationModel !== undefined) { if (!step.foundationModel.invokableArn) { - errors.push(`Step ${step.stepType}: Foundation model must be a valid IInvokable with an invokableArn`); + errors.push('Step Foundation model must be a valid IInvokable with an invokableArn'); } // Only allow foundation model override for ROUTING_CLASSIFIER if (step.stepType !== AgentStepType.ROUTING_CLASSIFIER) { - errors.push(`Step ${step.stepType}: Foundation model can only be specified for ROUTING_CLASSIFIER step type`); + errors.push('Step Foundation model can only be specified for ROUTING_CLASSIFIER step type'); } } }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts index 799eb64dbc5d9..d813af016d826 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -204,6 +204,16 @@ export class BedrockFoundationModel implements IInvokable { optimizedForAgents: true, }); + /** + * Amazon's Nova Premier model, their most advanced Nova model. + * Provides highest quality outputs with cross-region support and agent optimization. + */ + public static readonly AMAZON_NOVA_PREMIER_V1 = new BedrockFoundationModel('amazon.nova-premier-v1:0', { + supportsAgents: true, + supportsCrossRegion: true, + optimizedForAgents: true, + }); + /** * Amazon's Titan Embed Text V1 model for text embeddings. * Generates 1536-dimensional floating-point vector embeddings. @@ -475,6 +485,30 @@ export class BedrockFoundationModel implements IInvokable { }, ); + /** + * Meta's Llama 4 Maverick 70B instruction-tuned model, their most advanced model. + * Provides state-of-the-art performance for complex language tasks with cross-region support. + */ + public static readonly META_LLAMA_4_MAVERICK_70B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama4-maverick-70b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + + /** + * Meta's Llama 4 Scout 17B instruction-tuned model, a mid-sized efficient model. + * Balances performance and resource usage with cross-region support. + */ + public static readonly META_LLAMA_4_SCOUT_17B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama4-scout-17b-instruct-v1:0', + { + supportsAgents: true, + supportsCrossRegion: true, + }, + ); + /** * Creates a BedrockFoundationModel from a CDK FoundationModelIdentifier. * @param modelId The foundation model identifier diff --git a/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture index dde0716a8af12..bcec0539e5d28 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture +++ b/packages/@aws-cdk/aws-bedrock-alpha/rosetta/default.ts-fixture @@ -4,10 +4,12 @@ import { Construct } from 'constructs'; import { Stack } from 'aws-cdk-lib'; import * as bedrock from '@aws-cdk/aws-bedrock-alpha'; import * as lambda from 'aws-cdk-lib/aws-lambda'; -import { Duration } from 'aws-cdk-lib'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import { Duration, RemovalPolicy, aws_s3_deployment } from 'aws-cdk-lib'; import { Memory } from '@aws-cdk/aws-bedrock-alpha'; + class Fixture extends Stack { constructor(scope: Construct, id: string) { super(scope, id); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts index 3d07480c7e2c6..c5e8ecf9f3a4b 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts @@ -155,6 +155,6 @@ describe('AgentActionGroup', () => { agent.addActionGroup(actionGroup1); expect(() => { agent.addActionGroup(actionGroup2); - }).toThrow(/An action group with name: DuplicateAction has already been defined/); + }).toThrow(/Action group already exists/); }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts new file mode 100644 index 0000000000000..fc399a34c9576 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts @@ -0,0 +1,110 @@ +/* + * Integration test for Bedrock Agent Action Group construct + */ + +/// !cdk-integ aws-cdk-bedrock-action-group-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-action-group-1'); + +// Create a Lambda function for the action group executor +const actionGroupFunction = new lambda.Function(stack, 'ActionGroupFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from action group' } + } + } + }; + }; + `), +}); + +// Create an API schema for the action group - using YAML format +const apiSchema = bedrock.ApiSchema.fromInline(` +openapi: 3.0.3 +info: + title: Action Group API + version: 1.0.0 +paths: + /perform-action: + post: + operationId: performAction + summary: Perform an action + description: Perform an action with the specified parameters + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - action_type + properties: + action_type: + type: string + description: Type of action to perform + parameters: + type: object + description: Additional parameters for the action + responses: + '200': + description: Action performed successfully + content: + application/json: + schema: + type: object + properties: + success: + type: boolean + result: + type: string + details: + type: object +`); + +// Create an action group executor +const actionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction); + +// Create a Bedrock Agent with custom action groups +new bedrock.Agent(stack, 'MyAgent', { + agentName: 'test-action-group-agent', + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + // Enable built-in action groups + userInputEnabled: true, + codeInterpreterEnabled: true, + // Add a custom action group + actionGroups: [ + new bedrock.AgentActionGroup({ + name: 'CustomActionGroup', + description: 'A custom action group for testing', + apiSchema: apiSchema, + executor: actionGroupExecutor, + enabled: true, + }), + ], +}); + +new integ.IntegTest(app, 'BedrockActionGroup', { + testCases: [stack], +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts new file mode 100644 index 0000000000000..69baf363fd647 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts @@ -0,0 +1,52 @@ +/* + * Integration test for Bedrock Agent Collaborator construct + */ + +/// !cdk-integ aws-cdk-bedrock-agent-collaborator-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-agent-collaborator-1'); + +// Create a collaborator agent +const collaboratorAgent = new bedrock.Agent(stack, 'CollaboratorAgent', { + agentName: 'collaborator-agent', + instruction: 'This is a collaborator agent with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, +}); + +// Create a custom alias for the collaborator agent (not using the test alias) +const collaboratorAlias = new bedrock.AgentAlias(stack, 'CollaboratorAlias', { + agentAliasName: 'collaborator-alias', + agent: collaboratorAgent, +}); + +// Create a primary agent with collaboration enabled +new bedrock.Agent(stack, 'CollaborativeAgent', { + agentName: 'collaborative-agent', + instruction: 'This is a collaborative agent with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + // Enable collaboration + agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, + // Add collaborator + agentCollaborators: [ + new bedrock.AgentCollaborator(stack, 'AgentCollaborator', { + agentAlias: collaboratorAlias, + collaborationInstruction: 'Help the primary agent with complex tasks and provide additional context', + collaboratorName: 'HelperAgent', + relayConversationHistory: true, + }), + ], +}); + +new integ.IntegTest(app, 'BedrockAgentCollaborator', { + testCases: [stack], +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts new file mode 100644 index 0000000000000..a184ddd7ed21b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts @@ -0,0 +1,167 @@ +/* + * Integration test for Bedrock Agent API Schema construct + */ + +/// !cdk-integ aws-cdk-bedrock-api-schema-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as s3 from 'aws-cdk-lib/aws-s3'; +import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-api-schema-1'); + +// Create Lambda functions for the action group executors +const inlineActionGroupFunction = new lambda.Function(stack, 'InlineActionGroupFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from inline action group' } + } + } + }; + }; + `), +}); + +const s3ActionGroupFunction = new lambda.Function(stack, 'S3ActionGroupFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from S3 action group' } + } + } + }; + }; + `), +}); + +// Create action group executors +const inlineActionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(inlineActionGroupFunction); +const s3ActionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(s3ActionGroupFunction); + +// Create a simple inline API schema +const inlineApiSchema = bedrock.ApiSchema.fromInline(` +openapi: 3.0.3 +info: + title: Simple API + version: 1.0.0 +paths: + /hello: + get: + operationId: helloWorld + summary: Say hello + description: Returns a greeting message + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string +`); + +// Create an S3 bucket for storing the API schema +const schemaBucket = new s3.Bucket(stack, 'SchemaBucket', { + removalPolicy: cdk.RemovalPolicy.DESTROY, + autoDeleteObjects: true, +}); + +// Deploy the schema file to S3 +const schemaDeployment = new s3deploy.BucketDeployment(stack, 'DeploySchema', { + sources: [s3deploy.Source.data('schema/s3-api-schema.json', `{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }`)], + destinationBucket: schemaBucket, +}); + +// Create an API schema from the S3 file +const s3ApiSchema = bedrock.ApiSchema.fromS3File(schemaBucket, 'schema/s3-api-schema.json'); + +// Create a Bedrock Agent with action groups using both API schemas +const agent = new bedrock.Agent(stack, 'ApiSchemaAgent', { + agentName: 'api-schema-agent', + instruction: 'This is an agent using an API schema with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + actionGroups: [ + new bedrock.AgentActionGroup({ + name: 'InlineApiSchemaActionGroup', + description: 'An action group using an inline API schema', + apiSchema: inlineApiSchema, + executor: inlineActionGroupExecutor, + }), + new bedrock.AgentActionGroup({ + name: 'S3ApiSchemaActionGroup', + description: 'An action group using an S3-based API schema', + apiSchema: s3ApiSchema, + executor: s3ActionGroupExecutor, + }), + ], +}); + +// Add dependency for the agent on the S3 deployment +agent.node.addDependency(schemaDeployment); + +new integ.IntegTest(app, 'BedrockApiSchema', { + testCases: [stack], +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts new file mode 100644 index 0000000000000..590e0c18f3f72 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts @@ -0,0 +1,131 @@ +/* + * Integration test for Bedrock Agent Memory configuration + */ + +/// !cdk-integ aws-cdk-bedrock-memory-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-memory-1'); + +// Create Lambda functions for the action group executors +const defaultMemoryFunction = new lambda.Function(stack, 'DefaultMemoryFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from default memory action group' } + } + } + }; + }; + `), +}); + +const customMemoryFunction = new lambda.Function(stack, 'CustomMemoryFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from custom memory action group' } + } + } + }; + }; + `), +}); + +// Create action group executors +const defaultMemoryExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(defaultMemoryFunction); +const customMemoryExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(customMemoryFunction); + +// Create a simple API schema +const apiSchema = bedrock.ApiSchema.fromInline(` +openapi: 3.0.3 +info: + title: Simple API + version: 1.0.0 +paths: + /hello: + get: + operationId: helloWorld + summary: Say hello + description: Returns a greeting message + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string +`); + +// Create action groups +const defaultMemoryActionGroup = new bedrock.AgentActionGroup({ + name: 'DefaultMemoryActionGroup', + description: 'An action group for testing default memory configuration', + apiSchema: apiSchema, + executor: defaultMemoryExecutor, +}); + +const customMemoryActionGroup = new bedrock.AgentActionGroup({ + name: 'CustomMemoryActionGroup', + description: 'An action group for testing custom memory configuration', + apiSchema: apiSchema, + executor: customMemoryExecutor, +}); + +// Test 1: Create an agent with default memory configuration +new bedrock.Agent(stack, 'AgentWithDefaultMemory', { + agentName: 'agent-with-default-memory', + instruction: 'This is an agent using default memory configuration with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + actionGroups: [defaultMemoryActionGroup], + memory: bedrock.Memory.SESSION_SUMMARY, +}); + +// Test 2: Create an agent with custom memory configuration +new bedrock.Agent(stack, 'AgentWithCustomMemory', { + agentName: 'agent-with-custom-memory', + instruction: 'This is an agent using custom memory configuration with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + actionGroups: [customMemoryActionGroup], + memory: bedrock.Memory.sessionSummary({ + memoryDuration: cdk.Duration.days(15), + maxRecentSessions: 5, + }), +}); + +new integ.IntegTest(app, 'BedrockMemory', { + testCases: [stack], +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts new file mode 100644 index 0000000000000..4ad7d8be61a3e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts @@ -0,0 +1,69 @@ +/* + * Integration test for Bedrock Agent Orchestration construct + */ + +/// !cdk-integ aws-cdk-bedrock-orchestration-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-orchestration-1'); + +// Create a Lambda function for custom orchestration +const orchestrationFunction = new lambda.Function(stack, 'OrchestrationFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Orchestration Event:', JSON.stringify(event)); + + // Example orchestration logic + const response = { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup || 'default', + apiPath: event.apiPath || '/default', + httpMethod: event.httpMethod || 'GET', + httpStatusCode: 200, + responseBody: { + application_json: { + result: 'Custom orchestration response', + timestamp: new Date().toISOString() + } + } + } + }; + + return response; + }; + `), +}); + +// Create an orchestration executor using the Lambda function +const orchestrationExecutor = bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction); + +// Create a custom orchestration configuration +const customOrchestration = { + executor: orchestrationExecutor, +}; + +// Create a Bedrock Agent with custom orchestration +new bedrock.Agent(stack, 'CustomOrchestrationAgent', { + agentName: 'custom-orchestration-agent', + instruction: 'This is an agent using custom orchestration with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + // Specify custom orchestration + orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, + customOrchestration: customOrchestration, +}); + +new integ.IntegTest(app, 'BedrockOrchestration', { + testCases: [stack], +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts new file mode 100644 index 0000000000000..5b0f375370b72 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts @@ -0,0 +1,202 @@ +/* + * Integration test for Bedrock Agent Prompt Override configuration + */ + +/// !cdk-integ aws-cdk-bedrock-prompt-override-1 + +import * as cdk from 'aws-cdk-lib'; +import * as integ from '@aws-cdk/integ-tests-alpha'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as bedrock from '../../../lib'; + +const app = new cdk.App(); + +const stack = new cdk.Stack(app, 'aws-cdk-bedrock-prompt-override-1'); + +// Create Lambda functions for the action group executors +const promptOverrideFunction = new lambda.Function(stack, 'PromptOverrideFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from prompt override action group' } + } + } + }; + }; + `), +}); + +const customParserActionFunction = new lambda.Function(stack, 'CustomParserActionFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from custom parser action group' } + } + } + }; + }; + `), +}); + +// Create a Lambda function for the custom parser +const parserFunction = new lambda.Function(stack, 'ParserFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Parser Event:', JSON.stringify(event)); + // Extract the raw model response + const rawResponse = event.invokeModelRawResponse; + + // Simple parsing logic - in a real scenario, this would be more sophisticated + const parsedResponse = { + messageVersion: '1.0', + response: rawResponse + }; + + return parsedResponse; + }; + `), +}); + +// Create action group executors +const promptOverrideExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(promptOverrideFunction); +const customParserExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(customParserActionFunction); + +// Create a simple API schema +const apiSchema = bedrock.ApiSchema.fromInline(` +openapi: 3.0.3 +info: + title: Simple API + version: 1.0.0 +paths: + /hello: + get: + operationId: helloWorld + summary: Say hello + description: Returns a greeting message + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string +`); + +// Create action groups +const promptOverrideActionGroup = new bedrock.AgentActionGroup({ + name: 'PromptOverrideActionGroup', + description: 'An action group for testing prompt override configuration', + apiSchema: apiSchema, + executor: promptOverrideExecutor, +}); + +const customParserActionGroup = new bedrock.AgentActionGroup({ + name: 'CustomParserActionGroup', + description: 'An action group for testing custom parser configuration', + apiSchema: apiSchema, + executor: customParserExecutor, +}); + +// Test 1: Create an agent with prompt override configuration using fromSteps +new bedrock.Agent(stack, 'AgentWithPromptOverride', { + agentName: 'agent-with-prompt-override', + instruction: 'This is an agent using prompt override configuration with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + actionGroups: [promptOverrideActionGroup], + promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([ + { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + stepEnabled: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Process this user request: {{user_input}}"}]}', + inferenceConfig: { + temperature: 0.2, + topP: 0.9, + topK: 250, + maximumLength: 2048, + stopSequences: ['\n\nHuman:'], + }, + }, + { + stepType: bedrock.AgentStepType.POST_PROCESSING, + stepEnabled: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Refine this response to be more concise and helpful: {{response}}"}]}', + inferenceConfig: { + temperature: 0.1, + topP: 1.0, + topK: 100, + maximumLength: 1024, + stopSequences: [], + }, + }, + ]), +}); + +// Test 2: Create an agent with prompt override configuration using withCustomParser +new bedrock.Agent(stack, 'AgentWithCustomParser', { + agentName: 'agent-with-custom-parser', + instruction: 'This is an agent using custom parser with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, + actionGroups: [customParserActionGroup], + promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({ + parser: parserFunction, + steps: [ + { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + useCustomParser: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Process this user input and prepare it for orchestration: {{user_input}}"}]}', + inferenceConfig: { + temperature: 0.0, + topP: 1.0, + topK: 250, + maximumLength: 1024, + stopSequences: [], + }, + }, + { + stepType: bedrock.AgentStepType.MEMORY_SUMMARIZATION, + useCustomParser: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Summarize this conversation for memory: {{conversation_history}}"}]}', + inferenceConfig: { + temperature: 0.0, + topP: 1.0, + topK: 250, + maximumLength: 1024, + stopSequences: [], + }, + }, + ], + }), +}); + +new integ.IntegTest(app, 'BedrockPromptOverride', { + testCases: [stack], +}); + +app.synth(); From 017e553439120c52697b4e6ef7c010c0827b8a1d Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 1 May 2025 14:35:07 -0400 Subject: [PATCH 17/39] fix(bedrockl2): added integ test snapshots --- packages/@aws-cdk/aws-bedrock-alpha/.jsii | 142 ++- .../aws-bedrock-alpha/.jsii.tabl.json.gz | Bin 0 -> 8138 bytes ...efaultTestDeployAssertE2AFA81B.assets.json | 20 + ...aultTestDeployAssertE2AFA81B.template.json | 36 + ...aws-cdk-bedrock-action-group-1.assets.json | 20 + ...s-cdk-bedrock-action-group-1.template.json | 282 ++++++ .../integ.action-group.js.snapshot/cdk.out | 1 + .../integ.action-group.js.snapshot/integ.json | 12 + .../manifest.json | 264 +++++ .../integ.action-group.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertB2859CB2.assets.json | 20 + ...aultTestDeployAssertB2859CB2.template.json | 36 + ...k-bedrock-agent-collaborator-1.assets.json | 20 + ...bedrock-agent-collaborator-1.template.json | 349 +++++++ .../cdk.out | 1 + .../integ.json | 12 + .../manifest.json | 326 +++++++ .../tree.json | 1 + ...efaultTestDeployAssert1DDDDC57.assets.json | 20 + ...aultTestDeployAssert1DDDDC57.template.json | 36 + .../schema/s3-api-schema.json | 33 + ...f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip | 3 + .../index.py | 388 ++++++++ .../aws-cdk-bedrock-api-schema-1.assets.json | 76 ++ ...aws-cdk-bedrock-api-schema-1.template.json | 905 ++++++++++++++++++ .../integ.api-schema.js.snapshot/cdk.out | 1 + .../integ.api-schema.js.snapshot/integ.json | 12 + .../manifest.json | 634 ++++++++++++ .../integ.api-schema.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert5AD90360.assets.json | 20 + ...aultTestDeployAssert5AD90360.template.json | 36 + .../aws-cdk-bedrock-memory-1.assets.json | 20 + .../aws-cdk-bedrock-memory-1.template.json | 544 +++++++++++ .../agents/integ.memory.js.snapshot/cdk.out | 1 + .../integ.memory.js.snapshot/integ.json | 12 + .../integ.memory.js.snapshot/manifest.json | 420 ++++++++ .../agents/integ.memory.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertACFAFF30.assets.json | 20 + ...aultTestDeployAssertACFAFF30.template.json | 36 + ...ws-cdk-bedrock-orchestration-1.assets.json | 20 + ...-cdk-bedrock-orchestration-1.template.json | 282 ++++++ .../integ.orchestration.js.snapshot/cdk.out | 1 + .../integ.json | 12 + .../manifest.json | 264 +++++ .../integ.orchestration.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert7D38F1F4.assets.json | 20 + ...aultTestDeployAssert7D38F1F4.template.json | 36 + ...-cdk-bedrock-prompt-override-1.assets.json | 20 + ...dk-bedrock-prompt-override-1.template.json | 644 +++++++++++++ .../integ.prompt-override.js.snapshot/cdk.out | 1 + .../integ.json | 12 + .../manifest.json | 464 +++++++++ .../tree.json | 1 + 53 files changed, 6496 insertions(+), 44 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsii b/packages/@aws-cdk/aws-bedrock-alpha/.jsii index cfce73f395aef..d57cec564f903 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/.jsii +++ b/packages/@aws-cdk/aws-bedrock-alpha/.jsii @@ -3973,7 +3973,7 @@ }, "name": "@aws-cdk/aws-bedrock-alpha", "readme": { - "markdown": "# Amazon Bedrock Construct Library\n\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\n| **Language** | **Package** |\n| :--------------------------------------------------------------------------------------------- | --------------------------------------- |\n| ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) TypeScript | `@aws-cdk/aws-bedrock-alpha` |\n\n[Amazon Bedrock](https://aws.amazon.com/bedrock/) is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI.\n\nThis construct library facilitates the deployment of Bedrock Agents, enabling you to create sophisticated AI applications that can interact with your systems and data sources.\n\n## Table of contents\n\n- [API](#api)\n- [Agents](#agents)\n - [Create an Agent](#create-an-agent)\n - [Action groups](#action-groups)\n - [Prepare the Agent](#prepare-the-agent)\n - [Prompt Override Configuration](#prompt-override-configuration)\n - [Memory Configuration](#memory-configuration)\n - [Agent Collaboration](#agent-collaboration)\n - [Custom Orchestration](#custom-orchestration)\n - [Agent Alias](#agent-alias)\n\n## API\n\nSee the [API documentation](../../../apidocs/namespaces/bedrock/README.md).\n\n## Agents\n\nAmazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources.\n\n### Agent Properties\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| name | string | No | The name of the agent. Defaults to a name generated by CDK |\n| instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters |\n| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent |\n| existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role |\n| shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false |\n| idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour |\n| kmsKey | kms.IKey | No | The KMS key of the agent if custom encryption is configured. Defaults to AWS managed key |\n| description | string | No | A description of the agent. Defaults to no description |\n| actionGroups | AgentActionGroup[] | No | The Action Groups associated with the agent |\n| promptOverrideConfiguration | PromptOverrideConfiguration | No | Overrides some prompt templates in different parts of an agent sequence configuration |\n| userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false |\n| codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false |\n| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true |\n\n### Create an Agent\n\nThe following example creates an Agent with a simple instruction and default prompts:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n```\n\n### Action Groups\n\nAn action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them.\n\nExample:\n\n```ts fixture=default\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nagent.addActionGroup(actionGroup);\n```\n\n### Prepare the Agent\n\nThe `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false.\n\nCreating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**.\n\n### Prompt Override Configuration\n\nBedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured:\n\n- PRE_PROCESSING\n- ORCHESTRATION\n- POST_PROCESSING\n- ROUTING_CLASSIFIER\n- MEMORY_SUMMARIZATION\n- KNOWLEDGE_BASE_RESPONSE_GENERATION\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n stepEnabled: true,\n customPromptTemplate: 'Your custom prompt template here',\n inferenceConfig: {\n temperature: 0.0,\n topP: 1,\n topK: 250,\n maximumLength: 1,\n stopSequences: [\"\\n\\nHuman:\"],\n },\n }\n ])\n});\n```\n\nYou can also use a custom Lambda parser to process the model's output:\n\n```ts fixture=default\nconst parserFunction = new lambda.Function(this, 'ParserFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda'),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({\n parser: parserFunction,\n steps: [\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n useCustomParser: true,\n customPromptTemplate: 'Your custom prompt template here',\n }\n ]\n })\n});\n```\n\n### Memory Configuration\n\nAgents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'MyAgent', {\n agentName: 'MyAgent',\n instruction: 'Your instruction here',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n memory: Memory.sessionSummary({\n maxRecentSessions: 10, // Keep the last 10 session summaries\n memoryDuration: Duration.days(20), // Retain summaries for 20 days\n }),\n});\n```\n\n### Agent Collaboration\n\nAgent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries.\n\nExample:\n\n```ts fixture=default\n// Create a specialized agent\nconst customerSupportAgent = new bedrock.Agent(this, 'CustomerSupportAgent', {\n instruction: 'You specialize in answering customer support questions.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n});\n\n// Create an agent alias\nconst customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias', {\n agent: customerSupportAgent,\n agentAliasName: 'production',\n});\n\n// Create a main agent that collaborates with the specialized agent\nconst mainAgent = new bedrock.Agent(this, 'MainAgent', {\n instruction: 'You route specialized questions to other agents.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR,\n agentCollaborators: [\n new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', {\n agentAlias: customerSupportAlias,\n collaborationInstruction: 'Route customer support questions to this agent.',\n collaboratorName: 'CustomerSupport',\n relayConversationHistory: true,\n }),\n ],\n});\n```\n\n### Custom Orchestration\n\nCustom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups.\n\nExample:\n\n```ts fixture=default\nconst orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda/orchestration'),\n});\n\nconst agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', {\n instruction: 'You are a helpful assistant with custom orchestration logic.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION,\n customOrchestration: {\n executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction),\n },\n});\n```\n\n### Agent Alias\n\nAfter you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases.\n\nTo deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias.\n\nBy default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nconst agentAlias = new bedrock.AgentAlias(this, 'myalias', {\n agentAliasName: 'production',\n agent: agent,\n agentVersion: '1', // optional\n description: 'Production version of my agent'\n});\n```\n" + "markdown": "# Amazon Bedrock Construct Library\n\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\n| **Language** | **Package** |\n| :--------------------------------------------------------------------------------------------- | --------------------------------------- |\n| ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) TypeScript | `@aws-cdk/aws-bedrock-alpha` |\n\n[Amazon Bedrock](https://aws.amazon.com/bedrock/) is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI.\n\nThis construct library facilitates the deployment of Bedrock Agents, enabling you to create sophisticated AI applications that can interact with your systems and data sources.\n\n## Table of contents\n\n- [Agents](#agents)\n - [Create an Agent](#create-an-agent)\n - [Action groups](#action-groups)\n - [Prepare the Agent](#prepare-the-agent)\n - [Prompt Override Configuration](#prompt-override-configuration)\n - [Memory Configuration](#memory-configuration)\n - [Agent Collaboration](#agent-collaboration)\n - [Custom Orchestration](#custom-orchestration)\n - [Agent Alias](#agent-alias)\n\n## Agents\n\nAmazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources. It uses the reasoning of foundation models (FMs), APIs, and data to break down user requests, gather relevant information, and efficiently complete tasks.\n\n### Create an Agent\n\nBuilding an agent is straightforward and fast.\nThe following example creates an Agent with a simple instruction and default prompts:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n```\n\n### Agent Properties\n\nThe Bedrock Agent class supports the following properties.\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| name | string | No | The name of the agent. Defaults to a name generated by CDK |\n| instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters |\n| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent |\n| existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role |\n| shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false |\n| idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour |\n| kmsKey | kms.IKey | No | The KMS key of the agent if custom encryption is configured. Defaults to AWS managed key |\n| description | string | No | A description of the agent. Defaults to no description |\n| actionGroups | AgentActionGroup[] | No | The Action Groups associated with the agent |\n| promptOverrideConfiguration | PromptOverrideConfiguration | No | Overrides some prompt templates in different parts of an agent sequence configuration |\n| userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false |\n| codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false |\n| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true |\n\n### Action Groups\n\nAn action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them.\n\nExample:\n\n```ts fixture=default\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nagent.addActionGroup(actionGroup);\n```\n\nIf you chose to load your schema file from S3, the construct will provide the necessary permissions to your agent's execution role to access the schema file from the specific bucket. Similar to performing the operation through the console, the agent execution role will get a permission like:\n\n```json\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"AmazonBedrockAgentS3PolicyProd\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::/\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:ResourceAccount\": \"ACCOUNT_NUMBER\"\n }\n }\n }\n ]\n}\n```\n\n```ts fixture=default\n// create a bucket containing the input schema\nconst schemaBucket = new s3.Bucket(this, 'SchemaBucket', {\n enforceSSL: true,\n versioned: true,\n publicReadAccess: false,\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n encryption: s3.BucketEncryption.S3_MANAGED,\n removalPolicy: RemovalPolicy.DESTROY,\n autoDeleteObjects: true,\n});\n\n// deploy the local schema file to S3\nconst deployement = new aws_s3_deployment.BucketDeployment(this, 'DeployWebsite', {\n sources: [aws_s3_deployment.Source.asset(path.join(__dirname, '../inputschema'))],\n destinationBucket: schemaBucket,\n destinationKeyPrefix: 'inputschema',\n});\n\n// create the agent\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n userInputEnabled: true,\n shouldPrepareAgent:true\n});\n\n// create a lambda function\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\n// create an action group and read the schema file from S3\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromS3File(schemaBucket, 'inputschema/action-group.yaml'),\n});\n\n// add the action group to the agent\nagent.addActionGroup(actionGroup);\n\n// add dependency for the agent on the s3 deployment\nagent.node.addDependency(deployement);\n```\n\n### Prepare the Agent\n\nThe `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false.\n\nCreating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**.\n\n### Prompt Override Configuration\n\nBedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured:\n\n- PRE_PROCESSING\n- ORCHESTRATION\n- POST_PROCESSING\n- ROUTING_CLASSIFIER\n- MEMORY_SUMMARIZATION\n- KNOWLEDGE_BASE_RESPONSE_GENERATION\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n stepEnabled: true,\n customPromptTemplate: 'Your custom prompt template here',\n inferenceConfig: {\n temperature: 0.0,\n topP: 1,\n topK: 250,\n maximumLength: 1,\n stopSequences: [\"\\n\\nHuman:\"],\n },\n }\n ])\n});\n```\n\nYou can also use a custom Lambda parser to process the model's output:\n\n```ts fixture=default\nconst parserFunction = new lambda.Function(this, 'ParserFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda'),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({\n parser: parserFunction,\n steps: [\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n useCustomParser: true,\n customPromptTemplate: 'Your custom prompt template here',\n }\n ]\n })\n});\n```\n\n### Memory Configuration\n\nAgents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'MyAgent', {\n agentName: 'MyAgent',\n instruction: 'Your instruction here',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n memory: Memory.sessionSummary({\n maxRecentSessions: 10, // Keep the last 10 session summaries\n memoryDuration: Duration.days(20), // Retain summaries for 20 days\n }),\n});\n```\n\n### Agent Collaboration\n\nAgent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries.\n\nExample:\n\n```ts fixture=default\n// Create a specialized agent\nconst customerSupportAgent = new bedrock.Agent(this, 'CustomerSupportAgent', {\n instruction: 'You specialize in answering customer support questions.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n});\n\n// Create an agent alias\nconst customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias', {\n agent: customerSupportAgent,\n agentAliasName: 'production',\n});\n\n// Create a main agent that collaborates with the specialized agent\nconst mainAgent = new bedrock.Agent(this, 'MainAgent', {\n instruction: 'You route specialized questions to other agents.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR,\n agentCollaborators: [\n new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', {\n agentAlias: customerSupportAlias,\n collaborationInstruction: 'Route customer support questions to this agent.',\n collaboratorName: 'CustomerSupport',\n relayConversationHistory: true,\n }),\n ],\n});\n```\n\n### Custom Orchestration\n\nCustom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups.\n\nExample:\n\n```ts fixture=default\nconst orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda/orchestration'),\n});\n\nconst agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', {\n instruction: 'You are a helpful assistant with custom orchestration logic.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION,\n customOrchestration: {\n executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction),\n },\n});\n```\n\n### Agent Alias\n\nAfter you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases.\n\nTo deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias.\n\nBy default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nconst agentAlias = new bedrock.AgentAlias(this, 'myalias', {\n agentAliasName: 'production',\n agent: agent,\n agentVersion: '1', // optional\n description: 'Production version of my agent'\n});\n```\n" }, "repository": { "directory": "packages/@aws-cdk/aws-bedrock-alpha", @@ -4226,7 +4226,7 @@ }, "locationInModule": { "filename": "bedrock/agents/agent.ts", - "line": 635 + "line": 647 }, "name": "addActionGroups", "parameters": [ @@ -4247,7 +4247,7 @@ }, "locationInModule": { "filename": "bedrock/agents/agent.ts", - "line": 627 + "line": 639 }, "name": "addAgentCollaborator", "parameters": [ @@ -4265,7 +4265,7 @@ }, "locationInModule": { "filename": "bedrock/agents/agent.ts", - "line": 749 + "line": 761 }, "name": "generatePhysicalName", "overrides": "aws-cdk-lib.Resource", @@ -6857,7 +6857,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 548 + "line": 582 }, "parameters": [ { @@ -6892,7 +6892,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 497 + "line": 531 }, "name": "fromCdkFoundationModel", "parameters": [ @@ -6931,7 +6931,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 484 + "line": 518 }, "name": "fromCdkFoundationModelId", "parameters": [ @@ -6969,7 +6969,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 575 + "line": 609 }, "name": "asArn", "parameters": [ @@ -6995,7 +6995,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 587 + "line": 621 }, "name": "asIModel", "parameters": [ @@ -7022,7 +7022,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 596 + "line": 630 }, "name": "grantInvoke", "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", @@ -7047,7 +7047,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 608 + "line": 642 }, "name": "grantInvokeAllRegions", "parameters": [ @@ -7071,7 +7071,7 @@ }, "locationInModule": { "filename": "bedrock/models.ts", - "line": 567 + "line": 601 }, "name": "toString", "returns": { @@ -7171,6 +7171,24 @@ "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" } }, + { + "const": true, + "docs": { + "remarks": "Provides highest quality outputs with cross-region support and agent optimization.", + "stability": "experimental", + "summary": "Amazon's Nova Premier model, their most advanced Nova model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 211 + }, + "name": "AMAZON_NOVA_PREMIER_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, { "const": true, "docs": { @@ -7234,7 +7252,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 292 + "line": 302 }, "name": "ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0", "static": true, @@ -7251,7 +7269,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 283 + "line": 293 }, "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V1_0", "static": true, @@ -7268,7 +7286,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 274 + "line": 284 }, "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V2_0", "static": true, @@ -7285,7 +7303,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 265 + "line": 275 }, "name": "ANTHROPIC_CLAUDE_3_7_SONNET_V1_0", "static": true, @@ -7303,7 +7321,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 319 + "line": 329 }, "name": "ANTHROPIC_CLAUDE_HAIKU_V1_0", "static": true, @@ -7320,7 +7338,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 351 + "line": 361 }, "name": "ANTHROPIC_CLAUDE_INSTANT_V1_2", "static": true, @@ -7338,7 +7356,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 301 + "line": 311 }, "name": "ANTHROPIC_CLAUDE_OPUS_V1_0", "static": true, @@ -7356,7 +7374,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 310 + "line": 320 }, "name": "ANTHROPIC_CLAUDE_SONNET_V1_0", "static": true, @@ -7374,7 +7392,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 341 + "line": 351 }, "name": "ANTHROPIC_CLAUDE_V2", "static": true, @@ -7391,7 +7409,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 328 + "line": 338 }, "name": "ANTHROPIC_CLAUDE_V2_1", "static": true, @@ -7409,7 +7427,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 367 + "line": 377 }, "name": "COHERE_EMBED_ENGLISH_V3", "static": true, @@ -7427,7 +7445,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 380 + "line": 390 }, "name": "COHERE_EMBED_MULTILINGUAL_V3", "static": true, @@ -7445,7 +7463,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 395 + "line": 405 }, "name": "DEEPSEEK_R1_V1", "static": true, @@ -7463,7 +7481,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 422 + "line": 432 }, "name": "META_LLAMA_3_1_70B_INSTRUCT_V1", "static": true, @@ -7480,7 +7498,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 410 + "line": 420 }, "name": "META_LLAMA_3_1_8B_INSTRUCT_V1", "static": true, @@ -7498,7 +7516,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 434 + "line": 444 }, "name": "META_LLAMA_3_2_11B_INSTRUCT_V1", "static": true, @@ -7516,7 +7534,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 458 + "line": 468 }, "name": "META_LLAMA_3_2_1B_INSTRUCT_V1", "static": true, @@ -7534,7 +7552,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 446 + "line": 456 }, "name": "META_LLAMA_3_2_3B_INSTRUCT_V1", "static": true, @@ -7551,7 +7569,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 470 + "line": 480 }, "name": "META_LLAMA_3_3_70B_INSTRUCT_V1", "static": true, @@ -7559,6 +7577,42 @@ "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" } }, + { + "const": true, + "docs": { + "remarks": "Provides state-of-the-art performance for complex language tasks with cross-region support.", + "stability": "experimental", + "summary": "Meta's Llama 4 Maverick 70B instruction-tuned model, their most advanced model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 492 + }, + "name": "META_LLAMA_4_MAVERICK_70B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, + { + "const": true, + "docs": { + "remarks": "Balances performance and resource usage with cross-region support.", + "stability": "experimental", + "summary": "Meta's Llama 4 Scout 17B instruction-tuned model, a mid-sized efficient model." + }, + "immutable": true, + "locationInModule": { + "filename": "bedrock/models.ts", + "line": 504 + }, + "name": "META_LLAMA_4_SCOUT_17B_INSTRUCT_V1", + "static": true, + "type": { + "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" + } + }, { "const": true, "docs": { @@ -7569,7 +7623,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 211 + "line": 221 }, "name": "TITAN_EMBED_TEXT_V1", "static": true, @@ -7587,7 +7641,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 224 + "line": 234 }, "name": "TITAN_EMBED_TEXT_V2_1024", "static": true, @@ -7605,7 +7659,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 250 + "line": 260 }, "name": "TITAN_EMBED_TEXT_V2_256", "static": true, @@ -7623,7 +7677,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 237 + "line": 247 }, "name": "TITAN_EMBED_TEXT_V2_512", "static": true, @@ -7639,7 +7693,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 520 + "line": 554 }, "name": "invokableArn", "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", @@ -7655,7 +7709,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 515 + "line": 549 }, "name": "modelArn", "type": { @@ -7670,7 +7724,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 510 + "line": 544 }, "name": "modelId", "type": { @@ -7685,7 +7739,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 525 + "line": 559 }, "name": "supportsAgents", "type": { @@ -7700,7 +7754,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 530 + "line": 564 }, "name": "supportsCrossRegion", "type": { @@ -7715,7 +7769,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 541 + "line": 575 }, "name": "supportsKnowledgeBase", "type": { @@ -7731,7 +7785,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 547 + "line": 581 }, "name": "supportedVectorType", "optional": true, @@ -7753,7 +7807,7 @@ "immutable": true, "locationInModule": { "filename": "bedrock/models.ts", - "line": 536 + "line": 570 }, "name": "vectorDimensions", "optional": true, @@ -9266,5 +9320,5 @@ } }, "version": "0.0.0", - "fingerprint": "y4Ek1Lh3YA1jEm2X2QwMkZCc/w0FENetidN+N243fr4=" + "fingerprint": "IKB+3VRIiEOESTTCB+oaT8NKZufy41aa754QPZTRpqI=" } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz b/packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..51439c2a7ad6fe32b4776a05b51b50fd72df7c0c GIT binary patch literal 8138 zcmV;*A2r|~iwFP!000006YV_>bDOxfe?`xE(>Qm$4&NWXNnVro&fay0 zCqOi8ZSVqao7c&IeAt(Z;wyTuV1~pxI8;` zPT!oofBwRGb#nIlz4JkKB-&#brCGA_aFgk5@JqY`FhKx<8#G@At2uy?4}v5_kw3o$ z*@iGP9$p~s=22-##GR`VwfGKzYble^NokNI>5%L@S0y%W# zV=NJp{~G_i3g-xxO0TC4|4GUha&uZiUsmA zsRZU6ePtQuw=@jLS6LE9pN18JM&Mb+I^So}EUO`80=i|%=|I@^(GgAmPq+z)2I7fp?maNcd5d0pc?@)je6nV%WOn&Wn5~0gr zv=$`i;%+!Gy|!s{&_Uzw{?5*#FY#yS&M~rcZp5sRj!%oPgO8&@u$s@W3YI-S1~0>J zn7rU?nB9OS^ghE+C7g*4`2lySlMTz5MaaWYK3c!?$zSwzOzlLU{L%s=pgun9W zLXnSr;G!T-5P>Ps1>N`y!f$vti|%Gv!=<-T2EV-yBmXpBMHx!4CY0sDL>Ub%X)v)y z16h^^6L~aH%1?PPQSqlnerqcEH0XUp&OcR29ZZxvq9zg+J8%tX`ikz#hNK0i>Z+ci>bj=r5`swgWaJ|Rk)|uQEF;s$dRtaJQ?mj^3JhO? zlBX-a=1Znw`o3wn0a61~fu>BIXU#?$WoI9!`D-`kuM*bWn)7c=5 zeDrNhf0sRZv0rtAsXxY&?7%cd*$}J8@o#Y$4IRf1lL#&lezWoTn6x-1gZe2S)NF8c zG>eX~?6G65Pg|H_4aqCuZl|-s?<8^@nh5JveA+V{BZ9DPIHDvOhHj>Np&3wkfd2Srfv(4ml+ zM@6p@HfR3y8XI?V2`)n?^={AtR*zbSSNRo!aO{uFyV1@fdwdHQa~9)&>KS4=!ZGxH zhebX|i4A6wP1&MKz7)f9`Xm%X4wjp1Qc(m`&@Pm(h!ExzNU>PvdU%?Dj9(`4;v{E` ze{Cd+cf=6Z#>>v1Sy>cahnrabEqAQY9Wqzwkr_Qm!*)t&tYjd36pGMF-7qWjL5nu)nJLK&vBf>omYbRm;s*yL&5N{yj_4u4X zt|x^njDvMGD_o1$3FUhPo^kd#58zP=pA=ow-wq@3G%!a^ay=+lm;4+Si+kB6{^3+6 zTIjp+eRe2=d{S0<&_vn=aZDEV&xBSxA3iqO^%2$8Kt3YIc-P@~rVa836*6B2J+v8MWo~wSSJ|If4<<3;F$04=|4`E;%*p-h+5zT~X0(A9)_su+ilW^bAk8dh1jM zYwF@qpdpG7O(NC^4JZAk&($0sMPVlvk@MS<-B9&}7{n36~xq2Rs#ewAdQDNBXC4ny8e!o?r*Oc>ck1P)w#{jPoIk zmhZlMP}+cYIEJ0pKooRo0XtjY6SZt>0S*|`x6i@tb8t^D2e)_s_U_-_{d+L?@8NU6 z7Rdo?8chN#_*1Ep!75D#%Le|U4kiZ83ad0LoPTOnc37p^VU=cwWl5MGwiSdl&j@r| zmHYr1J_=mjkYqowBrh;r-;^Z7c3sm9bjkIRYPy~cwZIM}MYDY=&mc*jr|6RGTdM47 zmhQqJ@Fm@pT<99QW?QOZ>6WQmx`aFz1-hmvwr#orv{lcv`<8ef01`X|5V$MvGs>_E z&R`f}`-x>RjFzhmkR;+PBA*Tgoq|*y|D1m>bACit$i*t*iDlhGPI~o*O;1wqpU+t? zSMEIYoCHCfa`RA{PG7=#THJQ$vG>`bK=eL-3w-%9zj~5i9RK|0;`Ft1^5#wX4qkFg z61wGEzbLPbuTw1xw<$%e{uc8^2_uYs}vO z8jH|0R}JxJul%U+P-O1_sRF?y!m1?aELQ4rrxnZHzG!6QqLEZ}Fb;>j+yhRwk3|vd zl3LIw6ya!<#SQsiQ+QEz=A$Kc86xi%1aVUJ17d>CR0Wj=EIN-c_u(g0t%r;n?pN1w ze7u-XR{kv9cW%G&KVY?y8cO!gQ7_!g5R#>@~W*%^KW|`#E9&( g&jOkZ2s;d9K1C%*q&Y=-;PZf$CXsbZ}eV)CV}u7&?CtofHq>glRU8gCRE)?lTEKs+F(tcAAsK7Rb_64{L_H19?rm z{W#TNHM9LFC1I?+OXj3c(dJ{?<+#@XX5wOq&ux9-O}E7P~r*$n}PF{YBkG00?(Ma_;*qcSa<-f6@lfPycME8J+A>0{~(8K z_yH3j3W7VOcQ7of77IUM0t8WThnua>GR_Z};GneUe;#vJoodED%Nq0bmZ6d|y`F9X z>jg}v#Y>zt!rCPX8#8*In05c4q-JeypVO62>?h#Yk0JSbsEFL&uv97#)Q-6h2jR=wkRr;M4j)G0F=3JejZlQx;ix4CP`A5LPYxu!yV0H*XoMfiQEZkMAc$>d z26|-QDZ)8tqQH1sIt|+--w%0*;IK%&H^L1KPk@7AJb^>DyHR&W;87}+MEQURE>j|z zciya*lF*DHO#0^l{z}z@_p!nI%EOH+4~2I0u+wxN@|61HP4*veQHZSA`&A)-npGi0 zb{=m!mSVQl8!8L>3Yt^V*N?trsI`}Icq^+u1e z-e?~W*vA9*@qm3iU>^_I#{>5906re@@T&x6x>c-cj|O<%oJ>~>YIL+L*+sJN`)*(=$kYA6M6zV*x{CuFlB!!Wgqr2+uJ5Tz;3C_zR7q0Y0Iw)C zp>Au2i#L`vY|9Ercam@Vz78cbcnSwYygm8P#kq5S@!`aIb9Vj0`5^aQj+Lfin!zZm zs&kh~yjW&V`~@XR=p)CAqagf5ebVwxE_0|03UtcC&;>6UTBgHat2!Ed!O3oyXv(4B zDnrZb+a(%bzI)+ZzPmVmadmZe{?AdZp1E>;U? zj-pT5O`}Cw6Q{E35Wc%Ftxi z4mJeSuDhfdJm=AJ`3e3)n&2CJXWuK_793ktS68f6;1IVe& z%&#ApV&S9Jk0xDL8%M&`yKA{k54H7xHrgqgS zUq>Evp>IRW*AVg)3;Bxc1_}<_>%QcBitVYA7X*2n-nTRv`6kp|S+iVAk^-oBl4N_D zWd@37tBNWiS5aL_)lEb3B;Rs%WGI?%Ay<-n#_5+Z!P|@V+5GD=2i;=duY#rSweQz# zK<-p~ME!+Q4A`_gMesi-0~3@d7p65z)-np|^jH2tjfpp%5Z8ML_sL}dvV9%@>h+`s zxL;y}%K{W%X>MSnY`~J^@3swj8d9*`UOa_NY`Yf^Ck{XMNUx`o()f3n-Ed5c2gY9D z#+N@UzYL}|QrA)!T$H{eNy0v=o@3ZNX#&W`Q(UKwM!=ZwTs^%fY1`F9+wFR|5U`hg&__L`=gtK5Ixg z4eXOElcr59vMG5ope0+wc3LJ1+EP10;H?uq`K}9Wm!0XJ-6wqRk=PJ=nk_}1yiE45 z@09LW-+4%bYCrm9f~OJ#Y8XiB;4Ryv1r!r491NjKn{f)aj2z|DC!WbOQAyZ6B1qH` z%x6p@Z}9Q*C5p0>bGP>SlHU1}hK<-wdgVbN>v3XOtEW5wBn>Gh323XnuAhk4ysryqR!G-Ze+ z&r+2@Q3B5oG#Li6>MNeCn{MEllH?k)Bq^3Jxwh%)x(BTQK@GcTuBLg=lzdx*l5V<4 zMu8qko}oc#NuF)%x-D52(iP9wWl4gv6c|XcR2?cdR0Fh=wIXkC`BY90?a)(J>NgwN znS{N>*OBioC$z}5_>?H~af(vxIy>oVv4F`flS^5^Z%%?d{QeXuoyyV(fCKOvp(R;I z2Gb145}*Kp^b(?!=_Y@U;};pE!XAx%c$*HDB5=B+r4SX0TQUdvm2!*yIzXd#NUlBxJQEK2Z@RtZ&BU$hketVbGibCVGKu)aVR*JO}J{avba!N>>ZzW9oAag---KmN5vsS*K5yplX*Gizv zTIs%Ak$1{5Lb>g6aly$Yo2$u|iYe;3bUK2j+lh z#_lGq+NBnnd0vIHM3)aRtL+0c`vA?83()LM%nvm&4_^4Hkiu7$L>=(4)kWc}LZc6P zltHfr8P*lL8p0TZ=}Cs^8j@vrS|A0kEg6BQ$&%)2z6?FvlQr2gby+rD$wsoLTArtR zfo_|o24P@ed#LM3g3$17Uqhy0s;aANvTQ4=8_1GjN&%ET(~w;J)Adx_v^~S~P1lkv z&kgVxdY)o^T5P|QE|C|)dH8?GFSjtt!$&A_($x|RzSA9&IHllM1bR&ff_Wg`EQahh zgf(~ZR6w6vZ9p{MWsssgQuVajcZbX%=OIi*gU8n!2i@X}tr*CA;vzItF;2N4PX3@G zl(S4?e?<#V8m|l%SiG1$o4j~Fhi;s}45h?O=KIGqNsAk-AR0v3E%7*fRfA>=hx1oIEpNq19%j9IfBE9whqJ4TcP(AS3EoqqoRqfq)<$y{ zhTEH=MqdFV;LG&_V0LH@kN>_`-*ULT)O}~Duc?s4+HMfL^u}b3Dk=)G}oesTH7I> z5RI*=6Y@$uHC6+Rt<0_@utWlrnSV48?j)X4+Q)o&}iJC>m<3aN@L%)WXp9r z?H$%>r;JK_MKoG@esKYKca%GteUDY`(r1K`TQpi{=vu7Yx{Ic_QfIplWY><+Yf*3v zL$&C+3ZgHPh{|gO`-dU|G@wc)H{?}ZkD+a^@dz)lIQ$Y7Qz?Xnt3g{Z@7i#TmKBA0*3+x*w!{_(S%(K z0q&Q{S)(R}3bJqBr$tjXlR#^V(znx|J5B$TXLzldt8$7`bUYj57aS5wAH)f3uwdsyif=wrK(mr3!*9>sJWTS&P$=5VA zbSzC7*3l{OD?53rrdkVRH$2R84MfF7O;)3xC0)bNqF3uA+g!;C9zoPCil&-7$F<#U1% z&|r0Xvmgb&0ANYms+$O4o6k1^ha0M+LqVT~GOE9J1>5G+ado73WHa@TPb=YX{K$R5 za;o)(>$@n1<(>_}w|PX*^*8k<2bBo@2`VFc5d5q!#kn$zeU-w#O5v$gDeQf|z0bGz z`Sw2F&V0UyU-4tp6+c?-l$h2PKN2m%(P$BlN{et*T7;u^?>1+lKv!KuRRhh?OciRD z=4qPh8j4|BmgT96f{Z{4R8k3{_6VTt#k42 z^c6mP@8tUI;=DjG+2M`ruIx#GA|}mI9Hu3Hu;4VUlCy?lhTCR=R4ih|woT&Nxb|`P ziW9JJubtyM7At`7t(eYcTK*wsdP}?ydG`>%q>u&o#$&79RFvY7XxL6)eC_=W4q` zQ4iNC=rt_fwT^C^^P&?kdLab#x1AC z9u!-OaSbNmncynT^u1`D3Mv#7r?)NGAbCdS&|O|k%eEXs=Ks;VbMWlE#a|s{izD)G)?f~^^$N&hkjXh z3}{0T2Vg-5osZ=y9kjldusveZ_akjRmcC}SVny4v3l!T|AF?auz!b1F&#!%;l*8=^ z(T|U7RDWJkJqKG)_os9Mc{|xR3g6y`@|{6w!UP;YtY6htvc^_Rw8)CD{Qt&f$`8Yw z8;+XHkV7(hV7Q(i{#YkxxAV(Z2RGb{Z}^Dp7He55KIvM%(tCMIx!k2tBlH4gntF4& zXvMS9EMqiEz0F!?dOF8LuQ4cV9q#Q}<4`y|=vUE2S%NF#YA@0%tGp`10Xd2v%7>%6 zmhf5f9(Ggo@JU4h)gQUB+Jn?t|KQMKyA150HhEuiypJ?J-AL2ky8KbB%MaVbz1&Sr zsqLnw^$g93cTuyTr&zwOxxQ`q$cCO_yU5icG)=>nBopa!VA}z7B^ODaXW>oPRmJs8 z+cb1b$#+rHkl}i|>Uzl1R5P$7)6jjx3KUn-Y~MC4-P9CYhn8jq(6Cj>vUE!~{lLS~ zoj~dtnwbq?5>4RObV7M#vPyqKFwK6FC$geyx?x(jBrB7gJU`{ka{T=K^k4t_<$qpZ zy+6J_eRFzt{qjH8=d(et;K42**k{uEz|X7Af*uT=0-yPRclD_M-N>6mc>Ci)&i0)i zTy3cmX@|86o-E>vCrKpq^3XT9SkBR)r)RhKDfT|aBlr}%lfDPGb~@b)6z>Ttv{p!U zB~Q~7+X_6{lQkO#ZlHOVZ5x4WE1F_Lq{&D#G~2aR&4Ze)+qUeQmae##p074Q2tv~j zBo~>c1WXtMpt+uc?n_G-c kb^bv0B>*7QUCw| literal 0 HcmV?d00001 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json new file mode 100644 index 0000000000000..aa619c2ef0040 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", + "source": { + "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json new file mode 100644 index 0000000000000..669fee998f900 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1": { + "displayName": "aws-cdk-bedrock-action-group-1 Template", + "source": { + "path": "aws-cdk-bedrock-action-group-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json new file mode 100644 index 0000000000000..751086f479575 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json @@ -0,0 +1,282 @@ +{ + "Resources": { + "ActionGroupFunctionServiceRole77660D62": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ActionGroupFunctionFE14D1CB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ActionGroupFunctionServiceRole77660D62", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ActionGroupFunctionServiceRole77660D62" + ] + }, + "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + } + }, + "ActionGroupName": "CustomActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" + }, + "Description": "A custom action group for testing", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-action-group-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json new file mode 100644 index 0000000000000..eafd360cbf954 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockActionGroup/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-action-group-1" + ], + "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", + "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json new file mode 100644 index 0000000000000..dde03bcb338e1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-action-group-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-action-group-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-action-group-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-action-group-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionServiceRole77660D62" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionFE14D1CB" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-action-group-1" + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "metadata": { + "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json new file mode 100644 index 0000000000000..76a87bffd6ace --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json new file mode 100644 index 0000000000000..985571ebdee78 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2 Template", + "source": { + "path": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json new file mode 100644 index 0000000000000..6ac805111eef3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a": { + "displayName": "aws-cdk-bedrock-agent-collaborator-1 Template", + "source": { + "path": "aws-cdk-bedrock-agent-collaborator-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json new file mode 100644 index 0000000000000..6c50f7f42a5a1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json @@ -0,0 +1,349 @@ +{ + "Resources": { + "CollaboratorAgentRoleB40DB843": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent" + } + }, + "CollaboratorAgentRoleDefaultPolicy40D7F24F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CollaboratorAgentRoleDefaultPolicy40D7F24F", + "Roles": [ + { + "Ref": "CollaboratorAgentRoleB40DB843" + } + ] + } + }, + "CollaboratorAgent1160D465": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "collaborator-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CollaboratorAgentRoleB40DB843", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is a collaborator agent with at least 40 characters of instruction", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CollaboratorAgentRoleDefaultPolicy40D7F24F" + ] + }, + "CollaboratorAliasDF4958C3": { + "Type": "AWS::Bedrock::AgentAlias", + "Properties": { + "AgentAliasName": "collaborator-alias", + "AgentId": { + "Fn::GetAtt": [ + "CollaboratorAgent1160D465", + "AgentId" + ] + } + } + }, + "CollaborativeAgentRole0E9B1104": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent" + } + }, + "CollaborativeAgentRoleDefaultPolicy94AAE53F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetAgentAlias", + "bedrock:InvokeAgent" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CollaborativeAgentRoleDefaultPolicy94AAE53F", + "Roles": [ + { + "Ref": "CollaborativeAgentRole0E9B1104" + } + ] + } + }, + "CollaborativeAgent97CD08C5": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentCollaboration": "SUPERVISOR", + "AgentCollaborators": [ + { + "AgentDescriptor": { + "AliasArn": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + "CollaborationInstruction": "Help the primary agent with complex tasks and provide additional context", + "CollaboratorName": "HelperAgent", + "RelayConversationHistory": "TO_COLLABORATOR" + } + ], + "AgentName": "collaborative-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CollaborativeAgentRole0E9B1104", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is a collaborative agent with at least 40 characters of instruction", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CollaborativeAgentRoleDefaultPolicy94AAE53F" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json new file mode 100644 index 0000000000000..e665fb42609dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockAgentCollaborator/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-agent-collaborator-1" + ], + "assertionStack": "BedrockAgentCollaborator/DefaultTest/DeployAssert", + "assertionStackName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json new file mode 100644 index 0000000000000..2062efb9b622c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json @@ -0,0 +1,326 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-agent-collaborator-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-agent-collaborator-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-agent-collaborator-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-agent-collaborator-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-agent-collaborator-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-agent-collaborator-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleB40DB843" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleDefaultPolicy40D7F24F" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgent1160D465" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAliasDF4958C3" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgentRole0E9B1104" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgentRoleDefaultPolicy94AAE53F" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgent97CD08C5" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-agent-collaborator-1" + }, + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" + ], + "metadata": { + "/BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockAgentCollaborator/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json new file mode 100644 index 0000000000000..45a2285c4ae64 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-collaborator-1":{"id":"aws-cdk-bedrock-agent-collaborator-1","path":"aws-cdk-bedrock-agent-collaborator-1","children":{"CollaboratorAgent":{"id":"CollaboratorAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaboratorAgentRoleDefaultPolicy40D7F24F","roles":[{"Ref":"CollaboratorAgentRoleB40DB843"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"collaborator-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaboratorAgentRoleB40DB843","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a collaborator agent with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"CollaboratorAlias":{"id":"CollaboratorAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::AgentAlias","aws:cdk:cloudformation:props":{"agentAliasName":"collaborator-alias","agentId":{"Fn::GetAtt":["CollaboratorAgent1160D465","AgentId"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgentAlias","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAlias","version":"0.0.0","metadata":[]}},"AgentCollaborator":{"id":"AgentCollaborator","path":"aws-cdk-bedrock-agent-collaborator-1/AgentCollaborator","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentCollaborator","version":"0.0.0"}},"CollaborativeAgent":{"id":"CollaborativeAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetAgentAlias","bedrock:InvokeAgent"],"Effect":"Allow","Resource":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaborativeAgentRoleDefaultPolicy94AAE53F","roles":[{"Ref":"CollaborativeAgentRole0E9B1104"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentCollaboration":"SUPERVISOR","agentCollaborators":[{"agentDescriptor":{"aliasArn":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},"collaborationInstruction":"Help the primary agent with complex tasks and provide additional context","collaboratorName":"HelperAgent","relayConversationHistory":"TO_COLLABORATOR"}],"agentName":"collaborative-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaborativeAgentRole0E9B1104","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a collaborative agent with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentCollaborator":{"id":"BedrockAgentCollaborator","path":"BedrockAgentCollaborator","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentCollaborator/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentCollaborator/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json new file mode 100644 index 0000000000000..686fe01004943 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", + "source": { + "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json new file mode 100644 index 0000000000000..a9d7497c0610b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json @@ -0,0 +1,33 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip new file mode 100644 index 0000000000000..2556546dd5f0d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e6a0259ef5241250c705eb6909aa1cc1544f03e1d6fd1de5f5888cbbd2ffd34 +size 18707019 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py new file mode 100644 index 0000000000000..aeb2132fc67bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py @@ -0,0 +1,388 @@ +import contextlib +import json +import logging +import os +import shutil +import subprocess +import tempfile +import urllib.parse +from urllib.request import Request, urlopen +from uuid import uuid4 +from zipfile import ZipFile + +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +cloudfront = boto3.client('cloudfront') +s3 = boto3.client('s3') + +CFN_SUCCESS = "SUCCESS" +CFN_FAILED = "FAILED" +ENV_KEY_MOUNT_PATH = "MOUNT_PATH" +ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" + +AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" +CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" + +os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) + +def handler(event, context): + + def cfn_error(message=None): + if message: + logger.error("| cfn_error: %s" % message.encode()) + cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) + + + try: + # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper + # with the response CloudFormation sees from this Custom Resource execution. + logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) + + # cloudformation request type (create/update/delete) + request_type = event['RequestType'] + + # extract resource properties + props = event['ResourceProperties'] + old_props = event.get('OldResourceProperties', {}) + physical_id = event.get('PhysicalResourceId', None) + + try: + source_bucket_names = props['SourceBucketNames'] + source_object_keys = props['SourceObjectKeys'] + source_markers = props.get('SourceMarkers', None) + source_markers_config = props.get('SourceMarkersConfig', None) + dest_bucket_name = props['DestinationBucketName'] + dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') + extract = props.get('Extract', 'true') == 'true' + retain_on_delete = props.get('RetainOnDelete', "true") == "true" + distribution_id = props.get('DistributionId', '') + user_metadata = props.get('UserMetadata', {}) + system_metadata = props.get('SystemMetadata', {}) + prune = props.get('Prune', 'true').lower() == 'true' + exclude = props.get('Exclude', []) + include = props.get('Include', []) + sign_content = props.get('SignContent', 'false').lower() == 'true' + output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' + + # backwards compatibility - if "SourceMarkers" is not specified, + # assume all sources have an empty market map + if source_markers is None: + source_markers = [{} for i in range(len(source_bucket_names))] + if source_markers_config is None: + source_markers_config = [{} for i in range(len(source_bucket_names))] + + default_distribution_path = dest_bucket_prefix + if not default_distribution_path.endswith("/"): + default_distribution_path += "/" + if not default_distribution_path.startswith("/"): + default_distribution_path = "/" + default_distribution_path + default_distribution_path += "*" + + distribution_paths = props.get('DistributionPaths', [default_distribution_path]) + except KeyError as e: + cfn_error("missing request resource property %s. props: %s" % (str(e), props)) + return + + # configure aws cli options after resetting back to the defaults for each request + if os.path.exists(AWS_CLI_CONFIG_FILE): + os.remove(AWS_CLI_CONFIG_FILE) + if sign_content: + aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") + + # treat "/" as if no prefix was specified + if dest_bucket_prefix == "/": + dest_bucket_prefix = "" + + s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) + s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) + old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) + + + # obviously this is not + if old_s3_dest == "s3:///": + old_s3_dest = None + + logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) + logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) + + # if we are creating a new resource, allocate a physical id for it + # otherwise, we expect physical id to be relayed by cloudformation + if request_type == "Create": + physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) + else: + if not physical_id: + cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) + return + + # delete or create/update (only if "retain_on_delete" is false) + if request_type == "Delete" and not retain_on_delete: + if not bucket_owned(dest_bucket_name, dest_bucket_prefix): + aws_command("s3", "rm", s3_dest, "--recursive") + + # if we are updating without retention and the destination changed, delete first + if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: + if not old_s3_dest: + logger.warn("cannot delete old resource without old resource properties") + return + + aws_command("s3", "rm", old_s3_dest, "--recursive") + + if request_type == "Update" or request_type == "Create": + s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) + + if distribution_id: + cloudfront_invalidate(distribution_id, distribution_paths) + + cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ + # Passing through the ARN sequences dependencees on the deployment + 'DestinationBucketArn': props.get('DestinationBucketArn'), + **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) + }) + except KeyError as e: + cfn_error("invalid request. Missing key %s" % str(e)) + except Exception as e: + logger.exception(e) + cfn_error(str(e)) + +#--------------------------------------------------------------------------------------------------- +# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities +def sanitize_message(message): + if not message: + return message + + # Sanitize the message to prevent log injection and HTTP response splitting + sanitized_message = message.replace('\n', '').replace('\r', '') + + # Encode the message to handle special characters + encoded_message = urllib.parse.quote(sanitized_message) + + return encoded_message + +#--------------------------------------------------------------------------------------------------- +# populate all files from s3_source_zips to a destination bucket +def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): + # list lengths are equal + if len(s3_source_zips) != len(source_markers): + raise Exception("'source_markers' and 's3_source_zips' must be the same length") + + # create a temporary working directory in /tmp or if enabled an attached efs volume + if ENV_KEY_MOUNT_PATH in os.environ: + workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) + os.mkdir(workdir) + else: + workdir = tempfile.mkdtemp() + + logger.info("| workdir: %s" % workdir) + + # create a directory into which we extract the contents of the zip file + contents_dir=os.path.join(workdir, 'contents') + os.mkdir(contents_dir) + + try: + # download the archive from the source and extract to "contents" + for i in range(len(s3_source_zips)): + s3_source_zip = s3_source_zips[i] + markers = source_markers[i] + markers_config = source_markers_config[i] + + if extract: + archive=os.path.join(workdir, str(uuid4())) + logger.info("archive: %s" % archive) + aws_command("s3", "cp", s3_source_zip, archive) + logger.info("| extracting archive to: %s\n" % contents_dir) + logger.info("| markers: %s" % markers) + extract_and_replace_markers(archive, contents_dir, markers, markers_config) + else: + logger.info("| copying archive to: %s\n" % contents_dir) + aws_command("s3", "cp", s3_source_zip, contents_dir) + + # sync from "contents" to destination + + s3_command = ["s3", "sync"] + + if prune: + s3_command.append("--delete") + + if exclude: + for filter in exclude: + s3_command.extend(["--exclude", filter]) + + if include: + for filter in include: + s3_command.extend(["--include", filter]) + + s3_command.extend([contents_dir, s3_dest]) + s3_command.extend(create_metadata_args(user_metadata, system_metadata)) + aws_command(*s3_command) + finally: + if not os.getenv(ENV_KEY_SKIP_CLEANUP): + shutil.rmtree(workdir) + +#--------------------------------------------------------------------------------------------------- +# invalidate files in the CloudFront distribution edge caches +def cloudfront_invalidate(distribution_id, distribution_paths): + invalidation_resp = cloudfront.create_invalidation( + DistributionId=distribution_id, + InvalidationBatch={ + 'Paths': { + 'Quantity': len(distribution_paths), + 'Items': distribution_paths + }, + 'CallerReference': str(uuid4()), + }) + # by default, will wait up to 10 minutes + cloudfront.get_waiter('invalidation_completed').wait( + DistributionId=distribution_id, + Id=invalidation_resp['Invalidation']['Id']) + +#--------------------------------------------------------------------------------------------------- +# set metadata +def create_metadata_args(raw_user_metadata, raw_system_metadata): + if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: + return [] + + format_system_metadata_key = lambda k: k.lower() + format_user_metadata_key = lambda k: k.lower() + + system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } + user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } + + flatten = lambda l: [item for sublist in l for item in sublist] + system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) + user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] + + return system_args + user_args + ["--metadata-directive", "REPLACE"] + +#--------------------------------------------------------------------------------------------------- +# executes an "aws" cli command +def aws_command(*args): + aws="/opt/awscli/aws" # from AwsCliLayer + logger.info("| aws %s" % ' '.join(args)) + subprocess.check_call([aws] + list(args)) + +#--------------------------------------------------------------------------------------------------- +# sends a response to cloudformation +def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): + + responseUrl = event['ResponseURL'] + + responseBody = {} + responseBody['Status'] = responseStatus + responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) + responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name + responseBody['StackId'] = event['StackId'] + responseBody['RequestId'] = event['RequestId'] + responseBody['LogicalResourceId'] = event['LogicalResourceId'] + responseBody['NoEcho'] = noEcho + responseBody['Data'] = responseData + + body = json.dumps(responseBody) + logger.info("| response body:\n" + body) + + headers = { + 'content-type' : '', + 'content-length' : str(len(body)) + } + + try: + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) + except Exception as e: + logger.error("| unable to send response to CloudFormation") + logger.exception(e) + + +#--------------------------------------------------------------------------------------------------- +# check if bucket is owned by a custom resource +# if it is then we don't want to delete content +def bucket_owned(bucketName, keyPrefix): + tag = CUSTOM_RESOURCE_OWNER_TAG + if keyPrefix != "": + tag = tag + ':' + keyPrefix + try: + request = s3.get_bucket_tagging( + Bucket=bucketName, + ) + return any((x["Key"].startswith(tag)) for x in request["TagSet"]) + except Exception as e: + logger.info("| error getting tags from bucket") + logger.exception(e) + return False + +# extract archive and replace markers in output files +def extract_and_replace_markers(archive, contents_dir, markers, markers_config): + with ZipFile(archive, "r") as zip: + zip.extractall(contents_dir) + + # replace markers for this source + for file in zip.namelist(): + file_path = os.path.join(contents_dir, file) + if os.path.isdir(file_path): continue + replace_markers(file_path, markers, markers_config) + +def prepare_json_safe_markers(markers): + """Pre-process markers to ensure JSON-safe values""" + safe_markers = {} + for key, value in markers.items(): + # Serialize the value as JSON to handle escaping if the value is a string + serialized = json.dumps(value) + if serialized.startswith('"') and serialized.endswith('"'): + json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes + else: + json_safe_value = serialized + safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') + return safe_markers + +def replace_markers(filename, markers, markers_config): + """Replace markers in a file, with special handling for JSON files.""" + # if there are no markers, skip + if not markers: + return + + outfile = filename + '.new' + json_escape = markers_config.get('jsonEscape', 'false').lower() + if json_escape == 'true': + replace_tokens = prepare_json_safe_markers(markers) + else: + replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) + + # Handle content with line-by-line binary replacement + with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: + # Process line by line to handle large files + for line in fi: + for token, replacement in replace_tokens.items(): + line = line.replace(token, replacement) + fo.write(line) + + # Delete the original file and rename the new one to the original + os.remove(filename) + os.rename(outfile, filename) + +def replace_markers_in_json(json_object, replace_tokens): + """Replace markers in JSON content with proper escaping.""" + try: + def replace_in_structure(obj): + if isinstance(obj, str): + # Convert string to bytes for consistent replacement + result = obj.encode('utf-8') + for token, replacement in replace_tokens.items(): + result = result.replace(token, replacement) + # Convert back to string + return result.decode('utf-8') + elif isinstance(obj, dict): + return {k: replace_in_structure(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [replace_in_structure(item) for item in obj] + return obj + + # Process the whole structure + processed = replace_in_structure(json_object) + return json.dumps(processed) + except Exception as e: + logger.error(f'Error processing JSON: {e}') + logger.exception(e) + return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json new file mode 100644 index 0000000000000..a61ba62e71941 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json @@ -0,0 +1,76 @@ +{ + "version": "41.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136": { + "displayName": "DeploySchema/AwsCliLayer/Code", + "source": { + "path": "asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { + "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", + "source": { + "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { + "displayName": "DeploySchema/Asset1", + "source": { + "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01": { + "displayName": "aws-cdk-bedrock-api-schema-1 Template", + "source": { + "path": "aws-cdk-bedrock-api-schema-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json new file mode 100644 index 0000000000000..085134844274f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json @@ -0,0 +1,905 @@ +{ + "Resources": { + "InlineActionGroupFunctionServiceRole5543D9A3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "InlineActionGroupFunction566CD00A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "InlineActionGroupFunctionServiceRole5543D9A3", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "InlineActionGroupFunctionServiceRole5543D9A3" + ] + }, + "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "S3ActionGroupFunctionServiceRole7E4C5A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "S3ActionGroupFunctionA4648C25": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionServiceRole7E4C5A58", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "S3ActionGroupFunctionServiceRole7E4C5A58" + ] + }, + "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "SchemaBucket79EE2269": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + }, + { + "Key": "aws-cdk:cr-owned:911f5017", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SchemaBucketPolicy557840E2": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "SchemaBucket79EE2269" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "SchemaBucket79EE2269" + } + }, + "DependsOn": [ + "SchemaBucketPolicy557840E2" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": { + "Fn::FindInMap": [ + "LatestNodeRuntimeMap", + { + "Ref": "AWS::Region" + }, + "value" + ] + }, + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "SchemaBucket79EE2269" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "DeploySchemaAwsCliLayerD0D0BA6E": { + "Type": "AWS::Lambda::LayerVersion", + "Properties": { + "Content": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip" + }, + "Description": "/opt/awscli/aws" + } + }, + "DeploySchemaCustomResource277E9836": { + "Type": "Custom::CDKBucketDeployment", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn" + ] + }, + "SourceBucketNames": [ + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ], + "SourceObjectKeys": [ + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" + ], + "SourceMarkers": [ + {} + ], + "DestinationBucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "Prune": true, + "OutputObjectKeys": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": [ + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" + }, + "Environment": { + "Variables": { + "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + } + }, + "Handler": "index.handler", + "Layers": [ + { + "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "Role": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn" + ] + }, + "Runtime": "python3.11", + "Timeout": 900 + }, + "DependsOn": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + ] + }, + "ApiSchemaAgentRole636AC572": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": "s3:GetObject", + "Condition": { + "StringEquals": { + "aws:ResourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + }, + "/schema/s3-api-schema.json" + ] + ] + } + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "Roles": [ + { + "Ref": "ApiSchemaAgentRole636AC572" + } + ] + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgent8E965D9C": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + } + }, + "ActionGroupName": "InlineApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group using an inline API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + } + }, + "ActionGroupName": "S3ApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "S3ObjectKey": "schema/s3-api-schema.json" + } + }, + "Description": "An action group using an S3-based API schema", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "api-schema-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "ApiSchemaAgentRole636AC572", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + } + }, + "Mappings": { + "LatestNodeRuntimeMap": { + "af-south-1": { + "value": "nodejs20.x" + }, + "ap-east-1": { + "value": "nodejs20.x" + }, + "ap-northeast-1": { + "value": "nodejs20.x" + }, + "ap-northeast-2": { + "value": "nodejs20.x" + }, + "ap-northeast-3": { + "value": "nodejs20.x" + }, + "ap-south-1": { + "value": "nodejs20.x" + }, + "ap-south-2": { + "value": "nodejs20.x" + }, + "ap-southeast-1": { + "value": "nodejs20.x" + }, + "ap-southeast-2": { + "value": "nodejs20.x" + }, + "ap-southeast-3": { + "value": "nodejs20.x" + }, + "ap-southeast-4": { + "value": "nodejs20.x" + }, + "ap-southeast-5": { + "value": "nodejs20.x" + }, + "ap-southeast-7": { + "value": "nodejs20.x" + }, + "ca-central-1": { + "value": "nodejs20.x" + }, + "ca-west-1": { + "value": "nodejs20.x" + }, + "cn-north-1": { + "value": "nodejs20.x" + }, + "cn-northwest-1": { + "value": "nodejs20.x" + }, + "eu-central-1": { + "value": "nodejs20.x" + }, + "eu-central-2": { + "value": "nodejs20.x" + }, + "eu-isoe-west-1": { + "value": "nodejs18.x" + }, + "eu-north-1": { + "value": "nodejs20.x" + }, + "eu-south-1": { + "value": "nodejs20.x" + }, + "eu-south-2": { + "value": "nodejs20.x" + }, + "eu-west-1": { + "value": "nodejs20.x" + }, + "eu-west-2": { + "value": "nodejs20.x" + }, + "eu-west-3": { + "value": "nodejs20.x" + }, + "il-central-1": { + "value": "nodejs20.x" + }, + "me-central-1": { + "value": "nodejs20.x" + }, + "me-south-1": { + "value": "nodejs20.x" + }, + "mx-central-1": { + "value": "nodejs20.x" + }, + "sa-east-1": { + "value": "nodejs20.x" + }, + "us-east-1": { + "value": "nodejs20.x" + }, + "us-east-2": { + "value": "nodejs20.x" + }, + "us-gov-east-1": { + "value": "nodejs20.x" + }, + "us-gov-west-1": { + "value": "nodejs20.x" + }, + "us-iso-east-1": { + "value": "nodejs18.x" + }, + "us-iso-west-1": { + "value": "nodejs18.x" + }, + "us-isob-east-1": { + "value": "nodejs18.x" + }, + "us-west-1": { + "value": "nodejs20.x" + }, + "us-west-2": { + "value": "nodejs20.x" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json new file mode 100644 index 0000000000000..deb2c8dd595bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockApiSchema/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-api-schema-1" + ], + "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", + "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json new file mode 100644 index 0000000000000..50612687a246d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json @@ -0,0 +1,634 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-api-schema-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-api-schema-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-api-schema-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionServiceRole5543D9A3" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunction566CD00A" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionServiceRole7E4C5A58" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionA4648C25" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucket79EE2269" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketPolicy557840E2" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" + } + ], + "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ + { + "type": "aws:cdk:logicalId", + "data": "LatestNodeRuntimeMap" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "uuid": "*", + "layers": [ + "*" + ], + "environment": "*", + "lambdaPurpose": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + true + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + "*" + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaCustomResource277E9836" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "layers": [ + "*" + ], + "environment": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addEnvironment": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addLayers": [ + "*" + ] + } + }, + { + "type": "aws:cdk:is-custom-resource-handler-singleton", + "data": true + }, + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 2 + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRole636AC572" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgent8E965D9C" + } + ], + "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-api-schema-1" + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "metadata": { + "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json new file mode 100644 index 0000000000000..0667c7afa859d --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","children":{"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip"},"description":"/opt/awscli/aws"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":"s3:GetObject","Condition":{"StringEquals":{"aws:ResourceAccount":{"Ref":"AWS::AccountId"}}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json new file mode 100644 index 0000000000000..1a10110ba1360 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", + "source": { + "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json new file mode 100644 index 0000000000000..321a1836d9c99 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0": { + "displayName": "aws-cdk-bedrock-memory-1 Template", + "source": { + "path": "aws-cdk-bedrock-memory-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json new file mode 100644 index 0000000000000..b29d71684f6fa --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json @@ -0,0 +1,544 @@ +{ + "Resources": { + "DefaultMemoryFunctionServiceRoleD8C5CDAF": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "DefaultMemoryFunctionAC6D5374": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF" + ] + }, + "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomMemoryFunctionServiceRoleA64B0AD5": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomMemoryFunctionB4B5CB9A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomMemoryFunctionServiceRoleA64B0AD5", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomMemoryFunctionServiceRoleA64B0AD5" + ] + }, + "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "AgentWithDefaultMemoryRole0AEE1FD1": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" + } + }, + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", + "Roles": [ + { + "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ] + } + }, + "AgentWithDefaultMemoryA1F31830": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + } + }, + "ActionGroupName": "DefaultMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing default memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-default-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithDefaultMemoryRole0AEE1FD1", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 20 + }, + "StorageDays": 30 + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + ] + }, + "AgentWithCustomMemoryRole3B7BD09F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" + } + }, + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", + "Roles": [ + { + "Ref": "AgentWithCustomMemoryRole3B7BD09F" + } + ] + } + }, + "AgentWithCustomMemoryD0BD498B": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomMemoryRole3B7BD09F", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 5 + }, + "StorageDays": 15 + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json new file mode 100644 index 0000000000000..b3e7d637fe1c1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockMemory/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-memory-1" + ], + "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", + "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json new file mode 100644 index 0000000000000..1fc79b2a0da48 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json @@ -0,0 +1,420 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-memory-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-memory-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-memory-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-memory-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionAC6D5374" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionServiceRoleA64B0AD5" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionB4B5CB9A" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryA1F31830" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRole3B7BD09F" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryD0BD498B" + } + ], + "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-memory-1" + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "metadata": { + "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockMemory/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json new file mode 100644 index 0000000000000..7444f2020a8ce --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json new file mode 100644 index 0000000000000..8a135a7ec895c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", + "source": { + "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json new file mode 100644 index 0000000000000..3b459332058e3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763": { + "displayName": "aws-cdk-bedrock-orchestration-1 Template", + "source": { + "path": "aws-cdk-bedrock-orchestration-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json new file mode 100644 index 0000000000000..8e36b064ec0d9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json @@ -0,0 +1,282 @@ +{ + "Resources": { + "OrchestrationFunctionServiceRole12D0673A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "OrchestrationFunction2F3851C6": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "OrchestrationFunctionServiceRole12D0673A", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "OrchestrationFunctionServiceRole12D0673A" + ] + }, + "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + }, + "SourceArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentDC6CC131", + "AgentArn" + ] + } + } + }, + "CustomOrchestrationAgentRole85710213": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" + } + }, + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", + "Roles": [ + { + "Ref": "CustomOrchestrationAgentRole85710213" + } + ] + } + }, + "CustomOrchestrationAgentDC6CC131": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "custom-orchestration-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentRole85710213", + "Arn" + ] + }, + "AutoPrepare": false, + "CustomOrchestration": { + "Executor": { + "Lambda": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + } + } + }, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", + "OrchestrationType": "CUSTOM_ORCHESTRATION", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json new file mode 100644 index 0000000000000..cbf458f1bfb67 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockOrchestration/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-orchestration-1" + ], + "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", + "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json new file mode 100644 index 0000000000000..d4f4da666a158 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-orchestration-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-orchestration-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-orchestration-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionServiceRole12D0673A" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunction2F3851C6" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRole85710213" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentDC6CC131" + } + ], + "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-orchestration-1" + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "metadata": { + "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json new file mode 100644 index 0000000000000..a127939f347c8 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json new file mode 100644 index 0000000000000..ad7678636bede --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", + "source": { + "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json new file mode 100644 index 0000000000000..c6329a026ec57 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5": { + "displayName": "aws-cdk-bedrock-prompt-override-1 Template", + "source": { + "path": "aws-cdk-bedrock-prompt-override-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json new file mode 100644 index 0000000000000..58245a5db7251 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json @@ -0,0 +1,644 @@ +{ + "Resources": { + "PromptOverrideFunctionServiceRoleB1ACDEAD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "PromptOverrideFunctionD82AB437": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD" + ] + }, + "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomParserActionFunctionServiceRoleEE676A1C": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomParserActionFunction3DAF0C7A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomParserActionFunctionServiceRoleEE676A1C", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomParserActionFunctionServiceRoleEE676A1C" + ] + }, + "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "ParserFunctionServiceRole59DD83FB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ParserFunctionE8A187F2": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ParserFunctionServiceRole59DD83FB", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ParserFunctionServiceRole59DD83FB" + ] + }, + "AgentWithPromptOverrideRoleA0EB6013": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" + } + }, + "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", + "Roles": [ + { + "Ref": "AgentWithPromptOverrideRoleA0EB6013" + } + ] + } + }, + "AgentWithPromptOverride13B28AED": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + } + }, + "ActionGroupName": "PromptOverrideActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing prompt override configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-prompt-override", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithPromptOverrideRoleA0EB6013", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", + "PromptOverrideConfiguration": { + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [ + "\n\nHuman:" + ], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 1 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "POST_PROCESSING" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + ] + }, + "AgentWithCustomParserRole29295FCD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent--awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" + } + }, + "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", + "Roles": [ + { + "Ref": "AgentWithCustomParserRole29295FCD" + } + ] + } + }, + "AgentWithCustomParser73E443B8": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomParserActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom parser configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-parser", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomParserRole29295FCD", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 3600, + "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", + "PromptOverrideConfiguration": { + "OverrideLambda": { + "Fn::GetAtt": [ + "ParserFunctionE8A187F2", + "Arn" + ] + }, + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0, + "TopK": 250, + "TopP": 1 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0, + "TopK": 250, + "TopP": 1 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "MEMORY_SUMMARIZATION" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json new file mode 100644 index 0000000000000..e4d51fb6e558a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json @@ -0,0 +1,12 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockPromptOverride/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-prompt-override-1" + ], + "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", + "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json new file mode 100644 index 0000000000000..bec2780a0587f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json @@ -0,0 +1,464 @@ +{ + "version": "42.0.0", + "artifacts": { + "aws-cdk-bedrock-prompt-override-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-prompt-override-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-prompt-override-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionD82AB437" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionServiceRoleEE676A1C" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunction3DAF0C7A" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionServiceRole59DD83FB" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionE8A187F2" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleA0EB6013" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverride13B28AED" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRole29295FCD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParser73E443B8" + } + ], + "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-prompt-override-1" + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "metadata": { + "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1006.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json new file mode 100644 index 0000000000000..783dd764b7093 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":["\n\nHuman:"]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":1,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0,"topP":1,"topK":250,"maximumLength":1024,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0,"topP":1,"topK":250,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From 4169c45f2b274d43aca87e06e031df79673371f3 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 1 May 2025 16:18:24 -0400 Subject: [PATCH 18/39] fix(bedrockl2): updated lama model --- packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts index d813af016d826..3b059c6b5efad 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -489,8 +489,8 @@ export class BedrockFoundationModel implements IInvokable { * Meta's Llama 4 Maverick 70B instruction-tuned model, their most advanced model. * Provides state-of-the-art performance for complex language tasks with cross-region support. */ - public static readonly META_LLAMA_4_MAVERICK_70B_INSTRUCT_V1 = new BedrockFoundationModel( - 'meta.llama4-maverick-70b-instruct-v1:0', + public static readonly META_LLAMA_4_MAVERICK_17B_INSTRUCT_V1 = new BedrockFoundationModel( + 'meta.llama4-maverick-17b-instruct-v1:0', { supportsAgents: true, supportsCrossRegion: true, From 630e2d263077a63baccf82dcd2bf18ac0beb0052 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 8 May 2025 14:55:11 -0400 Subject: [PATCH 19/39] fix(bedrockl2): code review comments --- .../@aws-cdk/aws-bedrock-alpha/.gitignore | 10 + packages/@aws-cdk/aws-bedrock-alpha/.jsii | 9324 ---------- .../aws-bedrock-alpha/.jsii.tabl.json.gz | Bin 8138 -> 0 bytes .../@aws-cdk/aws-bedrock-alpha/.jsiirc.json | 13 - .../bedrock/agents/action-group.ts | 13 - .../bedrock/agents/agent-alias.ts | 13 - .../bedrock/agents/agent-collaborator.ts | 13 - .../aws-bedrock-alpha/bedrock/agents/agent.ts | 109 +- .../bedrock/agents/api-executor.ts | 13 - .../bedrock/agents/api-schema.ts | 13 - .../bedrock/agents/memory.ts | 13 - .../bedrock/agents/orchestration-executor.ts | 13 - .../bedrock/agents/orchestration.ts | 13 - .../bedrock/agents/prompt-override.ts | 13 - .../aws-bedrock-alpha/bedrock/agents/utils.ts | 22 +- .../bedrock/agents/validation-helpers.ts | 40 +- .../aws-bedrock-alpha/bedrock/models.ts | 502 +- .../bedrock/test/models.test.ts | 141 + .../@aws-cdk/aws-bedrock-alpha/package.json | 4 +- .../index.js | 1 + .../@aws-cdk/aws-bedrock-alpha/tsconfig.json | 52 - yarn.lock | 14730 ---------------- 22 files changed, 662 insertions(+), 24403 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsii delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json delete mode 100644 yarn.lock diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.gitignore b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore index 713ece147c435..820021a6ac1ea 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/.gitignore +++ b/packages/@aws-cdk/aws-bedrock-alpha/.gitignore @@ -12,3 +12,13 @@ junit.xml coverage nyc.config.js !.eslintrc.js + +!**/*.snapshot/**/asset.*/*.js +!**/*.snapshot/**/asset.*/*.d.ts + +!**/*.snapshot/**/asset.*/** + +*.jsii +.jsii.tabl.json.gz +.jsiirc.json +tsconfig.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsii b/packages/@aws-cdk/aws-bedrock-alpha/.jsii deleted file mode 100644 index d57cec564f903..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/.jsii +++ /dev/null @@ -1,9324 +0,0 @@ -{ - "author": { - "name": "Amazon Web Services", - "organization": true, - "roles": [ - "author" - ], - "url": "https://aws.amazon.com" - }, - "dependencies": { - "aws-cdk-lib": "^0.0.0", - "constructs": "^10.0.0" - }, - "dependencyClosure": { - "@aws-cdk/asset-awscli-v1": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Asset.AwsCliV1", - "packageId": "Amazon.CDK.Asset.AwsCliV1" - }, - "go": { - "moduleName": "github.com/cdklabs/awscdk-asset-awscli-go", - "packageName": "awscliv1" - }, - "java": { - "maven": { - "artifactId": "cdk-asset-awscli-v1", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk.cdk.asset.awscli.v1" - }, - "js": { - "npm": "@aws-cdk/asset-awscli-v1" - }, - "python": { - "distName": "aws-cdk.asset-awscli-v1", - "module": "aws_cdk.asset_awscli_v1" - } - } - }, - "@aws-cdk/asset-node-proxy-agent-v6": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Asset.NodeProxyAgentV6", - "packageId": "Amazon.CDK.Asset.NodeProxyAgentV6" - }, - "go": { - "moduleName": "github.com/cdklabs/awscdk-asset-node-proxy-agent-go", - "packageName": "nodeproxyagentv6" - }, - "java": { - "maven": { - "artifactId": "cdk-asset-node-proxy-agent-v6", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.v6" - }, - "js": { - "npm": "@aws-cdk/asset-node-proxy-agent-v6" - }, - "python": { - "distName": "aws-cdk.asset-node-proxy-agent-v6", - "module": "aws_cdk.asset_node_proxy_agent_v6" - } - } - }, - "@aws-cdk/cloud-assembly-schema": { - "targets": { - "dotnet": { - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", - "namespace": "Amazon.CDK.CloudAssembly.Schema", - "packageId": "Amazon.CDK.CloudAssembly.Schema" - }, - "go": { - "moduleName": "github.com/cdklabs/cloud-assembly-schema-go" - }, - "java": { - "maven": { - "artifactId": "cdk-cloud-assembly-schema", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk.cloudassembly.schema" - }, - "js": { - "npm": "@aws-cdk/cloud-assembly-schema" - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 2" - ], - "distName": "aws-cdk.cloud-assembly-schema", - "module": "aws_cdk.cloud_assembly_schema" - } - } - }, - "aws-cdk-lib": { - "submodules": { - "aws-cdk-lib.alexa_ask": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Alexa.Ask" - }, - "java": { - "package": "software.amazon.awscdk.alexa.ask" - }, - "python": { - "module": "aws_cdk.alexa_ask" - } - } - }, - "aws-cdk-lib.assertions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Assertions" - }, - "java": { - "package": "software.amazon.awscdk.assertions" - }, - "python": { - "module": "aws_cdk.assertions" - } - } - }, - "aws-cdk-lib.assets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Assets" - }, - "java": { - "package": "software.amazon.awscdk.assets" - }, - "python": { - "module": "aws_cdk.assets" - } - } - }, - "aws-cdk-lib.aws_accessanalyzer": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AccessAnalyzer" - }, - "java": { - "package": "software.amazon.awscdk.services.accessanalyzer" - }, - "python": { - "module": "aws_cdk.aws_accessanalyzer" - } - } - }, - "aws-cdk-lib.aws_acmpca": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ACMPCA" - }, - "java": { - "package": "software.amazon.awscdk.services.acmpca" - }, - "python": { - "module": "aws_cdk.aws_acmpca" - } - } - }, - "aws-cdk-lib.aws_amazonmq": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AmazonMQ" - }, - "java": { - "package": "software.amazon.awscdk.services.amazonmq" - }, - "python": { - "module": "aws_cdk.aws_amazonmq" - } - } - }, - "aws-cdk-lib.aws_amplify": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Amplify" - }, - "java": { - "package": "software.amazon.awscdk.services.amplify" - }, - "python": { - "module": "aws_cdk.aws_amplify" - } - } - }, - "aws-cdk-lib.aws_amplifyuibuilder": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AmplifyUIBuilder" - }, - "java": { - "package": "software.amazon.awscdk.services.amplifyuibuilder" - }, - "python": { - "module": "aws_cdk.aws_amplifyuibuilder" - } - } - }, - "aws-cdk-lib.aws_apigateway": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.APIGateway" - }, - "java": { - "package": "software.amazon.awscdk.services.apigateway" - }, - "python": { - "module": "aws_cdk.aws_apigateway" - } - } - }, - "aws-cdk-lib.aws_apigatewayv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Apigatewayv2" - }, - "java": { - "package": "software.amazon.awscdk.services.apigatewayv2" - }, - "python": { - "module": "aws_cdk.aws_apigatewayv2" - } - } - }, - "aws-cdk-lib.aws_apigatewayv2_authorizers": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AwsApigatewayv2Authorizers" - }, - "java": { - "package": "software.amazon.awscdk.aws_apigatewayv2_authorizers" - }, - "python": { - "module": "aws_cdk.aws_apigatewayv2_authorizers" - } - } - }, - "aws-cdk-lib.aws_apigatewayv2_integrations": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AwsApigatewayv2Integrations" - }, - "java": { - "package": "software.amazon.awscdk.aws_apigatewayv2_integrations" - }, - "python": { - "module": "aws_cdk.aws_apigatewayv2_integrations" - } - } - }, - "aws-cdk-lib.aws_appconfig": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppConfig" - }, - "java": { - "package": "software.amazon.awscdk.services.appconfig" - }, - "python": { - "module": "aws_cdk.aws_appconfig" - } - } - }, - "aws-cdk-lib.aws_appflow": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppFlow" - }, - "java": { - "package": "software.amazon.awscdk.services.appflow" - }, - "python": { - "module": "aws_cdk.aws_appflow" - } - } - }, - "aws-cdk-lib.aws_appintegrations": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppIntegrations" - }, - "java": { - "package": "software.amazon.awscdk.services.appintegrations" - }, - "python": { - "module": "aws_cdk.aws_appintegrations" - } - } - }, - "aws-cdk-lib.aws_applicationautoscaling": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ApplicationAutoScaling" - }, - "java": { - "package": "software.amazon.awscdk.services.applicationautoscaling" - }, - "python": { - "module": "aws_cdk.aws_applicationautoscaling" - } - } - }, - "aws-cdk-lib.aws_applicationinsights": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ApplicationInsights" - }, - "java": { - "package": "software.amazon.awscdk.services.applicationinsights" - }, - "python": { - "module": "aws_cdk.aws_applicationinsights" - } - } - }, - "aws-cdk-lib.aws_applicationsignals": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.ApplicationSignals" - }, - "java": { - "package": "software.amazon.awscdk.services.applicationsignals" - }, - "python": { - "module": "aws_cdk.aws_applicationsignals" - } - } - }, - "aws-cdk-lib.aws_appmesh": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppMesh" - }, - "java": { - "package": "software.amazon.awscdk.services.appmesh" - }, - "python": { - "module": "aws_cdk.aws_appmesh" - } - } - }, - "aws-cdk-lib.aws_apprunner": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppRunner" - }, - "java": { - "package": "software.amazon.awscdk.services.apprunner" - }, - "python": { - "module": "aws_cdk.aws_apprunner" - } - } - }, - "aws-cdk-lib.aws_appstream": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppStream" - }, - "java": { - "package": "software.amazon.awscdk.services.appstream" - }, - "python": { - "module": "aws_cdk.aws_appstream" - } - } - }, - "aws-cdk-lib.aws_appsync": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AppSync" - }, - "java": { - "package": "software.amazon.awscdk.services.appsync" - }, - "python": { - "module": "aws_cdk.aws_appsync" - } - } - }, - "aws-cdk-lib.aws_apptest": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.AppTest" - }, - "java": { - "package": "software.amazon.awscdk.services.apptest" - }, - "python": { - "module": "aws_cdk.aws_apptest" - } - } - }, - "aws-cdk-lib.aws_aps": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.APS" - }, - "java": { - "package": "software.amazon.awscdk.services.aps" - }, - "python": { - "module": "aws_cdk.aws_aps" - } - } - }, - "aws-cdk-lib.aws_arczonalshift": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.ARCZonalShift" - }, - "java": { - "package": "software.amazon.awscdk.services.arczonalshift" - }, - "python": { - "module": "aws_cdk.aws_arczonalshift" - } - } - }, - "aws-cdk-lib.aws_athena": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Athena" - }, - "java": { - "package": "software.amazon.awscdk.services.athena" - }, - "python": { - "module": "aws_cdk.aws_athena" - } - } - }, - "aws-cdk-lib.aws_auditmanager": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AuditManager" - }, - "java": { - "package": "software.amazon.awscdk.services.auditmanager" - }, - "python": { - "module": "aws_cdk.aws_auditmanager" - } - } - }, - "aws-cdk-lib.aws_autoscaling": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AutoScaling" - }, - "java": { - "package": "software.amazon.awscdk.services.autoscaling" - }, - "python": { - "module": "aws_cdk.aws_autoscaling" - } - } - }, - "aws-cdk-lib.aws_autoscaling_common": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AutoScaling.Common" - }, - "java": { - "package": "software.amazon.awscdk.services.autoscaling.common" - }, - "python": { - "module": "aws_cdk.aws_autoscaling_common" - } - } - }, - "aws-cdk-lib.aws_autoscaling_hooktargets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AutoScaling.HookTargets" - }, - "java": { - "package": "software.amazon.awscdk.services.autoscaling.hooktargets" - }, - "python": { - "module": "aws_cdk.aws_autoscaling_hooktargets" - } - } - }, - "aws-cdk-lib.aws_autoscalingplans": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AutoScalingPlans" - }, - "java": { - "package": "software.amazon.awscdk.services.autoscalingplans" - }, - "python": { - "module": "aws_cdk.aws_autoscalingplans" - } - } - }, - "aws-cdk-lib.aws_b2bi": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.B2BI" - }, - "java": { - "package": "software.amazon.awscdk.services.b2bi" - }, - "python": { - "module": "aws_cdk.aws_b2bi" - } - } - }, - "aws-cdk-lib.aws_backup": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Backup" - }, - "java": { - "package": "software.amazon.awscdk.services.backup" - }, - "python": { - "module": "aws_cdk.aws_backup" - } - } - }, - "aws-cdk-lib.aws_backupgateway": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.BackupGateway" - }, - "java": { - "package": "software.amazon.awscdk.services.backupgateway" - }, - "python": { - "module": "aws_cdk.aws_backupgateway" - } - } - }, - "aws-cdk-lib.aws_batch": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Batch" - }, - "java": { - "package": "software.amazon.awscdk.services.batch" - }, - "python": { - "module": "aws_cdk.aws_batch" - } - } - }, - "aws-cdk-lib.aws_bcmdataexports": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.BCMDataExports" - }, - "java": { - "package": "software.amazon.awscdk.services.bcmdataexports" - }, - "python": { - "module": "aws_cdk.aws_bcmdataexports" - } - } - }, - "aws-cdk-lib.aws_bedrock": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Bedrock" - }, - "java": { - "package": "software.amazon.awscdk.services.bedrock" - }, - "python": { - "module": "aws_cdk.aws_bedrock" - } - } - }, - "aws-cdk-lib.aws_billingconductor": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.BillingConductor" - }, - "java": { - "package": "software.amazon.awscdk.services.billingconductor" - }, - "python": { - "module": "aws_cdk.aws_billingconductor" - } - } - }, - "aws-cdk-lib.aws_budgets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Budgets" - }, - "java": { - "package": "software.amazon.awscdk.services.budgets" - }, - "python": { - "module": "aws_cdk.aws_budgets" - } - } - }, - "aws-cdk-lib.aws_cassandra": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Cassandra" - }, - "java": { - "package": "software.amazon.awscdk.services.cassandra" - }, - "python": { - "module": "aws_cdk.aws_cassandra" - } - } - }, - "aws-cdk-lib.aws_ce": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CE" - }, - "java": { - "package": "software.amazon.awscdk.services.ce" - }, - "python": { - "module": "aws_cdk.aws_ce" - } - } - }, - "aws-cdk-lib.aws_certificatemanager": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CertificateManager" - }, - "java": { - "package": "software.amazon.awscdk.services.certificatemanager" - }, - "python": { - "module": "aws_cdk.aws_certificatemanager" - } - } - }, - "aws-cdk-lib.aws_chatbot": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Chatbot" - }, - "java": { - "package": "software.amazon.awscdk.services.chatbot" - }, - "python": { - "module": "aws_cdk.aws_chatbot" - } - } - }, - "aws-cdk-lib.aws_cleanrooms": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.CleanRooms" - }, - "java": { - "package": "software.amazon.awscdk.services.cleanrooms" - }, - "python": { - "module": "aws_cdk.aws_cleanrooms" - } - } - }, - "aws-cdk-lib.aws_cleanroomsml": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.CleanRoomsML" - }, - "java": { - "package": "software.amazon.awscdk.services.cleanroomsml" - }, - "python": { - "module": "aws_cdk.aws_cleanroomsml" - } - } - }, - "aws-cdk-lib.aws_cloud9": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Cloud9" - }, - "java": { - "package": "software.amazon.awscdk.services.cloud9" - }, - "python": { - "module": "aws_cdk.aws_cloud9" - } - } - }, - "aws-cdk-lib.aws_cloudformation": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudFormation" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudformation" - }, - "python": { - "module": "aws_cdk.aws_cloudformation" - } - } - }, - "aws-cdk-lib.aws_cloudfront": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudFront" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudfront" - }, - "python": { - "module": "aws_cdk.aws_cloudfront" - } - } - }, - "aws-cdk-lib.aws_cloudfront.experimental": {}, - "aws-cdk-lib.aws_cloudfront_origins": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudFront.Origins" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudfront.origins" - }, - "python": { - "module": "aws_cdk.aws_cloudfront_origins" - } - } - }, - "aws-cdk-lib.aws_cloudtrail": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudTrail" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudtrail" - }, - "python": { - "module": "aws_cdk.aws_cloudtrail" - } - } - }, - "aws-cdk-lib.aws_cloudwatch": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudWatch" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudwatch" - }, - "python": { - "module": "aws_cdk.aws_cloudwatch" - } - } - }, - "aws-cdk-lib.aws_cloudwatch_actions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CloudWatch.Actions" - }, - "java": { - "package": "software.amazon.awscdk.services.cloudwatch.actions" - }, - "python": { - "module": "aws_cdk.aws_cloudwatch_actions" - } - } - }, - "aws-cdk-lib.aws_codeartifact": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeArtifact" - }, - "java": { - "package": "software.amazon.awscdk.services.codeartifact" - }, - "python": { - "module": "aws_cdk.aws_codeartifact" - } - } - }, - "aws-cdk-lib.aws_codebuild": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeBuild" - }, - "java": { - "package": "software.amazon.awscdk.services.codebuild" - }, - "python": { - "module": "aws_cdk.aws_codebuild" - } - } - }, - "aws-cdk-lib.aws_codecommit": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeCommit" - }, - "java": { - "package": "software.amazon.awscdk.services.codecommit" - }, - "python": { - "module": "aws_cdk.aws_codecommit" - } - } - }, - "aws-cdk-lib.aws_codeconnections": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.CodeConnections" - }, - "java": { - "package": "software.amazon.awscdk.services.codeconnections" - }, - "python": { - "module": "aws_cdk.aws_codeconnections" - } - } - }, - "aws-cdk-lib.aws_codedeploy": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeDeploy" - }, - "java": { - "package": "software.amazon.awscdk.services.codedeploy" - }, - "python": { - "module": "aws_cdk.aws_codedeploy" - } - } - }, - "aws-cdk-lib.aws_codeguruprofiler": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeGuruProfiler" - }, - "java": { - "package": "software.amazon.awscdk.services.codeguruprofiler" - }, - "python": { - "module": "aws_cdk.aws_codeguruprofiler" - } - } - }, - "aws-cdk-lib.aws_codegurureviewer": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeGuruReviewer" - }, - "java": { - "package": "software.amazon.awscdk.services.codegurureviewer" - }, - "python": { - "module": "aws_cdk.aws_codegurureviewer" - } - } - }, - "aws-cdk-lib.aws_codepipeline": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodePipeline" - }, - "java": { - "package": "software.amazon.awscdk.services.codepipeline" - }, - "python": { - "module": "aws_cdk.aws_codepipeline" - } - } - }, - "aws-cdk-lib.aws_codepipeline_actions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodePipeline.Actions" - }, - "java": { - "package": "software.amazon.awscdk.services.codepipeline.actions" - }, - "python": { - "module": "aws_cdk.aws_codepipeline_actions" - } - } - }, - "aws-cdk-lib.aws_codestar": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Codestar" - }, - "java": { - "package": "software.amazon.awscdk.services.codestar" - }, - "python": { - "module": "aws_cdk.aws_codestar" - } - } - }, - "aws-cdk-lib.aws_codestarconnections": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeStarConnections" - }, - "java": { - "package": "software.amazon.awscdk.services.codestarconnections" - }, - "python": { - "module": "aws_cdk.aws_codestarconnections" - } - } - }, - "aws-cdk-lib.aws_codestarnotifications": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CodeStarNotifications" - }, - "java": { - "package": "software.amazon.awscdk.services.codestarnotifications" - }, - "python": { - "module": "aws_cdk.aws_codestarnotifications" - } - } - }, - "aws-cdk-lib.aws_cognito": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Cognito" - }, - "java": { - "package": "software.amazon.awscdk.services.cognito" - }, - "python": { - "module": "aws_cdk.aws_cognito" - } - } - }, - "aws-cdk-lib.aws_cognito_identitypool": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Cognito.Identitypool" - }, - "java": { - "package": "software.amazon.awscdk.services.cognito.identitypool" - }, - "python": { - "module": "aws_cdk.aws_cognito_identitypool" - } - } - }, - "aws-cdk-lib.aws_comprehend": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Comprehend" - }, - "java": { - "package": "software.amazon.awscdk.services.comprehend" - }, - "python": { - "module": "aws_cdk.aws_comprehend" - } - } - }, - "aws-cdk-lib.aws_config": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Config" - }, - "java": { - "package": "software.amazon.awscdk.services.config" - }, - "python": { - "module": "aws_cdk.aws_config" - } - } - }, - "aws-cdk-lib.aws_connect": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Connect" - }, - "java": { - "package": "software.amazon.awscdk.services.connect" - }, - "python": { - "module": "aws_cdk.aws_connect" - } - } - }, - "aws-cdk-lib.aws_connectcampaigns": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ConnectCampaigns" - }, - "java": { - "package": "software.amazon.awscdk.services.connectcampaigns" - }, - "python": { - "module": "aws_cdk.aws_connectcampaigns" - } - } - }, - "aws-cdk-lib.aws_connectcampaignsv2": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.ConnectCampaignsV2" - }, - "java": { - "package": "software.amazon.awscdk.services.connectcampaignsv2" - }, - "python": { - "module": "aws_cdk.aws_connectcampaignsv2" - } - } - }, - "aws-cdk-lib.aws_controltower": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ControlTower" - }, - "java": { - "package": "software.amazon.awscdk.services.controltower" - }, - "python": { - "module": "aws_cdk.aws_controltower" - } - } - }, - "aws-cdk-lib.aws_cur": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CUR" - }, - "java": { - "package": "software.amazon.awscdk.services.cur" - }, - "python": { - "module": "aws_cdk.aws_cur" - } - } - }, - "aws-cdk-lib.aws_customerprofiles": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.CustomerProfiles" - }, - "java": { - "package": "software.amazon.awscdk.services.customerprofiles" - }, - "python": { - "module": "aws_cdk.aws_customerprofiles" - } - } - }, - "aws-cdk-lib.aws_databrew": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DataBrew" - }, - "java": { - "package": "software.amazon.awscdk.services.databrew" - }, - "python": { - "module": "aws_cdk.aws_databrew" - } - } - }, - "aws-cdk-lib.aws_datapipeline": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DataPipeline" - }, - "java": { - "package": "software.amazon.awscdk.services.datapipeline" - }, - "python": { - "module": "aws_cdk.aws_datapipeline" - } - } - }, - "aws-cdk-lib.aws_datasync": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DataSync" - }, - "java": { - "package": "software.amazon.awscdk.services.datasync" - }, - "python": { - "module": "aws_cdk.aws_datasync" - } - } - }, - "aws-cdk-lib.aws_datazone": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.DataZone" - }, - "java": { - "package": "software.amazon.awscdk.services.datazone" - }, - "python": { - "module": "aws_cdk.aws_datazone" - } - } - }, - "aws-cdk-lib.aws_dax": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DAX" - }, - "java": { - "package": "software.amazon.awscdk.services.dax" - }, - "python": { - "module": "aws_cdk.aws_dax" - } - } - }, - "aws-cdk-lib.aws_deadline": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Deadline" - }, - "java": { - "package": "software.amazon.awscdk.services.deadline" - }, - "python": { - "module": "aws_cdk.aws_deadline" - } - } - }, - "aws-cdk-lib.aws_detective": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Detective" - }, - "java": { - "package": "software.amazon.awscdk.services.detective" - }, - "python": { - "module": "aws_cdk.aws_detective" - } - } - }, - "aws-cdk-lib.aws_devicefarm": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DeviceFarm" - }, - "java": { - "package": "software.amazon.awscdk.services.devicefarm" - }, - "python": { - "module": "aws_cdk.aws_devicefarm" - } - } - }, - "aws-cdk-lib.aws_devopsguru": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DevOpsGuru" - }, - "java": { - "package": "software.amazon.awscdk.services.devopsguru" - }, - "python": { - "module": "aws_cdk.aws_devopsguru" - } - } - }, - "aws-cdk-lib.aws_directoryservice": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DirectoryService" - }, - "java": { - "package": "software.amazon.awscdk.services.directoryservice" - }, - "python": { - "module": "aws_cdk.aws_directoryservice" - } - } - }, - "aws-cdk-lib.aws_dlm": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DLM" - }, - "java": { - "package": "software.amazon.awscdk.services.dlm" - }, - "python": { - "module": "aws_cdk.aws_dlm" - } - } - }, - "aws-cdk-lib.aws_dms": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DMS" - }, - "java": { - "package": "software.amazon.awscdk.services.dms" - }, - "python": { - "module": "aws_cdk.aws_dms" - } - } - }, - "aws-cdk-lib.aws_docdb": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DocDB" - }, - "java": { - "package": "software.amazon.awscdk.services.docdb" - }, - "python": { - "module": "aws_cdk.aws_docdb" - } - } - }, - "aws-cdk-lib.aws_docdbelastic": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DocDBElastic" - }, - "java": { - "package": "software.amazon.awscdk.services.docdbelastic" - }, - "python": { - "module": "aws_cdk.aws_docdbelastic" - } - } - }, - "aws-cdk-lib.aws_dsql": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.DSQL" - }, - "java": { - "package": "software.amazon.awscdk.services.dsql" - }, - "python": { - "module": "aws_cdk.aws_dsql" - } - } - }, - "aws-cdk-lib.aws_dynamodb": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DynamoDB" - }, - "java": { - "package": "software.amazon.awscdk.services.dynamodb" - }, - "python": { - "module": "aws_cdk.aws_dynamodb" - } - } - }, - "aws-cdk-lib.aws_ec2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EC2" - }, - "java": { - "package": "software.amazon.awscdk.services.ec2" - }, - "python": { - "module": "aws_cdk.aws_ec2" - } - } - }, - "aws-cdk-lib.aws_ecr": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ECR" - }, - "java": { - "package": "software.amazon.awscdk.services.ecr" - }, - "python": { - "module": "aws_cdk.aws_ecr" - } - } - }, - "aws-cdk-lib.aws_ecr_assets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Ecr.Assets" - }, - "java": { - "package": "software.amazon.awscdk.services.ecr.assets" - }, - "python": { - "module": "aws_cdk.aws_ecr_assets" - } - } - }, - "aws-cdk-lib.aws_ecs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ECS" - }, - "java": { - "package": "software.amazon.awscdk.services.ecs" - }, - "python": { - "module": "aws_cdk.aws_ecs" - } - } - }, - "aws-cdk-lib.aws_ecs_patterns": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ECS.Patterns" - }, - "java": { - "package": "software.amazon.awscdk.services.ecs.patterns" - }, - "python": { - "module": "aws_cdk.aws_ecs_patterns" - } - } - }, - "aws-cdk-lib.aws_efs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EFS" - }, - "java": { - "package": "software.amazon.awscdk.services.efs" - }, - "python": { - "module": "aws_cdk.aws_efs" - } - } - }, - "aws-cdk-lib.aws_eks": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EKS" - }, - "java": { - "package": "software.amazon.awscdk.services.eks" - }, - "python": { - "module": "aws_cdk.aws_eks" - } - } - }, - "aws-cdk-lib.aws_elasticache": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElastiCache" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticache" - }, - "python": { - "module": "aws_cdk.aws_elasticache" - } - } - }, - "aws-cdk-lib.aws_elasticbeanstalk": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElasticBeanstalk" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticbeanstalk" - }, - "python": { - "module": "aws_cdk.aws_elasticbeanstalk" - } - } - }, - "aws-cdk-lib.aws_elasticloadbalancing": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElasticLoadBalancing" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticloadbalancing" - }, - "python": { - "module": "aws_cdk.aws_elasticloadbalancing" - } - } - }, - "aws-cdk-lib.aws_elasticloadbalancingv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticloadbalancingv2" - }, - "python": { - "module": "aws_cdk.aws_elasticloadbalancingv2" - } - } - }, - "aws-cdk-lib.aws_elasticloadbalancingv2_actions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Actions" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticloadbalancingv2.actions" - }, - "python": { - "module": "aws_cdk.aws_elasticloadbalancingv2_actions" - } - } - }, - "aws-cdk-lib.aws_elasticloadbalancingv2_targets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ElasticLoadBalancingV2.Targets" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticloadbalancingv2.targets" - }, - "python": { - "module": "aws_cdk.aws_elasticloadbalancingv2_targets" - } - } - }, - "aws-cdk-lib.aws_elasticsearch": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Elasticsearch" - }, - "java": { - "package": "software.amazon.awscdk.services.elasticsearch" - }, - "python": { - "module": "aws_cdk.aws_elasticsearch" - } - } - }, - "aws-cdk-lib.aws_emr": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EMR" - }, - "java": { - "package": "software.amazon.awscdk.services.emr" - }, - "python": { - "module": "aws_cdk.aws_emr" - } - } - }, - "aws-cdk-lib.aws_emrcontainers": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EMRContainers" - }, - "java": { - "package": "software.amazon.awscdk.services.emrcontainers" - }, - "python": { - "module": "aws_cdk.aws_emrcontainers" - } - } - }, - "aws-cdk-lib.aws_emrserverless": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EMRServerless" - }, - "java": { - "package": "software.amazon.awscdk.services.emrserverless" - }, - "python": { - "module": "aws_cdk.aws_emrserverless" - } - } - }, - "aws-cdk-lib.aws_entityresolution": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.EntityResolution" - }, - "java": { - "package": "software.amazon.awscdk.services.entityresolution" - }, - "python": { - "module": "aws_cdk.aws_entityresolution" - } - } - }, - "aws-cdk-lib.aws_events": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Events" - }, - "java": { - "package": "software.amazon.awscdk.services.events" - }, - "python": { - "module": "aws_cdk.aws_events" - } - } - }, - "aws-cdk-lib.aws_events_targets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Events.Targets" - }, - "java": { - "package": "software.amazon.awscdk.services.events.targets" - }, - "python": { - "module": "aws_cdk.aws_events_targets" - } - } - }, - "aws-cdk-lib.aws_eventschemas": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.EventSchemas" - }, - "java": { - "package": "software.amazon.awscdk.services.eventschemas" - }, - "python": { - "module": "aws_cdk.aws_eventschemas" - } - } - }, - "aws-cdk-lib.aws_evidently": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Evidently" - }, - "java": { - "package": "software.amazon.awscdk.services.evidently" - }, - "python": { - "module": "aws_cdk.aws_evidently" - } - } - }, - "aws-cdk-lib.aws_finspace": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.FinSpace" - }, - "java": { - "package": "software.amazon.awscdk.services.finspace" - }, - "python": { - "module": "aws_cdk.aws_finspace" - } - } - }, - "aws-cdk-lib.aws_fis": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.FIS" - }, - "java": { - "package": "software.amazon.awscdk.services.fis" - }, - "python": { - "module": "aws_cdk.aws_fis" - } - } - }, - "aws-cdk-lib.aws_fms": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.FMS" - }, - "java": { - "package": "software.amazon.awscdk.services.fms" - }, - "python": { - "module": "aws_cdk.aws_fms" - } - } - }, - "aws-cdk-lib.aws_forecast": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Forecast" - }, - "java": { - "package": "software.amazon.awscdk.services.forecast" - }, - "python": { - "module": "aws_cdk.aws_forecast" - } - } - }, - "aws-cdk-lib.aws_frauddetector": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.FraudDetector" - }, - "java": { - "package": "software.amazon.awscdk.services.frauddetector" - }, - "python": { - "module": "aws_cdk.aws_frauddetector" - } - } - }, - "aws-cdk-lib.aws_fsx": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.FSx" - }, - "java": { - "package": "software.amazon.awscdk.services.fsx" - }, - "python": { - "module": "aws_cdk.aws_fsx" - } - } - }, - "aws-cdk-lib.aws_gamelift": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GameLift" - }, - "java": { - "package": "software.amazon.awscdk.services.gamelift" - }, - "python": { - "module": "aws_cdk.aws_gamelift" - } - } - }, - "aws-cdk-lib.aws_gameliftstreams": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.GameLiftStreams" - }, - "java": { - "package": "software.amazon.awscdk.services.gameliftstreams" - }, - "python": { - "module": "aws_cdk.aws_gameliftstreams" - } - } - }, - "aws-cdk-lib.aws_globalaccelerator": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GlobalAccelerator" - }, - "java": { - "package": "software.amazon.awscdk.services.globalaccelerator" - }, - "python": { - "module": "aws_cdk.aws_globalaccelerator" - } - } - }, - "aws-cdk-lib.aws_globalaccelerator_endpoints": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GlobalAccelerator.Endpoints" - }, - "java": { - "package": "software.amazon.awscdk.services.globalaccelerator.endpoints" - }, - "python": { - "module": "aws_cdk.aws_globalaccelerator_endpoints" - } - } - }, - "aws-cdk-lib.aws_glue": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Glue" - }, - "java": { - "package": "software.amazon.awscdk.services.glue" - }, - "python": { - "module": "aws_cdk.aws_glue" - } - } - }, - "aws-cdk-lib.aws_grafana": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Grafana" - }, - "java": { - "package": "software.amazon.awscdk.services.grafana" - }, - "python": { - "module": "aws_cdk.aws_grafana" - } - } - }, - "aws-cdk-lib.aws_greengrass": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Greengrass" - }, - "java": { - "package": "software.amazon.awscdk.services.greengrass" - }, - "python": { - "module": "aws_cdk.aws_greengrass" - } - } - }, - "aws-cdk-lib.aws_greengrassv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GreengrassV2" - }, - "java": { - "package": "software.amazon.awscdk.services.greengrassv2" - }, - "python": { - "module": "aws_cdk.aws_greengrassv2" - } - } - }, - "aws-cdk-lib.aws_groundstation": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GroundStation" - }, - "java": { - "package": "software.amazon.awscdk.services.groundstation" - }, - "python": { - "module": "aws_cdk.aws_groundstation" - } - } - }, - "aws-cdk-lib.aws_guardduty": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.GuardDuty" - }, - "java": { - "package": "software.amazon.awscdk.services.guardduty" - }, - "python": { - "module": "aws_cdk.aws_guardduty" - } - } - }, - "aws-cdk-lib.aws_healthimaging": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.HealthImaging" - }, - "java": { - "package": "software.amazon.awscdk.services.healthimaging" - }, - "python": { - "module": "aws_cdk.aws_healthimaging" - } - } - }, - "aws-cdk-lib.aws_healthlake": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.HealthLake" - }, - "java": { - "package": "software.amazon.awscdk.services.healthlake" - }, - "python": { - "module": "aws_cdk.aws_healthlake" - } - } - }, - "aws-cdk-lib.aws_iam": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IAM" - }, - "java": { - "package": "software.amazon.awscdk.services.iam" - }, - "python": { - "module": "aws_cdk.aws_iam" - } - } - }, - "aws-cdk-lib.aws_identitystore": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IdentityStore" - }, - "java": { - "package": "software.amazon.awscdk.services.identitystore" - }, - "python": { - "module": "aws_cdk.aws_identitystore" - } - } - }, - "aws-cdk-lib.aws_imagebuilder": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ImageBuilder" - }, - "java": { - "package": "software.amazon.awscdk.services.imagebuilder" - }, - "python": { - "module": "aws_cdk.aws_imagebuilder" - } - } - }, - "aws-cdk-lib.aws_inspector": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Inspector" - }, - "java": { - "package": "software.amazon.awscdk.services.inspector" - }, - "python": { - "module": "aws_cdk.aws_inspector" - } - } - }, - "aws-cdk-lib.aws_inspectorv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.InspectorV2" - }, - "java": { - "package": "software.amazon.awscdk.services.inspectorv2" - }, - "python": { - "module": "aws_cdk.aws_inspectorv2" - } - } - }, - "aws-cdk-lib.aws_internetmonitor": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.InternetMonitor" - }, - "java": { - "package": "software.amazon.awscdk.services.internetmonitor" - }, - "python": { - "module": "aws_cdk.aws_internetmonitor" - } - } - }, - "aws-cdk-lib.aws_invoicing": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Invoicing" - }, - "java": { - "package": "software.amazon.awscdk.services.invoicing" - }, - "python": { - "module": "aws_cdk.aws_invoicing" - } - } - }, - "aws-cdk-lib.aws_iot": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoT" - }, - "java": { - "package": "software.amazon.awscdk.services.iot" - }, - "python": { - "module": "aws_cdk.aws_iot" - } - } - }, - "aws-cdk-lib.aws_iotanalytics": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTAnalytics" - }, - "java": { - "package": "software.amazon.awscdk.services.iotanalytics" - }, - "python": { - "module": "aws_cdk.aws_iotanalytics" - } - } - }, - "aws-cdk-lib.aws_iotcoredeviceadvisor": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTCoreDeviceAdvisor" - }, - "java": { - "package": "software.amazon.awscdk.services.iotcoredeviceadvisor" - }, - "python": { - "module": "aws_cdk.aws_iotcoredeviceadvisor" - } - } - }, - "aws-cdk-lib.aws_iotevents": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTEvents" - }, - "java": { - "package": "software.amazon.awscdk.services.iotevents" - }, - "python": { - "module": "aws_cdk.aws_iotevents" - } - } - }, - "aws-cdk-lib.aws_iotfleethub": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTFleetHub" - }, - "java": { - "package": "software.amazon.awscdk.services.iotfleethub" - }, - "python": { - "module": "aws_cdk.aws_iotfleethub" - } - } - }, - "aws-cdk-lib.aws_iotfleetwise": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTFleetWise" - }, - "java": { - "package": "software.amazon.awscdk.services.iotfleetwise" - }, - "python": { - "module": "aws_cdk.aws_iotfleetwise" - } - } - }, - "aws-cdk-lib.aws_iotsitewise": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTSiteWise" - }, - "java": { - "package": "software.amazon.awscdk.services.iotsitewise" - }, - "python": { - "module": "aws_cdk.aws_iotsitewise" - } - } - }, - "aws-cdk-lib.aws_iotthingsgraph": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTThingsGraph" - }, - "java": { - "package": "software.amazon.awscdk.services.iotthingsgraph" - }, - "python": { - "module": "aws_cdk.aws_iotthingsgraph" - } - } - }, - "aws-cdk-lib.aws_iottwinmaker": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTTwinMaker" - }, - "java": { - "package": "software.amazon.awscdk.services.iottwinmaker" - }, - "python": { - "module": "aws_cdk.aws_iottwinmaker" - } - } - }, - "aws-cdk-lib.aws_iotwireless": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IoTWireless" - }, - "java": { - "package": "software.amazon.awscdk.services.iotwireless" - }, - "python": { - "module": "aws_cdk.aws_iotwireless" - } - } - }, - "aws-cdk-lib.aws_ivs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Ivs" - }, - "java": { - "package": "software.amazon.awscdk.services.ivs" - }, - "python": { - "module": "aws_cdk.aws_ivs" - } - } - }, - "aws-cdk-lib.aws_ivschat": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.IVSChat" - }, - "java": { - "package": "software.amazon.awscdk.services.ivschat" - }, - "python": { - "module": "aws_cdk.aws_ivschat" - } - } - }, - "aws-cdk-lib.aws_kafkaconnect": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KafkaConnect" - }, - "java": { - "package": "software.amazon.awscdk.services.kafkaconnect" - }, - "python": { - "module": "aws_cdk.aws_kafkaconnect" - } - } - }, - "aws-cdk-lib.aws_kendra": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Kendra" - }, - "java": { - "package": "software.amazon.awscdk.services.kendra" - }, - "python": { - "module": "aws_cdk.aws_kendra" - } - } - }, - "aws-cdk-lib.aws_kendraranking": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KendraRanking" - }, - "java": { - "package": "software.amazon.awscdk.services.kendraranking" - }, - "python": { - "module": "aws_cdk.aws_kendraranking" - } - } - }, - "aws-cdk-lib.aws_kinesis": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Kinesis" - }, - "java": { - "package": "software.amazon.awscdk.services.kinesis" - }, - "python": { - "module": "aws_cdk.aws_kinesis" - } - } - }, - "aws-cdk-lib.aws_kinesisanalytics": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KinesisAnalytics" - }, - "java": { - "package": "software.amazon.awscdk.services.kinesisanalytics" - }, - "python": { - "module": "aws_cdk.aws_kinesisanalytics" - } - } - }, - "aws-cdk-lib.aws_kinesisanalyticsv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KinesisAnalyticsV2" - }, - "java": { - "package": "software.amazon.awscdk.services.kinesisanalyticsv2" - }, - "python": { - "module": "aws_cdk.aws_kinesisanalyticsv2" - } - } - }, - "aws-cdk-lib.aws_kinesisfirehose": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KinesisFirehose" - }, - "java": { - "package": "software.amazon.awscdk.services.kinesisfirehose" - }, - "python": { - "module": "aws_cdk.aws_kinesisfirehose" - } - } - }, - "aws-cdk-lib.aws_kinesisvideo": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KinesisVideo" - }, - "java": { - "package": "software.amazon.awscdk.services.kinesisvideo" - }, - "python": { - "module": "aws_cdk.aws_kinesisvideo" - } - } - }, - "aws-cdk-lib.aws_kms": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.KMS" - }, - "java": { - "package": "software.amazon.awscdk.services.kms" - }, - "python": { - "module": "aws_cdk.aws_kms" - } - } - }, - "aws-cdk-lib.aws_lakeformation": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.LakeFormation" - }, - "java": { - "package": "software.amazon.awscdk.services.lakeformation" - }, - "python": { - "module": "aws_cdk.aws_lakeformation" - } - } - }, - "aws-cdk-lib.aws_lambda": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lambda" - }, - "java": { - "package": "software.amazon.awscdk.services.lambda" - }, - "python": { - "module": "aws_cdk.aws_lambda" - } - } - }, - "aws-cdk-lib.aws_lambda_destinations": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lambda.Destinations" - }, - "java": { - "package": "software.amazon.awscdk.services.lambda.destinations" - }, - "python": { - "module": "aws_cdk.aws_lambda_destinations" - } - } - }, - "aws-cdk-lib.aws_lambda_event_sources": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lambda.EventSources" - }, - "java": { - "package": "software.amazon.awscdk.services.lambda.eventsources" - }, - "python": { - "module": "aws_cdk.aws_lambda_event_sources" - } - } - }, - "aws-cdk-lib.aws_lambda_nodejs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lambda.Nodejs" - }, - "java": { - "package": "software.amazon.awscdk.services.lambda.nodejs" - }, - "python": { - "module": "aws_cdk.aws_lambda_nodejs" - } - } - }, - "aws-cdk-lib.aws_launchwizard": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.LaunchWizard" - }, - "java": { - "package": "software.amazon.awscdk.services.launchwizard" - }, - "python": { - "module": "aws_cdk.aws_launchwizard" - } - } - }, - "aws-cdk-lib.aws_lex": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lex" - }, - "java": { - "package": "software.amazon.awscdk.services.lex" - }, - "python": { - "module": "aws_cdk.aws_lex" - } - } - }, - "aws-cdk-lib.aws_licensemanager": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.LicenseManager" - }, - "java": { - "package": "software.amazon.awscdk.services.licensemanager" - }, - "python": { - "module": "aws_cdk.aws_licensemanager" - } - } - }, - "aws-cdk-lib.aws_lightsail": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Lightsail" - }, - "java": { - "package": "software.amazon.awscdk.services.lightsail" - }, - "python": { - "module": "aws_cdk.aws_lightsail" - } - } - }, - "aws-cdk-lib.aws_location": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Location" - }, - "java": { - "package": "software.amazon.awscdk.services.location" - }, - "python": { - "module": "aws_cdk.aws_location" - } - } - }, - "aws-cdk-lib.aws_logs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Logs" - }, - "java": { - "package": "software.amazon.awscdk.services.logs" - }, - "python": { - "module": "aws_cdk.aws_logs" - } - } - }, - "aws-cdk-lib.aws_logs_destinations": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Logs.Destinations" - }, - "java": { - "package": "software.amazon.awscdk.services.logs.destinations" - }, - "python": { - "module": "aws_cdk.aws_logs_destinations" - } - } - }, - "aws-cdk-lib.aws_lookoutequipment": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.LookoutEquipment" - }, - "java": { - "package": "software.amazon.awscdk.services.lookoutequipment" - }, - "python": { - "module": "aws_cdk.aws_lookoutequipment" - } - } - }, - "aws-cdk-lib.aws_lookoutmetrics": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.LookoutMetrics" - }, - "java": { - "package": "software.amazon.awscdk.services.lookoutmetrics" - }, - "python": { - "module": "aws_cdk.aws_lookoutmetrics" - } - } - }, - "aws-cdk-lib.aws_lookoutvision": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.LookoutVision" - }, - "java": { - "package": "software.amazon.awscdk.services.lookoutvision" - }, - "python": { - "module": "aws_cdk.aws_lookoutvision" - } - } - }, - "aws-cdk-lib.aws_m2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.M2" - }, - "java": { - "package": "software.amazon.awscdk.services.m2" - }, - "python": { - "module": "aws_cdk.aws_m2" - } - } - }, - "aws-cdk-lib.aws_macie": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Macie" - }, - "java": { - "package": "software.amazon.awscdk.services.macie" - }, - "python": { - "module": "aws_cdk.aws_macie" - } - } - }, - "aws-cdk-lib.aws_managedblockchain": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ManagedBlockchain" - }, - "java": { - "package": "software.amazon.awscdk.services.managedblockchain" - }, - "python": { - "module": "aws_cdk.aws_managedblockchain" - } - } - }, - "aws-cdk-lib.aws_mediaconnect": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaConnect" - }, - "java": { - "package": "software.amazon.awscdk.services.mediaconnect" - }, - "python": { - "module": "aws_cdk.aws_mediaconnect" - } - } - }, - "aws-cdk-lib.aws_mediaconvert": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaConvert" - }, - "java": { - "package": "software.amazon.awscdk.services.mediaconvert" - }, - "python": { - "module": "aws_cdk.aws_mediaconvert" - } - } - }, - "aws-cdk-lib.aws_medialive": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaLive" - }, - "java": { - "package": "software.amazon.awscdk.services.medialive" - }, - "python": { - "module": "aws_cdk.aws_medialive" - } - } - }, - "aws-cdk-lib.aws_mediapackage": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaPackage" - }, - "java": { - "package": "software.amazon.awscdk.services.mediapackage" - }, - "python": { - "module": "aws_cdk.aws_mediapackage" - } - } - }, - "aws-cdk-lib.aws_mediapackagev2": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.MediaPackageV2" - }, - "java": { - "package": "software.amazon.awscdk.services.mediapackagev2" - }, - "python": { - "module": "aws_cdk.aws_mediapackagev2" - } - } - }, - "aws-cdk-lib.aws_mediastore": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaStore" - }, - "java": { - "package": "software.amazon.awscdk.services.mediastore" - }, - "python": { - "module": "aws_cdk.aws_mediastore" - } - } - }, - "aws-cdk-lib.aws_mediatailor": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaTailor" - }, - "java": { - "package": "software.amazon.awscdk.services.mediatailor" - }, - "python": { - "module": "aws_cdk.aws_mediatailor" - } - } - }, - "aws-cdk-lib.aws_memorydb": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MemoryDB" - }, - "java": { - "package": "software.amazon.awscdk.services.memorydb" - }, - "python": { - "module": "aws_cdk.aws_memorydb" - } - } - }, - "aws-cdk-lib.aws_msk": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MSK" - }, - "java": { - "package": "software.amazon.awscdk.services.msk" - }, - "python": { - "module": "aws_cdk.aws_msk" - } - } - }, - "aws-cdk-lib.aws_mwaa": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MWAA" - }, - "java": { - "package": "software.amazon.awscdk.services.mwaa" - }, - "python": { - "module": "aws_cdk.aws_mwaa" - } - } - }, - "aws-cdk-lib.aws_neptune": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Neptune" - }, - "java": { - "package": "software.amazon.awscdk.services.neptune" - }, - "python": { - "module": "aws_cdk.aws_neptune" - } - } - }, - "aws-cdk-lib.aws_neptunegraph": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.NeptuneGraph" - }, - "java": { - "package": "software.amazon.awscdk.services.neptunegraph" - }, - "python": { - "module": "aws_cdk.aws_neptunegraph" - } - } - }, - "aws-cdk-lib.aws_networkfirewall": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.NetworkFirewall" - }, - "java": { - "package": "software.amazon.awscdk.services.networkfirewall" - }, - "python": { - "module": "aws_cdk.aws_networkfirewall" - } - } - }, - "aws-cdk-lib.aws_networkmanager": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.NetworkManager" - }, - "java": { - "package": "software.amazon.awscdk.services.networkmanager" - }, - "python": { - "module": "aws_cdk.aws_networkmanager" - } - } - }, - "aws-cdk-lib.aws_nimblestudio": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.NimbleStudio" - }, - "java": { - "package": "software.amazon.awscdk.services.nimblestudio" - }, - "python": { - "module": "aws_cdk.aws_nimblestudio" - } - } - }, - "aws-cdk-lib.aws_notifications": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Notifications" - }, - "java": { - "package": "software.amazon.awscdk.services.notifications" - }, - "python": { - "module": "aws_cdk.aws_notifications" - } - } - }, - "aws-cdk-lib.aws_notificationscontacts": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.NotificationsContacts" - }, - "java": { - "package": "software.amazon.awscdk.services.notificationscontacts" - }, - "python": { - "module": "aws_cdk.aws_notificationscontacts" - } - } - }, - "aws-cdk-lib.aws_oam": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Oam" - }, - "java": { - "package": "software.amazon.awscdk.services.oam" - }, - "python": { - "module": "aws_cdk.aws_oam" - } - } - }, - "aws-cdk-lib.aws_omics": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Omics" - }, - "java": { - "package": "software.amazon.awscdk.services.omics" - }, - "python": { - "module": "aws_cdk.aws_omics" - } - } - }, - "aws-cdk-lib.aws_opensearchserverless": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.OpenSearchServerless" - }, - "java": { - "package": "software.amazon.awscdk.services.opensearchserverless" - }, - "python": { - "module": "aws_cdk.aws_opensearchserverless" - } - } - }, - "aws-cdk-lib.aws_opensearchservice": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.OpenSearchService" - }, - "java": { - "package": "software.amazon.awscdk.services.opensearchservice" - }, - "python": { - "module": "aws_cdk.aws_opensearchservice" - } - } - }, - "aws-cdk-lib.aws_opsworks": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.OpsWorks" - }, - "java": { - "package": "software.amazon.awscdk.services.opsworks" - }, - "python": { - "module": "aws_cdk.aws_opsworks" - } - } - }, - "aws-cdk-lib.aws_opsworkscm": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.OpsWorksCM" - }, - "java": { - "package": "software.amazon.awscdk.services.opsworkscm" - }, - "python": { - "module": "aws_cdk.aws_opsworkscm" - } - } - }, - "aws-cdk-lib.aws_organizations": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Organizations" - }, - "java": { - "package": "software.amazon.awscdk.services.organizations" - }, - "python": { - "module": "aws_cdk.aws_organizations" - } - } - }, - "aws-cdk-lib.aws_osis": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.OSIS" - }, - "java": { - "package": "software.amazon.awscdk.services.osis" - }, - "python": { - "module": "aws_cdk.aws_osis" - } - } - }, - "aws-cdk-lib.aws_panorama": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Panorama" - }, - "java": { - "package": "software.amazon.awscdk.services.panorama" - }, - "python": { - "module": "aws_cdk.aws_panorama" - } - } - }, - "aws-cdk-lib.aws_paymentcryptography": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.PaymentCryptography" - }, - "java": { - "package": "software.amazon.awscdk.services.paymentcryptography" - }, - "python": { - "module": "aws_cdk.aws_paymentcryptography" - } - } - }, - "aws-cdk-lib.aws_pcaconnectorad": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.PCAConnectorAD" - }, - "java": { - "package": "software.amazon.awscdk.services.pcaconnectorad" - }, - "python": { - "module": "aws_cdk.aws_pcaconnectorad" - } - } - }, - "aws-cdk-lib.aws_pcaconnectorscep": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.PCAConnectorSCEP" - }, - "java": { - "package": "software.amazon.awscdk.services.pcaconnectorscep" - }, - "python": { - "module": "aws_cdk.aws_pcaconnectorscep" - } - } - }, - "aws-cdk-lib.aws_pcs": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.PCS" - }, - "java": { - "package": "software.amazon.awscdk.services.pcs" - }, - "python": { - "module": "aws_cdk.aws_pcs" - } - } - }, - "aws-cdk-lib.aws_personalize": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Personalize" - }, - "java": { - "package": "software.amazon.awscdk.services.personalize" - }, - "python": { - "module": "aws_cdk.aws_personalize" - } - } - }, - "aws-cdk-lib.aws_pinpoint": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Pinpoint" - }, - "java": { - "package": "software.amazon.awscdk.services.pinpoint" - }, - "python": { - "module": "aws_cdk.aws_pinpoint" - } - } - }, - "aws-cdk-lib.aws_pinpointemail": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.PinpointEmail" - }, - "java": { - "package": "software.amazon.awscdk.services.pinpointemail" - }, - "python": { - "module": "aws_cdk.aws_pinpointemail" - } - } - }, - "aws-cdk-lib.aws_pipes": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Pipes" - }, - "java": { - "package": "software.amazon.awscdk.services.pipes" - }, - "python": { - "module": "aws_cdk.aws_pipes" - } - } - }, - "aws-cdk-lib.aws_proton": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Proton" - }, - "java": { - "package": "software.amazon.awscdk.services.proton" - }, - "python": { - "module": "aws_cdk.aws_proton" - } - } - }, - "aws-cdk-lib.aws_qbusiness": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.QBusiness" - }, - "java": { - "package": "software.amazon.awscdk.services.qbusiness" - }, - "python": { - "module": "aws_cdk.aws_qbusiness" - } - } - }, - "aws-cdk-lib.aws_qldb": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.QLDB" - }, - "java": { - "package": "software.amazon.awscdk.services.qldb" - }, - "python": { - "module": "aws_cdk.aws_qldb" - } - } - }, - "aws-cdk-lib.aws_quicksight": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.QuickSight" - }, - "java": { - "package": "software.amazon.awscdk.services.quicksight" - }, - "python": { - "module": "aws_cdk.aws_quicksight" - } - } - }, - "aws-cdk-lib.aws_ram": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RAM" - }, - "java": { - "package": "software.amazon.awscdk.services.ram" - }, - "python": { - "module": "aws_cdk.aws_ram" - } - } - }, - "aws-cdk-lib.aws_rbin": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Rbin" - }, - "java": { - "package": "software.amazon.awscdk.services.rbin" - }, - "python": { - "module": "aws_cdk.aws_rbin" - } - } - }, - "aws-cdk-lib.aws_rds": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RDS" - }, - "java": { - "package": "software.amazon.awscdk.services.rds" - }, - "python": { - "module": "aws_cdk.aws_rds" - } - } - }, - "aws-cdk-lib.aws_redshift": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Redshift" - }, - "java": { - "package": "software.amazon.awscdk.services.redshift" - }, - "python": { - "module": "aws_cdk.aws_redshift" - } - } - }, - "aws-cdk-lib.aws_redshiftserverless": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RedshiftServerless" - }, - "java": { - "package": "software.amazon.awscdk.services.redshiftserverless" - }, - "python": { - "module": "aws_cdk.aws_redshiftserverless" - } - } - }, - "aws-cdk-lib.aws_refactorspaces": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RefactorSpaces" - }, - "java": { - "package": "software.amazon.awscdk.services.refactorspaces" - }, - "python": { - "module": "aws_cdk.aws_refactorspaces" - } - } - }, - "aws-cdk-lib.aws_rekognition": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Rekognition" - }, - "java": { - "package": "software.amazon.awscdk.services.rekognition" - }, - "python": { - "module": "aws_cdk.aws_rekognition" - } - } - }, - "aws-cdk-lib.aws_resiliencehub": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ResilienceHub" - }, - "java": { - "package": "software.amazon.awscdk.services.resiliencehub" - }, - "python": { - "module": "aws_cdk.aws_resiliencehub" - } - } - }, - "aws-cdk-lib.aws_resourceexplorer2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ResourceExplorer2" - }, - "java": { - "package": "software.amazon.awscdk.services.resourceexplorer2" - }, - "python": { - "module": "aws_cdk.aws_resourceexplorer2" - } - } - }, - "aws-cdk-lib.aws_resourcegroups": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ResourceGroups" - }, - "java": { - "package": "software.amazon.awscdk.services.resourcegroups" - }, - "python": { - "module": "aws_cdk.aws_resourcegroups" - } - } - }, - "aws-cdk-lib.aws_robomaker": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RoboMaker" - }, - "java": { - "package": "software.amazon.awscdk.services.robomaker" - }, - "python": { - "module": "aws_cdk.aws_robomaker" - } - } - }, - "aws-cdk-lib.aws_rolesanywhere": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RolesAnywhere" - }, - "java": { - "package": "software.amazon.awscdk.services.rolesanywhere" - }, - "python": { - "module": "aws_cdk.aws_rolesanywhere" - } - } - }, - "aws-cdk-lib.aws_route53": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53" - }, - "java": { - "package": "software.amazon.awscdk.services.route53" - }, - "python": { - "module": "aws_cdk.aws_route53" - } - } - }, - "aws-cdk-lib.aws_route53_patterns": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53.Patterns" - }, - "java": { - "package": "software.amazon.awscdk.services.route53.patterns" - }, - "python": { - "module": "aws_cdk.aws_route53_patterns" - } - } - }, - "aws-cdk-lib.aws_route53_targets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53.Targets" - }, - "java": { - "package": "software.amazon.awscdk.services.route53.targets" - }, - "python": { - "module": "aws_cdk.aws_route53_targets" - } - } - }, - "aws-cdk-lib.aws_route53profiles": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Route53Profiles" - }, - "java": { - "package": "software.amazon.awscdk.services.route53profiles" - }, - "python": { - "module": "aws_cdk.aws_route53profiles" - } - } - }, - "aws-cdk-lib.aws_route53recoverycontrol": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53RecoveryControl" - }, - "java": { - "package": "software.amazon.awscdk.services.route53recoverycontrol" - }, - "python": { - "module": "aws_cdk.aws_route53recoverycontrol" - } - } - }, - "aws-cdk-lib.aws_route53recoveryreadiness": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53RecoveryReadiness" - }, - "java": { - "package": "software.amazon.awscdk.services.route53recoveryreadiness" - }, - "python": { - "module": "aws_cdk.aws_route53recoveryreadiness" - } - } - }, - "aws-cdk-lib.aws_route53resolver": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Route53Resolver" - }, - "java": { - "package": "software.amazon.awscdk.services.route53resolver" - }, - "python": { - "module": "aws_cdk.aws_route53resolver" - } - } - }, - "aws-cdk-lib.aws_rum": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.RUM" - }, - "java": { - "package": "software.amazon.awscdk.services.rum" - }, - "python": { - "module": "aws_cdk.aws_rum" - } - } - }, - "aws-cdk-lib.aws_s3": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3" - }, - "java": { - "package": "software.amazon.awscdk.services.s3" - }, - "python": { - "module": "aws_cdk.aws_s3" - } - } - }, - "aws-cdk-lib.aws_s3_assets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3.Assets" - }, - "java": { - "package": "software.amazon.awscdk.services.s3.assets" - }, - "python": { - "module": "aws_cdk.aws_s3_assets" - } - } - }, - "aws-cdk-lib.aws_s3_deployment": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3.Deployment" - }, - "java": { - "package": "software.amazon.awscdk.services.s3.deployment" - }, - "python": { - "module": "aws_cdk.aws_s3_deployment" - } - } - }, - "aws-cdk-lib.aws_s3_notifications": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3.Notifications" - }, - "java": { - "package": "software.amazon.awscdk.services.s3.notifications" - }, - "python": { - "module": "aws_cdk.aws_s3_notifications" - } - } - }, - "aws-cdk-lib.aws_s3express": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.S3Express" - }, - "java": { - "package": "software.amazon.awscdk.services.s3express" - }, - "python": { - "module": "aws_cdk.aws_s3express" - } - } - }, - "aws-cdk-lib.aws_s3objectlambda": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3ObjectLambda" - }, - "java": { - "package": "software.amazon.awscdk.services.s3objectlambda" - }, - "python": { - "module": "aws_cdk.aws_s3objectlambda" - } - } - }, - "aws-cdk-lib.aws_s3outposts": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.S3Outposts" - }, - "java": { - "package": "software.amazon.awscdk.services.s3outposts" - }, - "python": { - "module": "aws_cdk.aws_s3outposts" - } - } - }, - "aws-cdk-lib.aws_s3tables": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.S3Tables" - }, - "java": { - "package": "software.amazon.awscdk.services.s3tables" - }, - "python": { - "module": "aws_cdk.aws_s3tables" - } - } - }, - "aws-cdk-lib.aws_sagemaker": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Sagemaker" - }, - "java": { - "package": "software.amazon.awscdk.services.sagemaker" - }, - "python": { - "module": "aws_cdk.aws_sagemaker" - } - } - }, - "aws-cdk-lib.aws_sam": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SAM" - }, - "java": { - "package": "software.amazon.awscdk.services.sam" - }, - "python": { - "module": "aws_cdk.aws_sam" - } - } - }, - "aws-cdk-lib.aws_scheduler": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Scheduler" - }, - "java": { - "package": "software.amazon.awscdk.services.scheduler" - }, - "python": { - "module": "aws_cdk.aws_scheduler" - } - } - }, - "aws-cdk-lib.aws_scheduler_targets": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Scheduler.Targets" - }, - "java": { - "package": "software.amazon.awscdk.services.scheduler.targets" - }, - "python": { - "module": "aws_cdk.aws_scheduler_targets" - } - } - }, - "aws-cdk-lib.aws_sdb": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SDB" - }, - "java": { - "package": "software.amazon.awscdk.services.sdb" - }, - "python": { - "module": "aws_cdk.aws_sdb" - } - } - }, - "aws-cdk-lib.aws_secretsmanager": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SecretsManager" - }, - "java": { - "package": "software.amazon.awscdk.services.secretsmanager" - }, - "python": { - "module": "aws_cdk.aws_secretsmanager" - } - } - }, - "aws-cdk-lib.aws_securityhub": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SecurityHub" - }, - "java": { - "package": "software.amazon.awscdk.services.securityhub" - }, - "python": { - "module": "aws_cdk.aws_securityhub" - } - } - }, - "aws-cdk-lib.aws_securitylake": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.SecurityLake" - }, - "java": { - "package": "software.amazon.awscdk.services.securitylake" - }, - "python": { - "module": "aws_cdk.aws_securitylake" - } - } - }, - "aws-cdk-lib.aws_servicecatalog": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Servicecatalog" - }, - "java": { - "package": "software.amazon.awscdk.services.servicecatalog" - }, - "python": { - "module": "aws_cdk.aws_servicecatalog" - } - } - }, - "aws-cdk-lib.aws_servicecatalogappregistry": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Servicecatalogappregistry" - }, - "java": { - "package": "software.amazon.awscdk.services.servicecatalogappregistry" - }, - "python": { - "module": "aws_cdk.aws_servicecatalogappregistry" - } - } - }, - "aws-cdk-lib.aws_servicediscovery": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.ServiceDiscovery" - }, - "java": { - "package": "software.amazon.awscdk.services.servicediscovery" - }, - "python": { - "module": "aws_cdk.aws_servicediscovery" - } - } - }, - "aws-cdk-lib.aws_ses": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SES" - }, - "java": { - "package": "software.amazon.awscdk.services.ses" - }, - "python": { - "module": "aws_cdk.aws_ses" - } - } - }, - "aws-cdk-lib.aws_ses_actions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SES.Actions" - }, - "java": { - "package": "software.amazon.awscdk.services.ses.actions" - }, - "python": { - "module": "aws_cdk.aws_ses_actions" - } - } - }, - "aws-cdk-lib.aws_shield": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.Shield" - }, - "java": { - "package": "software.amazon.awscdk.services.shield" - }, - "python": { - "module": "aws_cdk.aws_shield" - } - } - }, - "aws-cdk-lib.aws_signer": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Signer" - }, - "java": { - "package": "software.amazon.awscdk.services.signer" - }, - "python": { - "module": "aws_cdk.aws_signer" - } - } - }, - "aws-cdk-lib.aws_simspaceweaver": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SimSpaceWeaver" - }, - "java": { - "package": "software.amazon.awscdk.services.simspaceweaver" - }, - "python": { - "module": "aws_cdk.aws_simspaceweaver" - } - } - }, - "aws-cdk-lib.aws_sns": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SNS" - }, - "java": { - "package": "software.amazon.awscdk.services.sns" - }, - "python": { - "module": "aws_cdk.aws_sns" - } - } - }, - "aws-cdk-lib.aws_sns_subscriptions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SNS.Subscriptions" - }, - "java": { - "package": "software.amazon.awscdk.services.sns.subscriptions" - }, - "python": { - "module": "aws_cdk.aws_sns_subscriptions" - } - } - }, - "aws-cdk-lib.aws_sqs": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SQS" - }, - "java": { - "package": "software.amazon.awscdk.services.sqs" - }, - "python": { - "module": "aws_cdk.aws_sqs" - } - } - }, - "aws-cdk-lib.aws_ssm": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SSM" - }, - "java": { - "package": "software.amazon.awscdk.services.ssm" - }, - "python": { - "module": "aws_cdk.aws_ssm" - } - } - }, - "aws-cdk-lib.aws_ssmcontacts": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SSMContacts" - }, - "java": { - "package": "software.amazon.awscdk.services.ssmcontacts" - }, - "python": { - "module": "aws_cdk.aws_ssmcontacts" - } - } - }, - "aws-cdk-lib.aws_ssmincidents": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SSMIncidents" - }, - "java": { - "package": "software.amazon.awscdk.services.ssmincidents" - }, - "python": { - "module": "aws_cdk.aws_ssmincidents" - } - } - }, - "aws-cdk-lib.aws_ssmquicksetup": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.SSMQuickSetup" - }, - "java": { - "package": "software.amazon.awscdk.services.ssmquicksetup" - }, - "python": { - "module": "aws_cdk.aws_ssmquicksetup" - } - } - }, - "aws-cdk-lib.aws_sso": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SSO" - }, - "java": { - "package": "software.amazon.awscdk.services.sso" - }, - "python": { - "module": "aws_cdk.aws_sso" - } - } - }, - "aws-cdk-lib.aws_stepfunctions": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.StepFunctions" - }, - "java": { - "package": "software.amazon.awscdk.services.stepfunctions" - }, - "python": { - "module": "aws_cdk.aws_stepfunctions" - } - } - }, - "aws-cdk-lib.aws_stepfunctions_tasks": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.StepFunctions.Tasks" - }, - "java": { - "package": "software.amazon.awscdk.services.stepfunctions.tasks" - }, - "python": { - "module": "aws_cdk.aws_stepfunctions_tasks" - } - } - }, - "aws-cdk-lib.aws_supportapp": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SupportApp" - }, - "java": { - "package": "software.amazon.awscdk.services.supportapp" - }, - "python": { - "module": "aws_cdk.aws_supportapp" - } - } - }, - "aws-cdk-lib.aws_synthetics": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Synthetics" - }, - "java": { - "package": "software.amazon.awscdk.services.synthetics" - }, - "python": { - "module": "aws_cdk.aws_synthetics" - } - } - }, - "aws-cdk-lib.aws_systemsmanagersap": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.SystemsManagerSAP" - }, - "java": { - "package": "software.amazon.awscdk.services.systemsmanagersap" - }, - "python": { - "module": "aws_cdk.aws_systemsmanagersap" - } - } - }, - "aws-cdk-lib.aws_timestream": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Timestream" - }, - "java": { - "package": "software.amazon.awscdk.services.timestream" - }, - "python": { - "module": "aws_cdk.aws_timestream" - } - } - }, - "aws-cdk-lib.aws_transfer": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Transfer" - }, - "java": { - "package": "software.amazon.awscdk.services.transfer" - }, - "python": { - "module": "aws_cdk.aws_transfer" - } - } - }, - "aws-cdk-lib.aws_verifiedpermissions": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.VerifiedPermissions" - }, - "java": { - "package": "software.amazon.awscdk.services.verifiedpermissions" - }, - "python": { - "module": "aws_cdk.aws_verifiedpermissions" - } - } - }, - "aws-cdk-lib.aws_voiceid": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.VoiceID" - }, - "java": { - "package": "software.amazon.awscdk.services.voiceid" - }, - "python": { - "module": "aws_cdk.aws_voiceid" - } - } - }, - "aws-cdk-lib.aws_vpclattice": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.VpcLattice" - }, - "java": { - "package": "software.amazon.awscdk.services.vpclattice" - }, - "python": { - "module": "aws_cdk.aws_vpclattice" - } - } - }, - "aws-cdk-lib.aws_waf": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.WAF" - }, - "java": { - "package": "software.amazon.awscdk.services.waf" - }, - "python": { - "module": "aws_cdk.aws_waf" - } - } - }, - "aws-cdk-lib.aws_wafregional": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.WAFRegional" - }, - "java": { - "package": "software.amazon.awscdk.services.waf.regional" - }, - "python": { - "module": "aws_cdk.aws_wafregional" - } - } - }, - "aws-cdk-lib.aws_wafv2": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.WAFv2" - }, - "java": { - "package": "software.amazon.awscdk.services.wafv2" - }, - "python": { - "module": "aws_cdk.aws_wafv2" - } - } - }, - "aws-cdk-lib.aws_wisdom": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Wisdom" - }, - "java": { - "package": "software.amazon.awscdk.services.wisdom" - }, - "python": { - "module": "aws_cdk.aws_wisdom" - } - } - }, - "aws-cdk-lib.aws_workspaces": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.WorkSpaces" - }, - "java": { - "package": "software.amazon.awscdk.services.workspaces" - }, - "python": { - "module": "aws_cdk.aws_workspaces" - } - } - }, - "aws-cdk-lib.aws_workspacesthinclient": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.WorkSpacesThinClient" - }, - "java": { - "package": "software.amazon.awscdk.services.workspacesthinclient" - }, - "python": { - "module": "aws_cdk.aws_workspacesthinclient" - } - } - }, - "aws-cdk-lib.aws_workspacesweb": { - "targets": { - "dotnet": { - "package": "Amazon.CDK.AWS.WorkSpacesWeb" - }, - "java": { - "package": "software.amazon.awscdk.services.workspacesweb" - }, - "python": { - "module": "aws_cdk.aws_workspacesweb" - } - } - }, - "aws-cdk-lib.aws_xray": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.XRay" - }, - "java": { - "package": "software.amazon.awscdk.services.xray" - }, - "python": { - "module": "aws_cdk.aws_xray" - } - } - }, - "aws-cdk-lib.cloud_assembly_schema": {}, - "aws-cdk-lib.cloudformation_include": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.CloudFormation.Include" - }, - "java": { - "package": "software.amazon.awscdk.cloudformation.include" - }, - "python": { - "module": "aws_cdk.cloudformation_include" - } - } - }, - "aws-cdk-lib.custom_resources": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.CustomResources" - }, - "java": { - "package": "software.amazon.awscdk.customresources" - }, - "python": { - "module": "aws_cdk.custom_resources" - } - } - }, - "aws-cdk-lib.cx_api": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.CXAPI" - }, - "java": { - "package": "software.amazon.awscdk.cxapi" - }, - "python": { - "module": "aws_cdk.cx_api" - } - } - }, - "aws-cdk-lib.lambda_layer_awscli": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.LambdaLayer.AwsCli" - }, - "java": { - "package": "software.amazon.awscdk.lambdalayer.awscli" - }, - "python": { - "module": "aws_cdk.lambda_layer_awscli" - } - } - }, - "aws-cdk-lib.lambda_layer_node_proxy_agent": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.LambdaLayer.NodeProxyAgent" - }, - "java": { - "package": "software.amazon.awscdk.lambda.layer.node.proxy.agent" - }, - "python": { - "module": "aws_cdk.lambda_layer_node_proxy_agent" - } - } - }, - "aws-cdk-lib.pipelines": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Pipelines" - }, - "java": { - "package": "software.amazon.awscdk.pipelines" - }, - "python": { - "module": "aws_cdk.pipelines" - } - } - }, - "aws-cdk-lib.region_info": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.RegionInfo" - }, - "java": { - "package": "software.amazon.awscdk.regioninfo" - }, - "python": { - "module": "aws_cdk.region_info" - } - } - }, - "aws-cdk-lib.triggers": { - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.Triggers" - }, - "java": { - "package": "software.amazon.awscdk.triggers" - }, - "python": { - "module": "aws_cdk.triggers" - } - } - } - }, - "targets": { - "dotnet": { - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", - "namespace": "Amazon.CDK", - "packageId": "Amazon.CDK.Lib" - }, - "go": { - "moduleName": "github.com/aws/aws-cdk-go", - "packageName": "awscdk" - }, - "java": { - "maven": { - "artifactId": "aws-cdk-lib", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk" - }, - "js": { - "npm": "aws-cdk-lib" - }, - "python": { - "distName": "aws-cdk-lib", - "module": "aws_cdk" - } - } - }, - "constructs": { - "targets": { - "dotnet": { - "namespace": "Constructs", - "packageId": "Constructs" - }, - "go": { - "moduleName": "github.com/aws/constructs-go" - }, - "java": { - "maven": { - "artifactId": "constructs", - "groupId": "software.constructs" - }, - "package": "software.constructs" - }, - "js": { - "npm": "constructs" - }, - "python": { - "distName": "constructs", - "module": "constructs" - } - } - } - }, - "description": "The CDK Construct Library for Amazon Bedrock", - "docs": { - "stability": "experimental" - }, - "homepage": "https://github.com/aws/aws-cdk", - "jsiiVersion": "5.7.10 (build 5114b23)", - "keywords": [ - "aws", - "cdk", - "constructs", - "bedrock" - ], - "license": "Apache-2.0", - "metadata": { - "jsii": { - "compiledWithDeprecationWarnings": true, - "pacmak": { - "hasDefaultInterfaces": true - }, - "rosetta": { - "strict": true - } - } - }, - "name": "@aws-cdk/aws-bedrock-alpha", - "readme": { - "markdown": "# Amazon Bedrock Construct Library\n\n\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n\n\n| **Language** | **Package** |\n| :--------------------------------------------------------------------------------------------- | --------------------------------------- |\n| ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) TypeScript | `@aws-cdk/aws-bedrock-alpha` |\n\n[Amazon Bedrock](https://aws.amazon.com/bedrock/) is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI.\n\nThis construct library facilitates the deployment of Bedrock Agents, enabling you to create sophisticated AI applications that can interact with your systems and data sources.\n\n## Table of contents\n\n- [Agents](#agents)\n - [Create an Agent](#create-an-agent)\n - [Action groups](#action-groups)\n - [Prepare the Agent](#prepare-the-agent)\n - [Prompt Override Configuration](#prompt-override-configuration)\n - [Memory Configuration](#memory-configuration)\n - [Agent Collaboration](#agent-collaboration)\n - [Custom Orchestration](#custom-orchestration)\n - [Agent Alias](#agent-alias)\n\n## Agents\n\nAmazon Bedrock Agents allow generative AI applications to automate complex, multistep tasks by seamlessly integrating with your company's systems, APIs, and data sources. It uses the reasoning of foundation models (FMs), APIs, and data to break down user requests, gather relevant information, and efficiently complete tasks.\n\n### Create an Agent\n\nBuilding an agent is straightforward and fast.\nThe following example creates an Agent with a simple instruction and default prompts:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n```\n\n### Agent Properties\n\nThe Bedrock Agent class supports the following properties.\n\n| Name | Type | Required | Description |\n|---|---|---|---|\n| name | string | No | The name of the agent. Defaults to a name generated by CDK |\n| instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters |\n| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent |\n| existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role |\n| shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false |\n| idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour |\n| kmsKey | kms.IKey | No | The KMS key of the agent if custom encryption is configured. Defaults to AWS managed key |\n| description | string | No | A description of the agent. Defaults to no description |\n| actionGroups | AgentActionGroup[] | No | The Action Groups associated with the agent |\n| promptOverrideConfiguration | PromptOverrideConfiguration | No | Overrides some prompt templates in different parts of an agent sequence configuration |\n| userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false |\n| codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false |\n| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true |\n\n### Action Groups\n\nAn action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them.\n\nExample:\n\n```ts fixture=default\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nagent.addActionGroup(actionGroup);\n```\n\nIf you chose to load your schema file from S3, the construct will provide the necessary permissions to your agent's execution role to access the schema file from the specific bucket. Similar to performing the operation through the console, the agent execution role will get a permission like:\n\n```json\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"AmazonBedrockAgentS3PolicyProd\",\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::/\"\n ],\n \"Condition\": {\n \"StringEquals\": {\n \"aws:ResourceAccount\": \"ACCOUNT_NUMBER\"\n }\n }\n }\n ]\n}\n```\n\n```ts fixture=default\n// create a bucket containing the input schema\nconst schemaBucket = new s3.Bucket(this, 'SchemaBucket', {\n enforceSSL: true,\n versioned: true,\n publicReadAccess: false,\n blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,\n encryption: s3.BucketEncryption.S3_MANAGED,\n removalPolicy: RemovalPolicy.DESTROY,\n autoDeleteObjects: true,\n});\n\n// deploy the local schema file to S3\nconst deployement = new aws_s3_deployment.BucketDeployment(this, 'DeployWebsite', {\n sources: [aws_s3_deployment.Source.asset(path.join(__dirname, '../inputschema'))],\n destinationBucket: schemaBucket,\n destinationKeyPrefix: 'inputschema',\n});\n\n// create the agent\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n userInputEnabled: true,\n shouldPrepareAgent:true\n});\n\n// create a lambda function\nconst actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', {\n runtime: lambda.Runtime.PYTHON_3_12,\n handler: 'index.handler',\n code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')),\n});\n\n// create an action group and read the schema file from S3\nconst actionGroup = new bedrock.AgentActionGroup({\n name: 'query-library',\n description: 'Use these functions to get information about the books in the library.',\n executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction),\n enabled: true,\n apiSchema: bedrock.ApiSchema.fromS3File(schemaBucket, 'inputschema/action-group.yaml'),\n});\n\n// add the action group to the agent\nagent.addActionGroup(actionGroup);\n\n// add dependency for the agent on the s3 deployment\nagent.node.addDependency(deployement);\n```\n\n### Prepare the Agent\n\nThe `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false.\n\nCreating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**.\n\n### Prompt Override Configuration\n\nBedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured:\n\n- PRE_PROCESSING\n- ORCHESTRATION\n- POST_PROCESSING\n- ROUTING_CLASSIFIER\n- MEMORY_SUMMARIZATION\n- KNOWLEDGE_BASE_RESPONSE_GENERATION\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n stepEnabled: true,\n customPromptTemplate: 'Your custom prompt template here',\n inferenceConfig: {\n temperature: 0.0,\n topP: 1,\n topK: 250,\n maximumLength: 1,\n stopSequences: [\"\\n\\nHuman:\"],\n },\n }\n ])\n});\n```\n\nYou can also use a custom Lambda parser to process the model's output:\n\n```ts fixture=default\nconst parserFunction = new lambda.Function(this, 'ParserFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda'),\n});\n\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n instruction: 'You are a helpful assistant.',\n promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({\n parser: parserFunction,\n steps: [\n {\n stepType: bedrock.AgentStepType.PRE_PROCESSING,\n useCustomParser: true,\n customPromptTemplate: 'Your custom prompt template here',\n }\n ]\n })\n});\n```\n\n### Memory Configuration\n\nAgents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'MyAgent', {\n agentName: 'MyAgent',\n instruction: 'Your instruction here',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n memory: Memory.sessionSummary({\n maxRecentSessions: 10, // Keep the last 10 session summaries\n memoryDuration: Duration.days(20), // Retain summaries for 20 days\n }),\n});\n```\n\n### Agent Collaboration\n\nAgent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries.\n\nExample:\n\n```ts fixture=default\n// Create a specialized agent\nconst customerSupportAgent = new bedrock.Agent(this, 'CustomerSupportAgent', {\n instruction: 'You specialize in answering customer support questions.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n});\n\n// Create an agent alias\nconst customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias', {\n agent: customerSupportAgent,\n agentAliasName: 'production',\n});\n\n// Create a main agent that collaborates with the specialized agent\nconst mainAgent = new bedrock.Agent(this, 'MainAgent', {\n instruction: 'You route specialized questions to other agents.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR,\n agentCollaborators: [\n new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', {\n agentAlias: customerSupportAlias,\n collaborationInstruction: 'Route customer support questions to this agent.',\n collaboratorName: 'CustomerSupport',\n relayConversationHistory: true,\n }),\n ],\n});\n```\n\n### Custom Orchestration\n\nCustom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups.\n\nExample:\n\n```ts fixture=default\nconst orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', {\n runtime: lambda.Runtime.PYTHON_3_10,\n handler: 'index.handler',\n code: lambda.Code.fromAsset('lambda/orchestration'),\n});\n\nconst agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', {\n instruction: 'You are a helpful assistant with custom orchestration logic.',\n foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1,\n orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION,\n customOrchestration: {\n executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction),\n },\n});\n```\n\n### Agent Alias\n\nAfter you have sufficiently iterated on your working draft and are satisfied with the behavior of your agent, you can set it up for deployment and integration into your application by creating aliases.\n\nTo deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias.\n\nBy default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version.\n\nExample:\n\n```ts fixture=default\nconst agent = new bedrock.Agent(this, 'Agent', {\n foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0,\n instruction: 'You are a helpful and friendly agent that answers questions about literature.',\n});\n\nconst agentAlias = new bedrock.AgentAlias(this, 'myalias', {\n agentAliasName: 'production',\n agent: agent,\n agentVersion: '1', // optional\n description: 'Production version of my agent'\n});\n```\n" - }, - "repository": { - "directory": "packages/@aws-cdk/aws-bedrock-alpha", - "type": "git", - "url": "https://github.com/aws/aws-cdk.git" - }, - "schema": "jsii/0.10.0", - "targets": { - "dotnet": { - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png", - "namespace": "Amazon.CDK.Aws.Bedrock.Alpha", - "packageId": "Amazon.CDK.Aws.Bedrock.Alpha" - }, - "go": { - "moduleName": "github.com/aws/aws-cdk-go", - "packageName": "awsbedrockalpha" - }, - "java": { - "maven": { - "artifactId": "bedrock-alpha", - "groupId": "software.amazon.awscdk" - }, - "package": "software.amazon.awscdk.services.bedrock.alpha" - }, - "js": { - "npm": "@aws-cdk/aws-bedrock-alpha" - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 2" - ], - "distName": "aws-cdk.aws-bedrock-alpha", - "module": "aws_cdk.aws_bedrock_alpha" - } - }, - "types": { - "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "Valid executors are:\n- Lambda function\n- Return Control", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/action-handle.html", - "stability": "experimental", - "summary": "Defines how fulfillment of the action group is handled after the necessary information has been elicited from the user." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor", - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/api-executor.ts", - "line": 28 - }, - "methods": [ - { - "docs": { - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html", - "stability": "experimental", - "summary": "Defines an action group with a Lambda function containing the business logic." - }, - "locationInModule": { - "filename": "bedrock/agents/api-executor.ts", - "line": 41 - }, - "name": "fromlambdaFunction", - "parameters": [ - { - "docs": { - "summary": "- Lambda function to be called by the action group." - }, - "name": "lambdaFunction", - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" - } - }, - "static": true - } - ], - "name": "ActionGroupExecutor", - "properties": [ - { - "const": true, - "docs": { - "remarks": "The information and parameters can be sent to your own systems to yield results.", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-returncontrol.html", - "stability": "experimental", - "summary": "Returns the action group invocation results directly in the InvokeAgent response." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/api-executor.ts", - "line": 34 - }, - "name": "RETURN_CONTROL", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" - } - }, - { - "docs": { - "remarks": "Currently only supports 'RETURN_CONTROL' which returns results directly in the InvokeAgent response.", - "stability": "experimental", - "summary": "The custom control type for the action group executor." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/api-executor.ts", - "line": 55 - }, - "name": "customControl", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "docs": { - "remarks": "Contains the business logic for handling the action group's invocation.", - "stability": "experimental", - "summary": "The Lambda function that will be called by the action group." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/api-executor.ts", - "line": 49 - }, - "name": "lambdaFunction", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - } - ], - "symbolId": "bedrock/agents/api-executor:ActionGroupExecutor" - }, - "@aws-cdk/aws-bedrock-alpha.Agent": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "docs": { - "custom": { - "cloudformationResource": "AWS::Bedrock::Agent" - }, - "stability": "experimental", - "summary": "Class to create (or import) an Agent with CDK." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.Agent", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 446 - }, - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentProps" - } - } - ] - }, - "interfaces": [ - "@aws-cdk/aws-bedrock-alpha.IAgent" - ], - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 295 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Static Method for importing an existing Bedrock Agent." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 299 - }, - "name": "fromAgentAttributes", - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "attrs", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAttributes" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Add an action group to the agent." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 610 - }, - "name": "addActionGroup", - "parameters": [ - { - "name": "actionGroup", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - } - } - ] - }, - { - "docs": { - "stability": "experimental", - "summary": "Add multiple action groups to the agent." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 647 - }, - "name": "addActionGroups", - "parameters": [ - { - "name": "actionGroups", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - }, - "variadic": true - } - ], - "variadic": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Add an agent collaborator to the agent." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 639 - }, - "name": "addAgentCollaborator", - "parameters": [ - { - "name": "agentCollaborator", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" - } - } - ] - }, - { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 761 - }, - "name": "generatePhysicalName", - "overrides": "aws-cdk-lib.Resource", - "protected": true, - "returns": { - "type": { - "primitive": "string" - } - } - } - ], - "name": "Agent", - "properties": [ - { - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The ARN of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 325 - }, - "name": "agentArn", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The unique identifier for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 320 - }, - "name": "agentId", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The version of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 330 - }, - "name": "agentVersion", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether the agent can generate, run, and troubleshoot code when trying to complete a task." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 380 - }, - "name": "codeInterpreterEnabled", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether the resource will be deleted even if it's in use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 384 - }, - "name": "forceDelete", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The foundation model used for orchestration by the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 366 - }, - "name": "foundationModel", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The principal to grant permissions to." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 346 - }, - "name": "grantPrincipal", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IPrincipal" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "How long sessions should be kept open for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 362 - }, - "name": "idleSessionTTL", - "type": { - "fqn": "aws-cdk-lib.Duration" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The name of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 353 - }, - "name": "name", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The IAM role associated to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 334 - }, - "name": "role", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IRole" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether the agent will automatically update the DRAFT version of the agent after making changes to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 358 - }, - "name": "shouldPrepareAgent", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "remarks": "This corresponds to the test alias\n(`TSTALIASID`) that points to the working (`DRAFT`) version.", - "stability": "experimental", - "summary": "The default test alias for this agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 371 - }, - "name": "testAlias", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether the agent can prompt additional information from the user when it does not have enough information to respond to an utterance." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 376 - }, - "name": "userInputEnabled", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "Agent collaboration type." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 389 - }, - "name": "agentCollaboration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType" - } - }, - { - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "Agent collaborators." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 394 - }, - "name": "agentCollaborators", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" - }, - "kind": "array" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Custom orchestration configuration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 398 - }, - "name": "customOrchestration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The description for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 409 - }, - "name": "description", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "docs": { - "remarks": "This determines how the agent will perform his task.", - "stability": "experimental", - "summary": "The instruction used by the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 413 - }, - "name": "instruction", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Optional KMS encryption key associated with this agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 338 - }, - "name": "kmsKey", - "optional": true, - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "fqn": "aws-cdk-lib.aws_kms.IKey" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "When this agent was last updated." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 342 - }, - "name": "lastUpdated", - "optional": true, - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The memory configuration for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 423 - }, - "name": "memory", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.Memory" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The type of orchestration for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 402 - }, - "name": "orchestrationType", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType" - } - }, - { - "docs": { - "default": "- No overrides are provided.", - "stability": "experimental", - "summary": "Overrides some prompt templates in different parts of an agent sequence configuration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 419 - }, - "name": "promptOverrideConfiguration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The action groups associated with the agent." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 430 - }, - "name": "actionGroups", - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - }, - "kind": "array" - } - } - } - ], - "symbolId": "bedrock/agents/agent:Agent" - }, - "@aws-cdk/aws-bedrock-alpha.AgentActionGroup": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "**************************************************************************** DEF - Action Group Class ***************************************************************************." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 196 - }, - "parameters": [ - { - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 130 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Defines an action group that allows your agent to request the user for additional information when trying to complete a task." - }, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 152 - }, - "name": "codeInterpreter", - "parameters": [ - { - "docs": { - "summary": "Specifies whether the action group is available for the agent." - }, - "name": "enabled", - "type": { - "primitive": "boolean" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Defines an action group that allows your agent to request the user for additional information when trying to complete a task." - }, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 139 - }, - "name": "userInput", - "parameters": [ - { - "docs": { - "summary": "Specifies whether the action group is available for the agent." - }, - "name": "enabled", - "type": { - "primitive": "boolean" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - } - }, - "static": true - } - ], - "name": "AgentActionGroup", - "properties": [ - { - "docs": { - "stability": "experimental", - "summary": "Whether this action group is available for the agent to invoke or not." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 174 - }, - "name": "enabled", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The name of the action group." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 166 - }, - "name": "name", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The api schema for this action group (if defined)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 178 - }, - "name": "apiSchema", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "A description of the action group." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 170 - }, - "name": "description", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The action group executor for this action group (if defined)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 182 - }, - "name": "executor", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether to delete the resource even if it's in use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 186 - }, - "name": "forceDelete", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The function schema for this action group (if defined)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 190 - }, - "name": "functionSchema", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.FunctionSchemaProperty" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The AWS Defined signature (if defined)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 194 - }, - "name": "parentActionGroupSignature", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" - } - } - ], - "symbolId": "bedrock/agents/action-group:AgentActionGroup" - }, - "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "**************************************************************************** PROPS - Action Group Class ***************************************************************************." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroupProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 66 - }, - "name": "AgentActionGroupProps", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The name of the action group." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 70 - }, - "name": "name", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No API Schema is provided", - "stability": "experimental", - "summary": "The API Schema defining the functions available to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 84 - }, - "name": "apiSchema", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No description is provided", - "stability": "experimental", - "summary": "A description of the action group." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 77 - }, - "name": "description", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "true - The action group is enabled", - "stability": "experimental", - "summary": "Specifies whether the action group is available for the agent to invoke or not when sending an InvokeAgent request." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 99 - }, - "name": "enabled", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No executor is provided", - "stability": "experimental", - "summary": "The action group executor that implements the API functions." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 91 - }, - "name": "executor", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ActionGroupExecutor" - } - }, - { - "abstract": true, - "docs": { - "default": "false - The resource will not be deleted if it's in use", - "stability": "experimental", - "summary": "Specifies whether to delete the resource even if it's in use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 106 - }, - "name": "forceDelete", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No function schema is provided", - "remarks": "NO L2 yet as this doesn't make much sense IMHO.", - "stability": "experimental", - "summary": "Defines functions that each define parameters that the agent needs to invoke from the user." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 114 - }, - "name": "functionSchema", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.FunctionSchemaProperty" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No parent action group signature is provided", - "remarks": "When this property is specified, you must leave the description, apiSchema,\nand actionGroupExecutor fields blank for this action group.", - "stability": "experimental", - "summary": "The AWS Defined signature for enabling certain capabilities in your agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 123 - }, - "name": "parentActionGroupSignature", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" - } - } - ], - "symbolId": "bedrock/agents/action-group:AgentActionGroupProps" - }, - "@aws-cdk/aws-bedrock-alpha.AgentAlias": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", - "docs": { - "custom": { - "cloudformationResource": "AWS::Bedrock::AgentAlias" - }, - "stability": "experimental", - "summary": "Class to create an Agent Alias with CDK." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAlias", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 238 - }, - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasProps" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 197 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Brings an Agent Alias from an existing one created outside of CDK." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 204 - }, - "name": "fromAttributes", - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "attrs", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" - } - }, - "static": true - } - ], - "name": "AgentAlias", - "properties": [ - { - "docs": { - "stability": "experimental", - "summary": "The underlying agent for this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 226 - }, - "name": "agent", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The ARN of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 228 - }, - "name": "aliasArn", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The unique identifier of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 227 - }, - "name": "aliasId", - "overrides": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "remarks": "This is either provided by the user or generated from a hash.", - "stability": "experimental", - "summary": "The name of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 233 - }, - "name": "aliasName", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent-alias:AgentAlias" - }, - "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Attributes needed to create an import." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasAttributes", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 170 - }, - "name": "AgentAliasAttributes", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The underlying agent for this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 183 - }, - "name": "agent", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The agent version for this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 187 - }, - "name": "agentVersion", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The Id of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 174 - }, - "name": "aliasId", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No alias name is provided", - "stability": "experimental", - "summary": "The name of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 179 - }, - "name": "aliasName", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent-alias:AgentAliasAttributes" - }, - "@aws-cdk/aws-bedrock-alpha.AgentAliasBase": { - "abstract": true, - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "aws-cdk-lib.Resource", - "docs": { - "remarks": "Contains methods and attributes valid for Agents either created with CDK or imported.", - "stability": "experimental", - "summary": "Abstract base class for an Agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasBase", - "initializer": { - "docs": { - "stability": "stable" - }, - "locationInModule": { - "filename": "core/lib/resource.ts", - "line": 155 - }, - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.ResourceProps" - } - } - ] - }, - "interfaces": [ - "@aws-cdk/aws-bedrock-alpha.IAgentAlias" - ], - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 77 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Grant the given principal identity permissions to perform actions on this agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 85 - }, - "name": "grant", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - }, - { - "name": "actions", - "type": { - "primitive": "string" - }, - "variadic": true - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - }, - "variadic": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Grant the given identity permissions to get the agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 104 - }, - "name": "grantGet", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Grant the given identity permissions to invoke the agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 97 - }, - "name": "grantInvoke", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "docs": { - "remarks": "Requires that there exists at least one CloudTrail Trail in your account\nthat captures the event. This method will not create the Trail.", - "stability": "experimental", - "summary": "Define an EventBridge rule that triggers when something happens to this agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 117 - }, - "name": "onCloudTrailEvent", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "parameters": [ - { - "docs": { - "summary": "The id of the rule." - }, - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "summary": "Options for adding the rule." - }, - "name": "options", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_events.OnEventOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_events.Rule" - } - } - } - ], - "name": "AgentAliasBase", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The underlying agent for this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 80 - }, - "name": "agent", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The ARN of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 79 - }, - "name": "aliasArn", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The unique identifier of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 78 - }, - "name": "aliasId", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent-alias:AgentAliasBase" - }, - "@aws-cdk/aws-bedrock-alpha.AgentAliasProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Properties for creating a CDK-Managed Agent Alias." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAliasProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 139 - }, - "name": "AgentAliasProps", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The agent associated to this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 156 - }, - "name": "agent", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - { - "abstract": true, - "docs": { - "default": "- \"latest-{hash}\"", - "remarks": "This will be used as the physical name of the agent alias.", - "stability": "experimental", - "summary": "The name for the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 146 - }, - "name": "agentAliasName", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- Creates a new version of the agent.", - "stability": "experimental", - "summary": "The version of the agent to associate with the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 152 - }, - "name": "agentVersion", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No description is provided", - "stability": "experimental", - "summary": "Description for the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 161 - }, - "name": "description", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent-alias:AgentAliasProps" - }, - "@aws-cdk/aws-bedrock-alpha.AgentAttributes": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Attributes for specifying an imported Bedrock Agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentAttributes", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 258 - }, - "name": "AgentAttributes", - "properties": [ - { - "abstract": true, - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The ARN of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 263 - }, - "name": "agentArn", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The ARN of the IAM role associated to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 268 - }, - "name": "roleArn", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "'DRAFT'", - "remarks": "If no explicit versions have been created,\nleave this empty to use the DRAFT version. Otherwise, use the\nversion number (e.g. 1).", - "stability": "experimental", - "summary": "The agent version." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 286 - }, - "name": "agentVersion", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - An AWS managed key is used", - "stability": "experimental", - "summary": "Optional KMS encryption key associated with this agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 273 - }, - "name": "kmsKeyArn", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No last updated timestamp is provided", - "stability": "experimental", - "summary": "When this agent was last updated." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 279 - }, - "name": "lastUpdated", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent:AgentAttributes" - }, - "@aws-cdk/aws-bedrock-alpha.AgentBase": { - "abstract": true, - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "aws-cdk-lib.Resource", - "docs": { - "remarks": "Contains methods and attributes valid for Agents either created with CDK or imported.", - "stability": "experimental", - "summary": "Abstract base class for an Agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentBase", - "initializer": { - "docs": { - "stability": "stable" - }, - "locationInModule": { - "filename": "core/lib/resource.ts", - "line": 155 - }, - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.ResourceProps" - } - } - ] - }, - "interfaces": [ - "@aws-cdk/aws-bedrock-alpha.IAgent" - ], - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 84 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Grant invoke permissions on this agent to an IAM principal." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 97 - }, - "name": "grantInvoke", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Return the CloudWatch metric for agent count." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 117 - }, - "name": "metricCount", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "parameters": [ - { - "name": "props", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_cloudwatch.MetricOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_cloudwatch.Metric" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Defines a CloudWatch event rule triggered by agent events." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 105 - }, - "name": "onEvent", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "parameters": [ - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "options", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_events.OnEventOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_events.Rule" - } - } - } - ], - "name": "AgentBase", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The ARN of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 85 - }, - "name": "agentArn", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The ID of the Agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 86 - }, - "name": "agentId", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The version of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 94 - }, - "name": "agentVersion", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The principal to grant permissions to." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 95 - }, - "name": "grantPrincipal", - "overrides": "aws-cdk-lib.aws_iam.IGrantable", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IPrincipal" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The IAM role associated to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 87 - }, - "name": "role", - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IRole" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Optional KMS encryption key associated with this agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 88 - }, - "name": "kmsKey", - "optional": true, - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "type": { - "fqn": "aws-cdk-lib.aws_kms.IKey" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "When this agent was last updated." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 89 - }, - "name": "lastUpdated", - "optional": true, - "overrides": "@aws-cdk/aws-bedrock-alpha.IAgent", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent:AgentBase" - }, - "@aws-cdk/aws-bedrock-alpha.AgentCollaborator": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "constructs.Construct", - "docs": { - "stability": "experimental", - "summary": "**************************************************************************** DEF - Agent Collaborator Class ***************************************************************************." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 115 - }, - "parameters": [ - { - "name": "scope", - "type": { - "fqn": "constructs.Construct" - } - }, - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 88 - }, - "methods": [ - { - "docs": { - "returns": "The Grant object", - "stability": "experimental", - "summary": "Grants the specified principal permissions to get the agent alias and invoke the agent from this collaborator." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 170 - }, - "name": "grant", - "parameters": [ - { - "docs": { - "summary": "The principal to grant permissions to." - }, - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - } - ], - "name": "AgentCollaborator", - "properties": [ - { - "docs": { - "remarks": "This is the agent that will be called upon for collaboration.", - "stability": "experimental", - "summary": "The agent alias that this collaborator represents." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 96 - }, - "name": "agentAlias", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Instructions on how this agent should collaborate with the main agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 101 - }, - "name": "collaborationInstruction", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "A friendly name for the collaborator." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 106 - }, - "name": "collaboratorName", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "default": "- undefined (uses service default)", - "stability": "experimental", - "summary": "Whether to relay conversation history to this collaborator." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 113 - }, - "name": "relayConversationHistory", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "bedrock/agents/agent-collaborator:AgentCollaborator" - }, - "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "**************************************************************************** PROPS - Agent Collaborator Class ***************************************************************************." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 59 - }, - "name": "AgentCollaboratorProps", - "properties": [ - { - "abstract": true, - "docs": { - "remarks": "This cannot be the TSTALIASID (`agent.testAlias`).", - "stability": "experimental", - "summary": "Descriptor for the collaborating agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 64 - }, - "name": "agentAlias", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Instructions on how this agent should collaborate with the main agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 69 - }, - "name": "collaborationInstruction", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "A friendly name for the collaborator." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 74 - }, - "name": "collaboratorName", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- undefined (uses service default)", - "stability": "experimental", - "summary": "Whether to relay conversation history to this collaborator." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 81 - }, - "name": "relayConversationHistory", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "bedrock/agents/agent-collaborator:AgentCollaboratorProps" - }, - "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Enum for collaborator's relay conversation history types." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType", - "kind": "enum", - "locationInModule": { - "filename": "bedrock/agents/agent-collaborator.ts", - "line": 23 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "Supervisor agent." - }, - "name": "SUPERVISOR" - }, - { - "docs": { - "stability": "experimental", - "summary": "Disabling collaboration." - }, - "name": "DISABLED" - }, - { - "docs": { - "stability": "experimental", - "summary": "Supervisor router." - }, - "name": "SUPERVISOR_ROUTER" - } - ], - "name": "AgentCollaboratorType", - "symbolId": "bedrock/agents/agent-collaborator:AgentCollaboratorType" - }, - "@aws-cdk/aws-bedrock-alpha.AgentProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Properties for creating a CDK managed Bedrock Agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 135 - }, - "name": "AgentProps", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The foundation model used for orchestration by the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 151 - }, - "name": "foundationModel", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" - } - }, - { - "abstract": true, - "docs": { - "remarks": "This determines how the agent will perform his task.\nThis instruction must have a minimum of 40 characters.", - "stability": "experimental", - "summary": "The instruction used by the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 147 - }, - "name": "instruction", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- Only default action groups (UserInput and CodeInterpreter) are added", - "stability": "experimental", - "summary": "The Action Groups associated with the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 191 - }, - "name": "actionGroups", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentActionGroup" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- No collaboration (AgentCollaboratorType.DISABLED).", - "stability": "experimental", - "summary": "The collaboration type for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 232 - }, - "name": "agentCollaboration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaboratorType" - } - }, - { - "abstract": true, - "docs": { - "default": "- No collaborators.", - "stability": "experimental", - "summary": "Collaborators that this agent will work with." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 238 - }, - "name": "agentCollaborators", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentCollaborator" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- A name is generated by CDK.", - "remarks": "This will be used as the physical name of the agent.", - "stability": "experimental", - "summary": "The name of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 142 - }, - "name": "agentName", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Select whether the agent can generate, run, and troubleshoot code when trying to complete a task." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 211 - }, - "name": "codeInterpreterEnabled", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- Standard orchestration.", - "stability": "experimental", - "summary": "Details of custom orchestration for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 244 - }, - "name": "customOrchestration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration" - } - }, - { - "abstract": true, - "docs": { - "default": "- No description is provided.", - "stability": "experimental", - "summary": "A description of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 186 - }, - "name": "description", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- A new role is created for you.", - "remarks": "Ensure the role has a trust policy that allows the Bedrock service to assume the role.", - "stability": "experimental", - "summary": "The existing IAM Role for the agent to use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 158 - }, - "name": "existingRole", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_iam.IRole" - } - }, - { - "abstract": true, - "docs": { - "default": "- true", - "stability": "experimental", - "summary": "Whether to delete the resource even if it's in use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 217 - }, - "name": "forceDelete", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- 1 hour", - "remarks": "If no conversation occurs\nduring this time, the session expires and Amazon Bedrock deletes any data\nprovided before the timeout.", - "stability": "experimental", - "summary": "How long sessions should be kept open for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 174 - }, - "name": "idleSessionTTL", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.Duration" - } - }, - { - "abstract": true, - "docs": { - "default": "- An AWS managed key is used.", - "stability": "experimental", - "summary": "The KMS key of the agent if custom encryption is configured." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 180 - }, - "name": "kmsKey", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_kms.IKey" - } - }, - { - "abstract": true, - "docs": { - "default": "- No memory will be used. Agents will retain context from the current session only.", - "remarks": "This can be useful for maintaining continuity in multi-turn conversations and recalling user preferences\nor past interactions.", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html", - "stability": "experimental", - "summary": "The type and configuration of the memory to maintain context across multiple sessions and recall past interactions." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 226 - }, - "name": "memory", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.Memory" - } - }, - { - "abstract": true, - "docs": { - "default": "- STANDARD", - "stability": "experimental", - "summary": "The type of orchestration to use for the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 250 - }, - "name": "orchestrationType", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType" - } - }, - { - "abstract": true, - "docs": { - "default": "- No overrides are provided.", - "stability": "experimental", - "summary": "Overrides some prompt templates in different parts of an agent sequence configuration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 198 - }, - "name": "promptOverrideConfiguration", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "remarks": "The `DRAFT` version can be continually iterated\nupon during internal development.", - "stability": "experimental", - "summary": "Specifies whether to automatically update the `DRAFT` version of the agent after making changes to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 166 - }, - "name": "shouldPrepareAgent", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Select whether the agent can prompt additional information from the user when it does not have enough information to respond to an utterance." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 205 - }, - "name": "userInputEnabled", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "bedrock/agents/agent:AgentProps" - }, - "@aws-cdk/aws-bedrock-alpha.AgentStepType": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "The step in the agent sequence that this prompt configuration applies to." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentStepType", - "kind": "enum", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 25 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "Pre-processing step that prepares the user input for orchestration." - }, - "name": "PRE_PROCESSING" - }, - { - "docs": { - "stability": "experimental", - "summary": "Main orchestration step that determines the agent's actions." - }, - "name": "ORCHESTRATION" - }, - { - "docs": { - "stability": "experimental", - "summary": "Post-processing step that refines the agent's response." - }, - "name": "POST_PROCESSING" - }, - { - "docs": { - "stability": "experimental", - "summary": "Step that classifies and routes requests to appropriate collaborators." - }, - "name": "ROUTING_CLASSIFIER" - }, - { - "docs": { - "stability": "experimental", - "summary": "Step that summarizes conversation history for memory retention." - }, - "name": "MEMORY_SUMMARIZATION" - }, - { - "docs": { - "stability": "experimental", - "summary": "Step that generates responses using knowledge base content." - }, - "name": "KNOWLEDGE_BASE_RESPONSE_GENERATION" - } - ], - "name": "AgentStepType", - "symbolId": "bedrock/agents/prompt-override:AgentStepType" - }, - "@aws-cdk/aws-bedrock-alpha.ApiSchema": { - "abstract": true, - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Represents the concept of an API Schema for a Bedrock Agent Action Group." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.ApiSchema", - "initializer": { - "docs": { - "stability": "experimental", - "summary": "Constructor accessible only to extending classes." - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 68 - }, - "parameters": [ - { - "name": "s3File", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_s3.Location" - } - }, - { - "name": "inlineSchema", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "protected": true - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 24 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Creates an API Schema from an inline string." - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 37 - }, - "name": "fromInline", - "parameters": [ - { - "docs": { - "summary": "- the JSON or YAML payload defining the OpenAPI schema for the action group." - }, - "name": "schema", - "type": { - "primitive": "string" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Creates an API Schema from a local file." - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 29 - }, - "name": "fromLocalAsset", - "parameters": [ - { - "docs": { - "summary": "- the path to the local file containing the OpenAPI schema for the action group." - }, - "name": "path", - "type": { - "primitive": "string" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Creates an API Schema from an S3 File." - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 46 - }, - "name": "fromS3File", - "parameters": [ - { - "docs": { - "summary": "- the bucket containing the local file containing the OpenAPI schema for the action group." - }, - "name": "bucket", - "type": { - "fqn": "aws-cdk-lib.aws_s3.IBucket" - } - }, - { - "docs": { - "summary": "- object key in the bucket." - }, - "name": "objectKey", - "type": { - "primitive": "string" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.S3ApiSchema" - } - }, - "static": true - } - ], - "name": "ApiSchema", - "properties": [ - { - "docs": { - "remarks": "Can be in JSON or YAML format.", - "stability": "experimental", - "summary": "The inline OpenAPI schema definition as a string, if using an inline schema." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 63 - }, - "name": "inlineSchema", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "docs": { - "remarks": "Contains the bucket name and object key information.", - "stability": "experimental", - "summary": "The S3 location of the API schema file, if using an S3-based schema." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 57 - }, - "name": "s3File", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_s3.Location" - } - } - ], - "symbolId": "bedrock/agents/api-schema:ApiSchema" - }, - "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "If you need to use a model name that doesn't exist as a static member, you\ncan instantiate a `BedrockFoundationModel` object, e.g: `new BedrockFoundationModel('my-model')`.", - "stability": "experimental", - "summary": "Bedrock models." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 582 - }, - "parameters": [ - { - "name": "value", - "type": { - "primitive": "string" - } - }, - { - "name": "props", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" - } - } - ] - }, - "interfaces": [ - "@aws-cdk/aws-bedrock-alpha.IInvokable" - ], - "kind": "class", - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 113 - }, - "methods": [ - { - "docs": { - "returns": "A new BedrockFoundationModel instance", - "stability": "experimental", - "summary": "Creates a BedrockFoundationModel from a CDK FoundationModel." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 531 - }, - "name": "fromCdkFoundationModel", - "parameters": [ - { - "docs": { - "summary": "The foundation model." - }, - "name": "modelId", - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.FoundationModel" - } - }, - { - "docs": { - "summary": "Optional properties for the model." - }, - "name": "props", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - "static": true - }, - { - "docs": { - "returns": "A new BedrockFoundationModel instance", - "stability": "experimental", - "summary": "Creates a BedrockFoundationModel from a CDK FoundationModelIdentifier." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 518 - }, - "name": "fromCdkFoundationModelId", - "parameters": [ - { - "docs": { - "summary": "The foundation model identifier." - }, - "name": "modelId", - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.FoundationModelIdentifier" - } - }, - { - "docs": { - "summary": "Optional properties for the model." - }, - "name": "props", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Returns the ARN of the foundation model in the following format: `arn:${Partition}:bedrock:${Region}::foundation-model/${ResourceId}`." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 609 - }, - "name": "asArn", - "parameters": [ - { - "name": "construct", - "type": { - "fqn": "constructs.IConstruct" - } - } - ], - "returns": { - "type": { - "primitive": "string" - } - } - }, - { - "docs": { - "remarks": "This allows using the model with APIs that expect an IModel.", - "returns": "This foundation model as an IModel", - "stability": "experimental", - "summary": "Returns this foundation model as an IModel interface." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 621 - }, - "name": "asIModel", - "parameters": [ - { - "docs": { - "summary": "The scope in which to create any required resources." - }, - "name": "construct", - "type": { - "fqn": "constructs.IConstruct" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.IModel" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Gives the appropriate policies to invoke and use the Foundation Model in the stack region." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 630 - }, - "name": "grantInvoke", - "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Gives the appropriate policies to invoke and use the Foundation Model in all regions." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 642 - }, - "name": "grantInvokeAllRegions", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Returns a string representation of an object." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 601 - }, - "name": "toString", - "returns": { - "type": { - "primitive": "string" - } - } - } - ], - "name": "BedrockFoundationModel", - "properties": [ - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "AI21's Jamba 1.5 Large model, optimized for general text generation and understanding. Suitable for complex language tasks with high accuracy requirements." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 121 - }, - "name": "AI21_JAMBA_1_5_LARGE_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "AI21's Jamba 1.5 Mini model, a lightweight version optimized for faster inference. Suitable for simpler language tasks where speed is prioritized." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 132 - }, - "name": "AI21_JAMBA_1_5_MINI_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Optimized for understanding and executing natural language instructions.", - "stability": "experimental", - "summary": "AI21's Jamba Instruct model, specifically designed for instruction-following tasks." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 143 - }, - "name": "AI21_JAMBA_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Optimized for Bedrock Agents with cross-region support.", - "stability": "experimental", - "summary": "Amazon's Nova Lite model, balancing performance and resource usage." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 191 - }, - "name": "AMAZON_NOVA_LITE_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides fast inference with cross-region support.", - "stability": "experimental", - "summary": "Amazon's Nova Micro model, a lightweight model optimized for Bedrock Agents." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 178 - }, - "name": "AMAZON_NOVA_MICRO_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides highest quality outputs with cross-region support and agent optimization.", - "stability": "experimental", - "summary": "Amazon's Nova Premier model, their most advanced Nova model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 211 - }, - "name": "AMAZON_NOVA_PREMIER_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides high-quality outputs with cross-region support and agent optimization.", - "stability": "experimental", - "summary": "Amazon's Nova Pro model, offering advanced capabilities for complex tasks." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 201 - }, - "name": "AMAZON_NOVA_PRO_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides higher quality outputs compared to Express version.", - "stability": "experimental", - "summary": "Amazon's Titan Premier model, offering enhanced capabilities for complex text generation." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 167 - }, - "name": "AMAZON_TITAN_PREMIER_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Suitable for real-time applications requiring quick responses.", - "stability": "experimental", - "summary": "Amazon's Titan Text Express model, optimized for fast text generation." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 156 - }, - "name": "AMAZON_TITAN_TEXT_EXPRESS_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude 3.5 Haiku model, a lightweight version optimized for speed. Ideal for applications requiring quick responses with good accuracy." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 302 - }, - "name": "ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude 3.5 Sonnet V1 model, with cross-region support. Balances performance and resource usage for general-purpose tasks." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 293 - }, - "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude 3.5 Sonnet V2 model, optimized for Bedrock Agents. Offers improved performance and reliability over V1." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 284 - }, - "name": "ANTHROPIC_CLAUDE_3_5_SONNET_V2_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude 3.7 Sonnet model, the latest version with enhanced capabilities. Provides advanced natural language understanding and generation with cross-region support." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 275 - }, - "name": "ANTHROPIC_CLAUDE_3_7_SONNET_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Suitable for applications requiring quick responses with good quality.", - "stability": "experimental", - "summary": "Anthropic's Claude Haiku model, optimized for fast inference." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 329 - }, - "name": "ANTHROPIC_CLAUDE_HAIKU_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude Instant V1.2 model, a legacy fast-inference version. Optimized for quick responses while maintaining good output quality." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 361 - }, - "name": "ANTHROPIC_CLAUDE_INSTANT_V1_2", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides highest quality outputs with enhanced reasoning capabilities.", - "stability": "experimental", - "summary": "Anthropic's Claude Opus model, their most advanced model for complex tasks." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 311 - }, - "name": "ANTHROPIC_CLAUDE_OPUS_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides reliable performance for general language tasks.", - "stability": "experimental", - "summary": "Anthropic's Claude Sonnet model, a legacy version with agent optimization." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 320 - }, - "name": "ANTHROPIC_CLAUDE_SONNET_V1_0", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Suitable for a wide range of language understanding and generation tasks.", - "stability": "experimental", - "summary": "Anthropic's Claude V2 model, a legacy version of their general-purpose model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 351 - }, - "name": "ANTHROPIC_CLAUDE_V2", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Anthropic's Claude V2.1 model, a legacy version with enhanced capabilities. Provides reliable performance for a wide range of language tasks." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 338 - }, - "name": "ANTHROPIC_CLAUDE_V2_1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Generates 1024-dimensional vectors with support for both floating-point and binary types.", - "stability": "experimental", - "summary": "Cohere's English embedding model, optimized for English text." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 377 - }, - "name": "COHERE_EMBED_ENGLISH_V3", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Generates 1024-dimensional vectors with support for both floating-point and binary types.", - "stability": "experimental", - "summary": "Cohere's multilingual embedding model, supporting multiple languages." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 390 - }, - "name": "COHERE_EMBED_MULTILINGUAL_V3", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Supports cross-region deployment and Bedrock Agents integration.", - "stability": "experimental", - "summary": "Deepseek's R1 model, offering advanced language capabilities." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 405 - }, - "name": "DEEPSEEK_R1_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides high-quality outputs for complex language tasks.", - "stability": "experimental", - "summary": "Meta's Llama 3 70B instruction-tuned model, their largest model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 432 - }, - "name": "META_LLAMA_3_1_70B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Meta's Llama 3 1.8B instruction-tuned model, a lightweight version. Suitable for tasks requiring quick responses with good accuracy." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 420 - }, - "name": "META_LLAMA_3_1_8B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Balances performance and resource usage for general tasks.", - "stability": "experimental", - "summary": "Meta's Llama 3 11B instruction-tuned model, a mid-sized version." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 444 - }, - "name": "META_LLAMA_3_2_11B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Ideal for resource-constrained environments.", - "stability": "experimental", - "summary": "Meta's Llama 3 1B instruction-tuned model, their most compact version." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 468 - }, - "name": "META_LLAMA_3_2_1B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Suitable for applications requiring fast inference.", - "stability": "experimental", - "summary": "Meta's Llama 3 3B instruction-tuned model, optimized for efficiency." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 456 - }, - "name": "META_LLAMA_3_2_3B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Meta's Llama 3.3 70B instruction-tuned model, latest large version. Offers enhanced capabilities with cross-region support." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 480 - }, - "name": "META_LLAMA_3_3_70B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides state-of-the-art performance for complex language tasks with cross-region support.", - "stability": "experimental", - "summary": "Meta's Llama 4 Maverick 70B instruction-tuned model, their most advanced model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 492 - }, - "name": "META_LLAMA_4_MAVERICK_70B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Balances performance and resource usage with cross-region support.", - "stability": "experimental", - "summary": "Meta's Llama 4 Scout 17B instruction-tuned model, a mid-sized efficient model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 504 - }, - "name": "META_LLAMA_4_SCOUT_17B_INSTRUCT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Generates 1536-dimensional floating-point vector embeddings.", - "stability": "experimental", - "summary": "Amazon's Titan Embed Text V1 model for text embeddings." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 221 - }, - "name": "TITAN_EMBED_TEXT_V1", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Supports both floating-point and binary vector embeddings.", - "stability": "experimental", - "summary": "Amazon's Titan Embed Text V2 model with 1024-dimensional vectors." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 234 - }, - "name": "TITAN_EMBED_TEXT_V2_1024", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Optimized for applications requiring compact vector representations.", - "stability": "experimental", - "summary": "Amazon's Titan Embed Text V2 model with 256-dimensional vectors." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 260 - }, - "name": "TITAN_EMBED_TEXT_V2_256", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "const": true, - "docs": { - "remarks": "Provides a balance between precision and resource usage.", - "stability": "experimental", - "summary": "Amazon's Titan Embed Text V2 model with 512-dimensional vectors." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 247 - }, - "name": "TITAN_EMBED_TEXT_V2_512", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModel" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The ARN used for invoking the model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 554 - }, - "name": "invokableArn", - "overrides": "@aws-cdk/aws-bedrock-alpha.IInvokable", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The ARN of the foundation model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 549 - }, - "name": "modelArn", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The unique identifier of the foundation model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 544 - }, - "name": "modelId", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether this model can be used with Bedrock Agents." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 559 - }, - "name": "supportsAgents", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether this model supports cross-region inference." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 564 - }, - "name": "supportsCrossRegion", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "Whether this model can be used with Bedrock Knowledge Base." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 575 - }, - "name": "supportsKnowledgeBase", - "type": { - "primitive": "boolean" - } - }, - { - "docs": { - "remarks": "Only applicable for embedding models.", - "stability": "experimental", - "summary": "The vector types supported by this model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 581 - }, - "name": "supportedVectorType", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType" - }, - "kind": "array" - } - } - }, - { - "docs": { - "remarks": "Only applicable for embedding models.", - "stability": "experimental", - "summary": "The dimensionality of vectors produced by this model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 570 - }, - "name": "vectorDimensions", - "optional": true, - "type": { - "primitive": "number" - } - } - ], - "symbolId": "bedrock/models:BedrockFoundationModel" - }, - "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Properties for configuring a Bedrock Foundation Model." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.BedrockFoundationModelProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 56 - }, - "name": "BedrockFoundationModelProps", - "properties": [ - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html A version is marked Legacy when there is a more recent version which provides superior performance. Amazon Bedrock sets an EOL date for Legacy versions." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 75 - }, - "name": "legacy", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Currently, some of the offered models are optimized with prompts/parsers fine-tuned for integrating with the agents architecture." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 68 - }, - "name": "optimizedForAgents", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No vector types specified", - "stability": "experimental", - "summary": "Embeddings models have different supported vector types." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 104 - }, - "name": "supportedVectorType", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Bedrock Agents can use this model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 62 - }, - "name": "supportsAgents", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Can be used with a Cross-Region Inference Profile." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 86 - }, - "name": "supportsCrossRegion", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Bedrock Knowledge Base can use this model." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 81 - }, - "name": "supportsKnowledgeBase", - "optional": true, - "type": { - "primitive": "boolean" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No vector dimensions specified", - "remarks": "Only applicable for embedding models.", - "stability": "experimental", - "summary": "Embedding models have different vector dimensions." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 97 - }, - "name": "vectorDimensions", - "optional": true, - "type": { - "primitive": "number" - } - } - ], - "symbolId": "bedrock/models:BedrockFoundationModelProps" - }, - "@aws-cdk/aws-bedrock-alpha.CustomOrchestration": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Configuration for custom orchestration of the agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.CustomOrchestration", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/orchestration.ts", - "line": 19 - }, - "name": "CustomOrchestration", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The Lambda function to use for custom orchestration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/orchestration.ts", - "line": 23 - }, - "name": "executor", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor" - } - } - ], - "symbolId": "bedrock/agents/orchestration:CustomOrchestration" - }, - "@aws-cdk/aws-bedrock-alpha.CustomParserProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Properties for configuring a custom Lambda parser for prompt overrides." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.CustomParserProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 173 - }, - "name": "CustomParserProps", - "properties": [ - { - "abstract": true, - "docs": { - "default": "undefined - No custom parser is used", - "stability": "experimental", - "summary": "Lambda function to use as custom parser." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 178 - }, - "name": "parser", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - No custom prompt step configurations", - "remarks": "At least one of the steps must make use of the custom parser.", - "stability": "experimental", - "summary": "Prompt step configurations." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 184 - }, - "name": "steps", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser" - }, - "kind": "array" - } - } - } - ], - "symbolId": "bedrock/agents/prompt-override:CustomParserProps" - }, - "@aws-cdk/aws-bedrock-alpha.IAgent": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Represents an Agent, either created with CDK or imported." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent", - "interfaces": [ - "aws-cdk-lib.IResource", - "aws-cdk-lib.aws_iam.IGrantable" - ], - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 38 - }, - "methods": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Grant invoke permissions on this agent to an IAM principal." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 65 - }, - "name": "grantInvoke", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Return the CloudWatch metric for agent count." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 75 - }, - "name": "metricCount", - "parameters": [ - { - "name": "props", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_cloudwatch.MetricOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_cloudwatch.Metric" - } - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Defines a CloudWatch event rule triggered by agent events." - }, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 70 - }, - "name": "onEvent", - "parameters": [ - { - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "name": "options", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_events.OnEventOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_events.Rule" - } - } - } - ], - "name": "IAgent", - "properties": [ - { - "abstract": true, - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The ARN of the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 43 - }, - "name": "agentArn", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "custom": { - "attribute": "true" - }, - "stability": "experimental", - "summary": "The ID of the Agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 48 - }, - "name": "agentId", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The IAM role associated to the agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 52 - }, - "name": "role", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IRole" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Optional KMS encryption key associated with this agent." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 56 - }, - "name": "kmsKey", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_kms.IKey" - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "When this agent was last updated." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent.ts", - "line": 60 - }, - "name": "lastUpdated", - "optional": true, - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent:IAgent" - }, - "@aws-cdk/aws-bedrock-alpha.IAgentAlias": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Represents an Agent Alias, either created with CDK or imported." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgentAlias", - "interfaces": [ - "aws-cdk-lib.IResource" - ], - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 27 - }, - "methods": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Grant the given principal identity permissions to perform actions on this agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 46 - }, - "name": "grant", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - }, - { - "name": "actions", - "type": { - "primitive": "string" - }, - "variadic": true - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - }, - "variadic": true - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Grant the given identity permissions to get the agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 56 - }, - "name": "grantGet", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Grant the given identity permissions to invoke the agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 51 - }, - "name": "grantInvoke", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - }, - { - "abstract": true, - "docs": { - "remarks": "Requires that there exists at least one CloudTrail Trail in your account\nthat captures the event. This method will not create the Trail.", - "stability": "experimental", - "summary": "Define an EventBridge rule that triggers when something happens to this agent alias." - }, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 67 - }, - "name": "onCloudTrailEvent", - "parameters": [ - { - "docs": { - "summary": "The id of the rule." - }, - "name": "id", - "type": { - "primitive": "string" - } - }, - { - "docs": { - "summary": "Options for adding the rule." - }, - "name": "options", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_events.OnEventOptions" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_events.Rule" - } - } - } - ], - "name": "IAgentAlias", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The underlying agent for this alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 41 - }, - "name": "agent", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IAgent" - } - }, - { - "abstract": true, - "docs": { - "example": "`arn:aws:bedrock:us-east-1:123456789012:agent-alias/DNCJJYQKSU/TCLCITFZTN`", - "stability": "experimental", - "summary": "The ARN of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 37 - }, - "name": "aliasArn", - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "example": "`TCLCITFZTN`", - "stability": "experimental", - "summary": "The unique identifier of the agent alias." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/agent-alias.ts", - "line": 32 - }, - "name": "aliasId", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/agent-alias:IAgentAlias" - }, - "@aws-cdk/aws-bedrock-alpha.IInvokable": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "This can be a Foundational Model,\na Custom Model, or an Inference Profile.", - "stability": "experimental", - "summary": "Represents an Amazon Bedrock abstraction on which you can run the `Invoke` API." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 41 - }, - "methods": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "Gives the appropriate policies to invoke and use the invokable abstraction." - }, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 50 - }, - "name": "grantInvoke", - "parameters": [ - { - "name": "grantee", - "type": { - "fqn": "aws-cdk-lib.aws_iam.IGrantable" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_iam.Grant" - } - } - } - ], - "name": "IInvokable", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The ARN of the Bedrock invokable abstraction." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 45 - }, - "name": "invokableArn", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/models:IInvokable" - }, - "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "LLM inference configuration." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 60 - }, - "name": "InferenceConfiguration", - "properties": [ - { - "abstract": true, - "docs": { - "remarks": "Integer\n\nmin 0\nmax 4096", - "stability": "experimental", - "summary": "The maximum number of tokens to generate in the response." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 115 - }, - "name": "maximumLength", - "type": { - "primitive": "number" - } - }, - { - "abstract": true, - "docs": { - "remarks": "A stop sequence is a sequence of characters that\ncauses the model to stop generating the response.\n\nlength 0-4", - "stability": "experimental", - "summary": "A list of stop sequences." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 106 - }, - "name": "stopSequences", - "type": { - "collection": { - "elementtype": { - "primitive": "string" - }, - "kind": "array" - } - } - }, - { - "abstract": true, - "docs": { - "remarks": "A lower value makes the model more likely to choose\nhigher-probability options, while a higher value makes the model more\nlikely to choose lower-probability options.\n\nFloating point\n\nmin 0\nmax 1", - "stability": "experimental", - "summary": "The likelihood of the model selecting higher-probability options while generating a response." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 72 - }, - "name": "temperature", - "type": { - "primitive": "number" - } - }, - { - "abstract": true, - "docs": { - "remarks": "The value that you set for\ntopK is the number of most-likely candidates from which the model chooses\nthe next token in the sequence. For example, if you set topK to 50, the\nmodel selects the next token from among the top 50 most likely choices.\n\nInteger\n\nmin 0\nmax 500", - "stability": "experimental", - "summary": "While generating a response, the model determines the probability of the following token at each point of generation." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 99 - }, - "name": "topK", - "type": { - "primitive": "number" - } - }, - { - "abstract": true, - "docs": { - "remarks": "The value that you set for\nTop P determines the number of most-likely candidates from which the model\nchooses the next token in the sequence. For example, if you set topP to\n80, the model only selects the next token from the top 80% of the\nprobability distribution of next tokens.\n\nFloating point\n\nmin 0\nmax 1", - "stability": "experimental", - "summary": "While generating a response, the model determines the probability of the following token at each point of generation." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 86 - }, - "name": "topP", - "type": { - "primitive": "number" - } - } - ], - "symbolId": "bedrock/agents/prompt-override:InferenceConfiguration" - }, - "@aws-cdk/aws-bedrock-alpha.InlineApiSchema": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "@aws-cdk/aws-bedrock-alpha.ApiSchema", - "docs": { - "remarks": "The schema can be provided directly as a string in either JSON or YAML format.", - "stability": "experimental", - "summary": "Class to define an API Schema from an inline string." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.InlineApiSchema", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 89 - }, - "parameters": [ - { - "name": "schema", - "type": { - "primitive": "string" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 88 - }, - "name": "InlineApiSchema", - "symbolId": "bedrock/agents/api-schema:InlineApiSchema" - }, - "@aws-cdk/aws-bedrock-alpha.Memory": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "Enables conversational context retention\nacross multiple sessions through session identifiers. Memory context is stored with unique\nmemory IDs per user, allowing access to conversation history and summaries. Supports viewing\nstored sessions and clearing memory.", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/agents-memory.html", - "stability": "experimental", - "summary": "Memory class for managing Bedrock Agent memory configurations." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.Memory", - "initializer": { - "docs": { - "stability": "experimental" - } - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 62 - }, - "methods": [ - { - "docs": { - "returns": "Memory configuration object", - "stability": "experimental", - "summary": "Creates a session summary memory with custom configuration." - }, - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 74 - }, - "name": "sessionSummary", - "parameters": [ - { - "docs": { - "summary": "Optional memory configuration properties." - }, - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps" - } - } - ], - "returns": { - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.MemoryConfigurationProperty" - } - }, - "static": true - } - ], - "name": "Memory", - "properties": [ - { - "const": true, - "docs": { - "default": "memoryDuration=Duration.days(30), maxRecentSessions=20", - "stability": "experimental", - "summary": "Returns session summary memory with default configuration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 67 - }, - "name": "SESSION_SUMMARY", - "static": true, - "type": { - "fqn": "aws-cdk-lib.aws_bedrock.CfnAgent.MemoryConfigurationProperty" - } - } - ], - "symbolId": "bedrock/agents/memory:Memory" - }, - "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Contains details about the Lambda function containing the orchestration logic carried out upon invoking the custom orchestration." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor", - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/orchestration-executor.ts", - "line": 24 - }, - "methods": [ - { - "docs": { - "stability": "experimental", - "summary": "Defines an orchestration executor with a Lambda function containing the business logic." - }, - "locationInModule": { - "filename": "bedrock/agents/orchestration-executor.ts", - "line": 29 - }, - "name": "fromlambdaFunction", - "parameters": [ - { - "docs": { - "summary": "- Lambda function to be called by the orchestration." - }, - "name": "lambdaFunction", - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationExecutor" - } - }, - "static": true - } - ], - "name": "OrchestrationExecutor", - "properties": [ - { - "docs": { - "remarks": "This function is called when the agent needs to make decisions about action execution.", - "stability": "experimental", - "summary": "The Lambda function that contains the custom orchestration logic." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/orchestration-executor.ts", - "line": 37 - }, - "name": "lambdaFunction", - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - } - ], - "symbolId": "bedrock/agents/orchestration-executor:OrchestrationExecutor" - }, - "@aws-cdk/aws-bedrock-alpha.OrchestrationType": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "Enum for orchestration types available for agents." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.OrchestrationType", - "kind": "enum", - "locationInModule": { - "filename": "bedrock/agents/orchestration.ts", - "line": 29 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "Default orchestration by the agent." - }, - "name": "DEFAULT" - }, - { - "docs": { - "stability": "experimental", - "summary": "Custom orchestration using Lambda." - }, - "name": "CUSTOM_ORCHESTRATION" - } - ], - "name": "OrchestrationType", - "symbolId": "bedrock/agents/orchestration:OrchestrationType" - }, - "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "stability": "experimental", - "summary": "AWS Defined signatures for enabling certain capabilities in your agent." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature", - "initializer": { - "docs": { - "stability": "experimental", - "summary": "Constructor should be used as a temporary solution when a new signature is supported but its implementation in CDK hasn't been added yet." - }, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 48 - }, - "parameters": [ - { - "docs": { - "summary": "The AWS-defined signature value for this action group capability." - }, - "name": "value", - "type": { - "primitive": "string" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 34 - }, - "methods": [ - { - "docs": { - "remarks": "Used when configuring the action group in CloudFormation.", - "stability": "experimental", - "summary": "Returns the string representation of the signature value." - }, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 59 - }, - "name": "toString", - "returns": { - "type": { - "primitive": "string" - } - } - } - ], - "name": "ParentActionGroupSignature", - "properties": [ - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Signature that allows your agent to generate, run, and troubleshoot code when trying to complete a task." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 42 - }, - "name": "CODE_INTERPRETER", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" - } - }, - { - "const": true, - "docs": { - "stability": "experimental", - "summary": "Signature that allows your agent to request the user for additional information when trying to complete a task." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 38 - }, - "name": "USER_INPUT", - "static": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.ParentActionGroupSignature" - } - }, - { - "docs": { - "stability": "experimental", - "summary": "The AWS-defined signature value for this action group capability." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/action-group.ts", - "line": 52 - }, - "name": "value", - "type": { - "primitive": "string" - } - } - ], - "symbolId": "bedrock/agents/action-group:ParentActionGroupSignature" - }, - "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "This allows customizing how the agent processes inputs,\nmakes decisions, and generates responses.", - "stability": "experimental", - "summary": "Configuration for overriding prompt templates and behaviors in different parts of an agent's sequence." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration", - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 192 - }, - "methods": [ - { - "docs": { - "remarks": "Use this method when you want to override prompts without using a custom parser.", - "returns": "A new PromptOverrideConfiguration instance", - "stability": "experimental", - "summary": "Creates a PromptOverrideConfiguration from a list of prompt step configurations." - }, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 199 - }, - "name": "fromSteps", - "parameters": [ - { - "docs": { - "summary": "The prompt step configurations to use." - }, - "name": "steps", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration" - }, - "kind": "array" - } - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" - } - }, - "static": true - }, - { - "docs": { - "stability": "experimental", - "summary": "Creates a PromptOverrideConfiguration with a custom Lambda parser function." - }, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 209 - }, - "name": "withCustomParser", - "parameters": [ - { - "docs": { - "remarks": "At least one of the steps must make use of the custom parser.", - "summary": "Configuration including: - `parser`: Lambda function to use as custom parser - `steps`: prompt step configurations." - }, - "name": "props", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.CustomParserProps" - } - } - ], - "returns": { - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptOverrideConfiguration" - } - }, - "static": true - } - ], - "name": "PromptOverrideConfiguration", - "properties": [ - { - "docs": { - "remarks": "The Lambda parser processes and interprets the raw foundation model output.\nIt receives an input event with:\n- messageVersion: Version of message format (1.0)\n- agent: Info about the agent (name, id, alias, version)\n- invokeModelRawResponse: Raw model output to parse\n- promptType: Type of prompt being parsed\n- overrideType: Type of override (OUTPUT_PARSER)\n\nThe Lambda must return a response that the agent uses for next actions.", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/lambda-parser.html", - "stability": "experimental", - "summary": "The custom Lambda parser function to use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 227 - }, - "name": "parser", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.aws_lambda.IFunction" - } - }, - { - "docs": { - "default": "- No prompt configuration will be overridden.", - "stability": "experimental", - "summary": "The prompt configurations to override the prompt templates in the agent sequence." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 234 - }, - "name": "steps", - "optional": true, - "type": { - "collection": { - "elementtype": { - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser" - }, - "kind": "array" - } - } - } - ], - "symbolId": "bedrock/agents/prompt-override:PromptOverrideConfiguration" - }, - "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Contains configurations to override a prompt template in one part of an agent sequence." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 121 - }, - "name": "PromptStepConfiguration", - "properties": [ - { - "abstract": true, - "docs": { - "stability": "experimental", - "summary": "The step in the agent sequence where to set a specific prompt configuration." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 125 - }, - "name": "stepType", - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.AgentStepType" - } - }, - { - "abstract": true, - "docs": { - "default": "- The default prompt template will be used.", - "see": "https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-placeholders.html", - "stability": "experimental", - "summary": "The custom prompt template to be used." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 142 - }, - "name": "customPromptTemplate", - "optional": true, - "type": { - "primitive": "string" - } - }, - { - "abstract": true, - "docs": { - "default": "- The agent's default foundation model will be used.", - "remarks": "This allows using different models for different steps in the agent sequence.", - "stability": "experimental", - "summary": "The foundation model to use for this specific prompt step." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 154 - }, - "name": "foundationModel", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.IInvokable" - } - }, - { - "abstract": true, - "docs": { - "default": "undefined - Default inference configuration will be used", - "stability": "experimental", - "summary": "The inference configuration parameters to use." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 147 - }, - "name": "inferenceConfig", - "optional": true, - "type": { - "fqn": "@aws-cdk/aws-bedrock-alpha.InferenceConfiguration" - } - }, - { - "abstract": true, - "docs": { - "default": "- The default state for each step type is as follows.\n\nPRE_PROCESSING – ENABLED\nORCHESTRATION – ENABLED\nKNOWLEDGE_BASE_RESPONSE_GENERATION – ENABLED\nPOST_PROCESSING – DISABLED", - "stability": "experimental", - "summary": "Whether to enable or skip this step in the agent sequence." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 135 - }, - "name": "stepEnabled", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "bedrock/agents/prompt-override:PromptStepConfiguration" - }, - "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "remarks": "Extends the base PromptStepConfiguration with custom parser options.", - "stability": "experimental", - "summary": "Configuration for a prompt step that can use a custom Lambda parser." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.PromptStepConfigurationCustomParser", - "interfaces": [ - "@aws-cdk/aws-bedrock-alpha.PromptStepConfiguration" - ], - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 161 - }, - "name": "PromptStepConfigurationCustomParser", - "properties": [ - { - "abstract": true, - "docs": { - "default": "- false", - "stability": "experimental", - "summary": "Whether to use the custom Lambda parser defined for the sequence." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/prompt-override.ts", - "line": 167 - }, - "name": "useCustomParser", - "optional": true, - "type": { - "primitive": "boolean" - } - } - ], - "symbolId": "bedrock/agents/prompt-override:PromptStepConfigurationCustomParser" - }, - "@aws-cdk/aws-bedrock-alpha.S3ApiSchema": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "base": "@aws-cdk/aws-bedrock-alpha.ApiSchema", - "docs": { - "stability": "experimental", - "summary": "Class to define an API Schema from an S3 object." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.S3ApiSchema", - "initializer": { - "docs": { - "stability": "experimental" - }, - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 110 - }, - "parameters": [ - { - "name": "location", - "type": { - "fqn": "aws-cdk-lib.aws_s3.Location" - } - } - ] - }, - "kind": "class", - "locationInModule": { - "filename": "bedrock/agents/api-schema.ts", - "line": 109 - }, - "name": "S3ApiSchema", - "symbolId": "bedrock/agents/api-schema:S3ApiSchema" - }, - "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "datatype": true, - "docs": { - "stability": "experimental", - "summary": "Properties for SessionSummaryConfiguration." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.SessionSummaryMemoryProps", - "kind": "interface", - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 40 - }, - "name": "SessionSummaryMemoryProps", - "properties": [ - { - "abstract": true, - "docs": { - "default": "20", - "stability": "experimental", - "summary": "Maximum number of recent session summaries to include (min 1)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 51 - }, - "name": "maxRecentSessions", - "optional": true, - "type": { - "primitive": "number" - } - }, - { - "abstract": true, - "docs": { - "default": "Duration.days(30)", - "stability": "experimental", - "summary": "Duration for which session summaries are retained (between 1 and 365 days)." - }, - "immutable": true, - "locationInModule": { - "filename": "bedrock/agents/memory.ts", - "line": 45 - }, - "name": "memoryDuration", - "optional": true, - "type": { - "fqn": "aws-cdk-lib.Duration" - } - } - ], - "symbolId": "bedrock/agents/memory:SessionSummaryMemoryProps" - }, - "@aws-cdk/aws-bedrock-alpha.VectorType": { - "assembly": "@aws-cdk/aws-bedrock-alpha", - "docs": { - "remarks": "The model must support the specified data type for vector embeddings. Floating-point (float32)\nis the default data type, and is supported by most models for vector embeddings. See Supported\nembeddings models for information on the available models and their vector data types.", - "stability": "experimental", - "summary": "The data type for the vectors when using a model to convert text into vector embeddings." - }, - "fqn": "@aws-cdk/aws-bedrock-alpha.VectorType", - "kind": "enum", - "locationInModule": { - "filename": "bedrock/models.ts", - "line": 25 - }, - "members": [ - { - "docs": { - "stability": "experimental", - "summary": "`FLOATING_POINT` convert the data to floating-point (float32) vector embeddings (more precise, but more costly)." - }, - "name": "FLOATING_POINT" - }, - { - "docs": { - "stability": "experimental", - "summary": "`BINARY` convert the data to binary vector embeddings (less precise, but less costly)." - }, - "name": "BINARY" - } - ], - "name": "VectorType", - "symbolId": "bedrock/models:VectorType" - } - }, - "version": "0.0.0", - "fingerprint": "IKB+3VRIiEOESTTCB+oaT8NKZufy41aa754QPZTRpqI=" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz b/packages/@aws-cdk/aws-bedrock-alpha/.jsii.tabl.json.gz deleted file mode 100644 index 51439c2a7ad6fe32b4776a05b51b50fd72df7c0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8138 zcmV;*A2r|~iwFP!000006YV_>bDOxfe?`xE(>Qm$4&NWXNnVro&fay0 zCqOi8ZSVqao7c&IeAt(Z;wyTuV1~pxI8;` zPT!oofBwRGb#nIlz4JkKB-&#brCGA_aFgk5@JqY`FhKx<8#G@At2uy?4}v5_kw3o$ z*@iGP9$p~s=22-##GR`VwfGKzYble^NokNI>5%L@S0y%W# zV=NJp{~G_i3g-xxO0TC4|4GUha&uZiUsmA zsRZU6ePtQuw=@jLS6LE9pN18JM&Mb+I^So}EUO`80=i|%=|I@^(GgAmPq+z)2I7fp?maNcd5d0pc?@)je6nV%WOn&Wn5~0gr zv=$`i;%+!Gy|!s{&_Uzw{?5*#FY#yS&M~rcZp5sRj!%oPgO8&@u$s@W3YI-S1~0>J zn7rU?nB9OS^ghE+C7g*4`2lySlMTz5MaaWYK3c!?$zSwzOzlLU{L%s=pgun9W zLXnSr;G!T-5P>Ps1>N`y!f$vti|%Gv!=<-T2EV-yBmXpBMHx!4CY0sDL>Ub%X)v)y z16h^^6L~aH%1?PPQSqlnerqcEH0XUp&OcR29ZZxvq9zg+J8%tX`ikz#hNK0i>Z+ci>bj=r5`swgWaJ|Rk)|uQEF;s$dRtaJQ?mj^3JhO? zlBX-a=1Znw`o3wn0a61~fu>BIXU#?$WoI9!`D-`kuM*bWn)7c=5 zeDrNhf0sRZv0rtAsXxY&?7%cd*$}J8@o#Y$4IRf1lL#&lezWoTn6x-1gZe2S)NF8c zG>eX~?6G65Pg|H_4aqCuZl|-s?<8^@nh5JveA+V{BZ9DPIHDvOhHj>Np&3wkfd2Srfv(4ml+ zM@6p@HfR3y8XI?V2`)n?^={AtR*zbSSNRo!aO{uFyV1@fdwdHQa~9)&>KS4=!ZGxH zhebX|i4A6wP1&MKz7)f9`Xm%X4wjp1Qc(m`&@Pm(h!ExzNU>PvdU%?Dj9(`4;v{E` ze{Cd+cf=6Z#>>v1Sy>cahnrabEqAQY9Wqzwkr_Qm!*)t&tYjd36pGMF-7qWjL5nu)nJLK&vBf>omYbRm;s*yL&5N{yj_4u4X zt|x^njDvMGD_o1$3FUhPo^kd#58zP=pA=ow-wq@3G%!a^ay=+lm;4+Si+kB6{^3+6 zTIjp+eRe2=d{S0<&_vn=aZDEV&xBSxA3iqO^%2$8Kt3YIc-P@~rVa836*6B2J+v8MWo~wSSJ|If4<<3;F$04=|4`E;%*p-h+5zT~X0(A9)_su+ilW^bAk8dh1jM zYwF@qpdpG7O(NC^4JZAk&($0sMPVlvk@MS<-B9&}7{n36~xq2Rs#ewAdQDNBXC4ny8e!o?r*Oc>ck1P)w#{jPoIk zmhZlMP}+cYIEJ0pKooRo0XtjY6SZt>0S*|`x6i@tb8t^D2e)_s_U_-_{d+L?@8NU6 z7Rdo?8chN#_*1Ep!75D#%Le|U4kiZ83ad0LoPTOnc37p^VU=cwWl5MGwiSdl&j@r| zmHYr1J_=mjkYqowBrh;r-;^Z7c3sm9bjkIRYPy~cwZIM}MYDY=&mc*jr|6RGTdM47 zmhQqJ@Fm@pT<99QW?QOZ>6WQmx`aFz1-hmvwr#orv{lcv`<8ef01`X|5V$MvGs>_E z&R`f}`-x>RjFzhmkR;+PBA*Tgoq|*y|D1m>bACit$i*t*iDlhGPI~o*O;1wqpU+t? zSMEIYoCHCfa`RA{PG7=#THJQ$vG>`bK=eL-3w-%9zj~5i9RK|0;`Ft1^5#wX4qkFg z61wGEzbLPbuTw1xw<$%e{uc8^2_uYs}vO z8jH|0R}JxJul%U+P-O1_sRF?y!m1?aELQ4rrxnZHzG!6QqLEZ}Fb;>j+yhRwk3|vd zl3LIw6ya!<#SQsiQ+QEz=A$Kc86xi%1aVUJ17d>CR0Wj=EIN-c_u(g0t%r;n?pN1w ze7u-XR{kv9cW%G&KVY?y8cO!gQ7_!g5R#>@~W*%^KW|`#E9&( g&jOkZ2s;d9K1C%*q&Y=-;PZf$CXsbZ}eV)CV}u7&?CtofHq>glRU8gCRE)?lTEKs+F(tcAAsK7Rb_64{L_H19?rm z{W#TNHM9LFC1I?+OXj3c(dJ{?<+#@XX5wOq&ux9-O}E7P~r*$n}PF{YBkG00?(Ma_;*qcSa<-f6@lfPycME8J+A>0{~(8K z_yH3j3W7VOcQ7of77IUM0t8WThnua>GR_Z};GneUe;#vJoodED%Nq0bmZ6d|y`F9X z>jg}v#Y>zt!rCPX8#8*In05c4q-JeypVO62>?h#Yk0JSbsEFL&uv97#)Q-6h2jR=wkRr;M4j)G0F=3JejZlQx;ix4CP`A5LPYxu!yV0H*XoMfiQEZkMAc$>d z26|-QDZ)8tqQH1sIt|+--w%0*;IK%&H^L1KPk@7AJb^>DyHR&W;87}+MEQURE>j|z zciya*lF*DHO#0^l{z}z@_p!nI%EOH+4~2I0u+wxN@|61HP4*veQHZSA`&A)-npGi0 zb{=m!mSVQl8!8L>3Yt^V*N?trsI`}Icq^+u1e z-e?~W*vA9*@qm3iU>^_I#{>5906re@@T&x6x>c-cj|O<%oJ>~>YIL+L*+sJN`)*(=$kYA6M6zV*x{CuFlB!!Wgqr2+uJ5Tz;3C_zR7q0Y0Iw)C zp>Au2i#L`vY|9Ercam@Vz78cbcnSwYygm8P#kq5S@!`aIb9Vj0`5^aQj+Lfin!zZm zs&kh~yjW&V`~@XR=p)CAqagf5ebVwxE_0|03UtcC&;>6UTBgHat2!Ed!O3oyXv(4B zDnrZb+a(%bzI)+ZzPmVmadmZe{?AdZp1E>;U? zj-pT5O`}Cw6Q{E35Wc%Ftxi z4mJeSuDhfdJm=AJ`3e3)n&2CJXWuK_793ktS68f6;1IVe& z%&#ApV&S9Jk0xDL8%M&`yKA{k54H7xHrgqgS zUq>Evp>IRW*AVg)3;Bxc1_}<_>%QcBitVYA7X*2n-nTRv`6kp|S+iVAk^-oBl4N_D zWd@37tBNWiS5aL_)lEb3B;Rs%WGI?%Ay<-n#_5+Z!P|@V+5GD=2i;=duY#rSweQz# zK<-p~ME!+Q4A`_gMesi-0~3@d7p65z)-np|^jH2tjfpp%5Z8ML_sL}dvV9%@>h+`s zxL;y}%K{W%X>MSnY`~J^@3swj8d9*`UOa_NY`Yf^Ck{XMNUx`o()f3n-Ed5c2gY9D z#+N@UzYL}|QrA)!T$H{eNy0v=o@3ZNX#&W`Q(UKwM!=ZwTs^%fY1`F9+wFR|5U`hg&__L`=gtK5Ixg z4eXOElcr59vMG5ope0+wc3LJ1+EP10;H?uq`K}9Wm!0XJ-6wqRk=PJ=nk_}1yiE45 z@09LW-+4%bYCrm9f~OJ#Y8XiB;4Ryv1r!r491NjKn{f)aj2z|DC!WbOQAyZ6B1qH` z%x6p@Z}9Q*C5p0>bGP>SlHU1}hK<-wdgVbN>v3XOtEW5wBn>Gh323XnuAhk4ysryqR!G-Ze+ z&r+2@Q3B5oG#Li6>MNeCn{MEllH?k)Bq^3Jxwh%)x(BTQK@GcTuBLg=lzdx*l5V<4 zMu8qko}oc#NuF)%x-D52(iP9wWl4gv6c|XcR2?cdR0Fh=wIXkC`BY90?a)(J>NgwN znS{N>*OBioC$z}5_>?H~af(vxIy>oVv4F`flS^5^Z%%?d{QeXuoyyV(fCKOvp(R;I z2Gb145}*Kp^b(?!=_Y@U;};pE!XAx%c$*HDB5=B+r4SX0TQUdvm2!*yIzXd#NUlBxJQEK2Z@RtZ&BU$hketVbGibCVGKu)aVR*JO}J{avba!N>>ZzW9oAag---KmN5vsS*K5yplX*Gizv zTIs%Ak$1{5Lb>g6aly$Yo2$u|iYe;3bUK2j+lh z#_lGq+NBnnd0vIHM3)aRtL+0c`vA?83()LM%nvm&4_^4Hkiu7$L>=(4)kWc}LZc6P zltHfr8P*lL8p0TZ=}Cs^8j@vrS|A0kEg6BQ$&%)2z6?FvlQr2gby+rD$wsoLTArtR zfo_|o24P@ed#LM3g3$17Uqhy0s;aANvTQ4=8_1GjN&%ET(~w;J)Adx_v^~S~P1lkv z&kgVxdY)o^T5P|QE|C|)dH8?GFSjtt!$&A_($x|RzSA9&IHllM1bR&ff_Wg`EQahh zgf(~ZR6w6vZ9p{MWsssgQuVajcZbX%=OIi*gU8n!2i@X}tr*CA;vzItF;2N4PX3@G zl(S4?e?<#V8m|l%SiG1$o4j~Fhi;s}45h?O=KIGqNsAk-AR0v3E%7*fRfA>=hx1oIEpNq19%j9IfBE9whqJ4TcP(AS3EoqqoRqfq)<$y{ zhTEH=MqdFV;LG&_V0LH@kN>_`-*ULT)O}~Duc?s4+HMfL^u}b3Dk=)G}oesTH7I> z5RI*=6Y@$uHC6+Rt<0_@utWlrnSV48?j)X4+Q)o&}iJC>m<3aN@L%)WXp9r z?H$%>r;JK_MKoG@esKYKca%GteUDY`(r1K`TQpi{=vu7Yx{Ic_QfIplWY><+Yf*3v zL$&C+3ZgHPh{|gO`-dU|G@wc)H{?}ZkD+a^@dz)lIQ$Y7Qz?Xnt3g{Z@7i#TmKBA0*3+x*w!{_(S%(K z0q&Q{S)(R}3bJqBr$tjXlR#^V(znx|J5B$TXLzldt8$7`bUYj57aS5wAH)f3uwdsyif=wrK(mr3!*9>sJWTS&P$=5VA zbSzC7*3l{OD?53rrdkVRH$2R84MfF7O;)3xC0)bNqF3uA+g!;C9zoPCil&-7$F<#U1% z&|r0Xvmgb&0ANYms+$O4o6k1^ha0M+LqVT~GOE9J1>5G+ado73WHa@TPb=YX{K$R5 za;o)(>$@n1<(>_}w|PX*^*8k<2bBo@2`VFc5d5q!#kn$zeU-w#O5v$gDeQf|z0bGz z`Sw2F&V0UyU-4tp6+c?-l$h2PKN2m%(P$BlN{et*T7;u^?>1+lKv!KuRRhh?OciRD z=4qPh8j4|BmgT96f{Z{4R8k3{_6VTt#k42 z^c6mP@8tUI;=DjG+2M`ruIx#GA|}mI9Hu3Hu;4VUlCy?lhTCR=R4ih|woT&Nxb|`P ziW9JJubtyM7At`7t(eYcTK*wsdP}?ydG`>%q>u&o#$&79RFvY7XxL6)eC_=W4q` zQ4iNC=rt_fwT^C^^P&?kdLab#x1AC z9u!-OaSbNmncynT^u1`D3Mv#7r?)NGAbCdS&|O|k%eEXs=Ks;VbMWlE#a|s{izD)G)?f~^^$N&hkjXh z3}{0T2Vg-5osZ=y9kjldusveZ_akjRmcC}SVny4v3l!T|AF?auz!b1F&#!%;l*8=^ z(T|U7RDWJkJqKG)_os9Mc{|xR3g6y`@|{6w!UP;YtY6htvc^_Rw8)CD{Qt&f$`8Yw z8;+XHkV7(hV7Q(i{#YkxxAV(Z2RGb{Z}^Dp7He55KIvM%(tCMIx!k2tBlH4gntF4& zXvMS9EMqiEz0F!?dOF8LuQ4cV9q#Q}<4`y|=vUE2S%NF#YA@0%tGp`10Xd2v%7>%6 zmhf5f9(Ggo@JU4h)gQUB+Jn?t|KQMKyA150HhEuiypJ?J-AL2ky8KbB%MaVbz1&Sr zsqLnw^$g93cTuyTr&zwOxxQ`q$cCO_yU5icG)=>nBopa!VA}z7B^ODaXW>oPRmJs8 z+cb1b$#+rHkl}i|>Uzl1R5P$7)6jjx3KUn-Y~MC4-P9CYhn8jq(6Cj>vUE!~{lLS~ zoj~dtnwbq?5>4RObV7M#vPyqKFwK6FC$geyx?x(jBrB7gJU`{ka{T=K^k4t_<$qpZ zy+6J_eRFzt{qjH8=d(et;K42**k{uEz|X7Af*uT=0-yPRclD_M-N>6mc>Ci)&i0)i zTy3cmX@|86o-E>vCrKpq^3XT9SkBR)r)RhKDfT|aBlr}%lfDPGb~@b)6z>Ttv{p!U zB~Q~7+X_6{lQkO#ZlHOVZ5x4WE1F_Lq{&D#G~2aR&4Ze)+qUeQmae##p074Q2tv~j zBo~>c1WXtMpt+uc?n_G-c kb^bv0B>*7QUCw| diff --git a/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json b/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json deleted file mode 100644 index b615d5b2e797c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/.jsiirc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "targets": { - "java": { - "package": "software.amazon.awscdk.services.bedrock" - }, - "dotnet": { - "package": "Amazon.CDK.AWS.Bedrock" - }, - "python": { - "module": "aws_cdk.aws_bedrock" - } - } -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts index 89f94ef4b536b..0688e0ba5295f 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { ActionGroupExecutor } from './api-executor'; import { ApiSchema } from './api-schema'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts index 5436afc583351..33591a892bb96 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { ArnFormat, aws_bedrock as bedrock, IResource, Resource, Stack } from 'aws-cdk-lib'; import * as events from 'aws-cdk-lib/aws-events'; import * as iam from 'aws-cdk-lib/aws-iam'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts index 0e62715fe15eb..38254ad4164da 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; import { Construct } from 'constructs'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 2688f2f4720e8..4a6ea1eb729c7 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import * as crypto from 'crypto'; import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError, Aws } from 'aws-cdk-lib/core'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; @@ -61,6 +48,8 @@ export interface IAgent extends IResource, iam.IGrantable { /** * Grant invoke permissions on this agent to an IAM principal. + * Note: This grant will only work when the grantee is in the same AWS account + * where the agent is defined. Cross-account invocation is not supported. */ grantInvoke(grantee: iam.IGrantable): iam.Grant; @@ -94,6 +83,15 @@ export abstract class AgentBase extends Resource implements IAgent { public abstract readonly agentVersion: string; public abstract readonly grantPrincipal: iam.IPrincipal; + /** + * Grant invoke permissions on this agent to an IAM principal. + * + * @param grantee - The IAM principal to grant invoke permissions to + * @default - Default grant configuration: + * - actions: ['bedrock:InvokeAgent'] + * - resourceArns: [this.agentArn] + * @returns An IAM Grant object representing the granted permissions + */ public grantInvoke(grantee: iam.IGrantable): iam.Grant { return iam.Grant.addToPrincipal({ grantee, @@ -102,7 +100,17 @@ export abstract class AgentBase extends Resource implements IAgent { }); } - public onEvent(id: string, options: events.OnEventOptions = {}): events.Rule { + /** + * Creates an EventBridge rule for agent events. + * + * @param id - Unique identifier for the rule + * @param options - Configuration options for the event rule + * @default - Default event pattern: + * - source: ['aws.bedrock'] + * - detail: { 'agent-id': [this.agentId] } + * @returns An EventBridge Rule configured for agent events + */ + public onEvent(id: string, options: events.OnEventOptions): events.Rule { const rule = new events.Rule(this, id, options); rule.addTarget(options.target); rule.addEventPattern({ @@ -114,6 +122,16 @@ export abstract class AgentBase extends Resource implements IAgent { return rule; } + /** + * Creates a CloudWatch metric for tracking agent invocations. + * + * @param props - Configuration options for the metric + * @default - Default metric configuration: + * - namespace: 'AWS/Bedrock' + * - metricName: 'Invocations' + * - dimensionsMap: { AgentId: this.agentId } + * @returns A CloudWatch Metric configured for agent invocation counts + */ public metricCount(props?: cloudwatch.MetricOptions): cloudwatch.Metric { return new cloudwatch.Metric({ namespace: 'AWS/Bedrock', @@ -296,6 +314,15 @@ export class Agent extends AgentBase implements IAgent { /** * Static Method for importing an existing Bedrock Agent. */ + /** + * Creates an Agent reference from an existing agent's attributes. + * + * @param scope - The construct scope + * @param id - Identifier of the construct + * @param attrs - Attributes of the existing agent + * @default - For attrs.agentVersion: 'DRAFT' if no explicit version is provided + * @returns An IAgent reference to the existing agent + */ public static fromAgentAttributes(scope: Construct, id: string, attrs: AgentAttributes): IAgent { class Import extends AgentBase { public readonly agentArn = attrs.agentArn; @@ -605,7 +632,12 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ /** - * Add an action group to the agent. + * Adds an action group to the agent and configures necessary permissions. + * + * @param actionGroup - The action group to add + * @default - Default permissions: + * - Lambda function invoke permissions if executor is present + * - S3 GetObject permissions if apiSchema.s3File is present */ public addActionGroup(actionGroup: AgentActionGroup) { // Do some checks @@ -634,7 +666,9 @@ export class Agent extends AgentBase implements IAgent { } /** - * Add an agent collaborator to the agent. + * Adds a collaborator to the agent and grants necessary permissions. + * + * @param agentCollaborator - The collaborator to add */ public addAgentCollaborator(agentCollaborator: AgentCollaborator) { this.agentCollaborators?.push(agentCollaborator); @@ -642,7 +676,9 @@ export class Agent extends AgentBase implements IAgent { } /** - * Add multiple action groups to the agent. + * Adds multiple action groups to the agent. + * + * @param actionGroups - The action groups to add */ public addActionGroups(...actionGroups: AgentActionGroup[]) { actionGroups.forEach(ag => this.addActionGroup(ag)); @@ -655,6 +691,8 @@ export class Agent extends AgentBase implements IAgent { /** * Render the action groups * + * @returns Array of AgentActionGroupProperty objects in CloudFormation format + * @default - Empty array if no action groups are defined * @internal This is an internal core function and should not be called directly. */ private renderActionGroups(): bedrock.CfnAgent.AgentActionGroupProperty[] { @@ -669,6 +707,8 @@ export class Agent extends AgentBase implements IAgent { /** * Render the agent collaborators. * + * @returns Array of AgentCollaboratorProperty objects in CloudFormation format, or undefined if no collaborators + * @default - undefined if no collaborators are defined or array is empty * @internal This is an internal core function and should not be called directly. */ private renderAgentCollaborators(): bedrock.CfnAgent.AgentCollaboratorProperty[] | undefined { @@ -687,6 +727,8 @@ export class Agent extends AgentBase implements IAgent { /** * Render the custom orchestration. * + * @returns CustomOrchestrationProperty object in CloudFormation format, or undefined if no custom orchestration + * @default - undefined if no custom orchestration is defined * @internal This is an internal core function and should not be called directly. */ private renderCustomOrchestration(): bedrock.CfnAgent.CustomOrchestrationProperty | undefined { @@ -706,6 +748,9 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ /** * Check if the action group is valid + * + * @param actionGroup - The action group to validate + * @returns Array of validation error messages, empty if valid */ private validateActionGroup = (actionGroup: AgentActionGroup) => { let errors: string[] = []; @@ -716,6 +761,26 @@ export class Agent extends AgentBase implements IAgent { return errors; }; + /** + * Generates a unique, deterministic name for AWS resources that includes a hash component. + * This method ensures consistent naming while avoiding conflicts and adhering to AWS naming constraints. + * @param scope - The construct scope used for generating unique names + * @param prefix - The prefix to prepend to the generated name + * @param options - Configuration options for name generation + * @param options.maxLength - Maximum length of the generated name + * @default - maxLength: 256 + * @param options.lower - Convert the generated name to lowercase + * @default - lower: false + * @param options.separator - Character(s) to use between name components + * @default - separator: '' + * @param options.allowedSpecialCharacters - String of allowed special characters + * @default - undefined + * @param options.destroyCreate - Object to include in hash generation for destroy/create operations + * @default - undefined + * @returns A string containing the generated name with format: prefix + hash + separator + uniqueName + * @throws ValidationError if the generated name would exceed maxLength or if prefix is too long + * @internal + */ private generatePhysicalNameHash( scope: IConstruct, prefix: string, @@ -758,6 +823,16 @@ export class Agent extends AgentBase implements IAgent { return lower ? name.toLowerCase() : name; } + /** + * Generates a physical name for the agent. + * + * @returns A unique name for the agent with appropriate length constraints + * @default - Generated name format: 'agent-{hash}-{uniqueName}' with: + * - maxLength: MAXLENGTH_FOR_ROLE_NAME - '-bedrockagent'.length + * - lower: true + * - separator: '-' + * @protected + */ protected generatePhysicalName(): string { const maxLength = this.MAXLENGTH_FOR_ROLE_NAME - this.ROLE_NAME_SUFFIX.length; return this.generatePhysicalNameHash(this, 'agent-', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts index 333417d26c008..e543bf5c2a799 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts index 8efadefaeed00..29d584eeded62 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import * as fs from 'fs'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IBucket, Location } from 'aws-cdk-lib/aws-s3'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts index 007112990e153..d02c8f5aecf76 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { Duration } from 'aws-cdk-lib/core'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import * as validation from './validation-helpers'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts index 43beae15671de..d4b005f4fd02e 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts index 3bc45ced90612..780b741b6f4dc 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { OrchestrationExecutor } from './orchestration-executor'; /** diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts index 8397165982dfa..7575a9e178c65 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -1,16 +1,3 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; import * as validation from './validation-helpers'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts index de5c14d4284a1..51d8de34a247a 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts @@ -1,19 +1,7 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { createHash } from 'crypto'; import * as cdk from 'aws-cdk-lib'; import { IConstruct } from 'constructs'; +import { ValidationError } from 'aws-cdk-lib'; /** * The CFN NAG suppress rule interface @@ -34,6 +22,7 @@ export const version = require('../../../package.json').version; * * @summary Creates a physical resource name in the style of the CDK (string+hash) - this value incorporates Stack ID, * so it will remain static in multiple updates of a single stack, but will be different in a separate stack instance + * @param {IConstruct} scope - the CDK scope of the resource * @param {string} prefix - the prefix for the name * @param {string[]} parts - the various string components of the name (eg - stackName, solutions construct ID, L2 construct ID) * @param {number} maxLength - the longest string that can be returned @@ -43,6 +32,7 @@ export const version = require('../../../package.json').version; * Please use the new function generatePhysicalNameV2 instead. */ export function generatePhysicalName( + scope: IConstruct, prefix: string, parts: string[], maxLength: number, @@ -72,7 +62,7 @@ export function generatePhysicalName( } if (prefix.length + allParts.length + stackIdGuidLength + 1 /* hyphen */ > maxLength) { - throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + throw new ValidationError(`The generated name is longer than the maximum length of ${maxLength}`, scope); } return prefix.toLowerCase() + allParts + '-' + uniqueStackIdPart; @@ -140,7 +130,7 @@ export function generatePhysicalNameV2( } = options ?? {}; const hash = objectToHash(destroyCreate); if (maxLength < (prefix + hash + separator).length) { - throw new Error('The prefix is longer than the maximum length.'); + throw new ValidationError('The prefix is longer than the maximum length', scope); } const uniqueName = cdk.Names.uniqueResourceName( scope, @@ -148,7 +138,7 @@ export function generatePhysicalNameV2( ); const name = `${prefix}${hash}${separator}${uniqueName}`; if (name.length > maxLength) { - throw new Error(`The generated name is longer than the maximum length of ${maxLength}`); + throw new ValidationError(`The generated name is longer than the maximum length of ${maxLength}`, scope); } return lower ? name.toLowerCase() : name; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts index 9261740987044..34a7bcd40b5f3 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/validation-helpers.ts @@ -1,30 +1,14 @@ -/** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - import { Token } from 'aws-cdk-lib'; /** - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance - * with the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES - * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions - * and limitations under the License. + * Error thrown when validation fails */ +export class ValidationError extends Error { + constructor(message: string) { + super(message); + this.name = 'ValidationError'; + } +} interface IntervalValidation { fieldName: string; minLength: number; @@ -35,14 +19,6 @@ interface StringLengthValidation extends IntervalValidation { value: string; } -// interface NumberValidation extends IntervalValidation { -// value: number; -// } - -// interface ArrayValidation extends IntervalValidation { -// value: any[]; -// } - /** * Validates the length of a string field against minimum and maximum constraints. * @param value - The string value to validate @@ -116,7 +92,7 @@ export type ValidationFn = (param: T) => string[]; export function throwIfInvalid(validationFn: ValidationFn, param: T): T { const errors = validationFn(param); if (errors.length > 0) { - throw new Error(errors.join('\n')); + throw new ValidationError(errors.join('\n')); } return param; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts index 3b059c6b5efad..7e6d1a3d13d49 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -14,7 +14,6 @@ import { Arn, ArnFormat, Aws } from 'aws-cdk-lib'; import { IModel, FoundationModel, FoundationModelIdentifier } from 'aws-cdk-lib/aws-bedrock'; import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam'; -import { IConstruct } from 'constructs'; /** * The data type for the vectors when using a model to convert text into vector embeddings. @@ -52,54 +51,63 @@ export interface IInvokable { /** * Properties for configuring a Bedrock Foundation Model. + * These properties define the model's capabilities and supported features. */ export interface BedrockFoundationModelProps { /** * Bedrock Agents can use this model. + * When true, the model can be used with Bedrock Agents for automated task execution. * * @default - false */ readonly supportsAgents?: boolean; + /** * Currently, some of the offered models are optimized with prompts/parsers fine-tuned for integrating with the agents architecture. + * When true, the model has been specifically optimized for agent interactions. * * @default - false */ readonly optimizedForAgents?: boolean; + /** * https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html - * A version is marked Legacy when there is a more recent version which provides superior performance. Amazon Bedrock sets an EOL date for Legacy versions. + * A version is marked Legacy when there is a more recent version which provides superior performance. + * Amazon Bedrock sets an EOL date for Legacy versions. * * @default - false */ readonly legacy?: boolean; + /** * Bedrock Knowledge Base can use this model. + * When true, the model can be used for knowledge base operations. * * @default - false */ readonly supportsKnowledgeBase?: boolean; + /** - * Can be used with a Cross-Region Inference Profile + * Can be used with a Cross-Region Inference Profile. + * When true, the model supports inference across different AWS regions. + * * @default - false */ readonly supportsCrossRegion?: boolean; + /** * Embedding models have different vector dimensions. - * Only applicable for embedding models. - */ - /** - * Embedding models have different vector dimensions. - * Only applicable for embedding models. + * Only applicable for embedding models. Defines the dimensionality of the vector embeddings. * - * @default undefined - No vector dimensions specified + * @default - undefined */ readonly vectorDimensions?: number; /** * Embeddings models have different supported vector types. + * Defines whether the model supports floating-point or binary vectors. * - * @default undefined - No vector types specified + * @default - undefined */ readonly supportedVectorType?: VectorType[]; } @@ -114,9 +122,15 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * AI21 ***************************************************************************/ + /** - * AI21's Jamba 1.5 Large model, optimized for general text generation and understanding. - * Suitable for complex language tasks with high accuracy requirements. + * AI21's Jamba 1.5 Large model optimized for text generation tasks. + * Suitable for complex language understanding and generation tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Optimized for natural language processing + * - Best for: Content generation, summarization, and complex text analysis */ public static readonly AI21_JAMBA_1_5_LARGE_V1 = new BedrockFoundationModel( 'ai21.jamba-1-5-large-v1:0', @@ -126,8 +140,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * AI21's Jamba 1.5 Mini model, a lightweight version optimized for faster inference. - * Suitable for simpler language tasks where speed is prioritized. + * AI21's Jamba 1.5 Mini model, a lighter version optimized for faster processing. + * Balances performance with efficiency for general text tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Faster response times compared to larger models + * - Best for: Quick text processing, basic content generation */ public static readonly AI21_JAMBA_1_5_MINI_V1 = new BedrockFoundationModel( 'ai21.jamba-1-5-mini-v1:0', @@ -138,7 +157,12 @@ export class BedrockFoundationModel implements IInvokable { /** * AI21's Jamba Instruct model, specifically designed for instruction-following tasks. - * Optimized for understanding and executing natural language instructions. + * Optimized for understanding and executing specific instructions. + * + * Features: + * - Supports Bedrock Agents integration + * - Enhanced instruction understanding + * - Best for: Task-specific instructions, command processing */ public static readonly AI21_JAMBA_INSTRUCT_V1 = new BedrockFoundationModel( 'ai21.jamba-instruct-v1:0', @@ -149,9 +173,15 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * AMAZON ***************************************************************************/ + /** * Amazon's Titan Text Express model, optimized for fast text generation. - * Suitable for real-time applications requiring quick responses. + * Provides quick responses while maintaining good quality output. + * + * Features: + * - Supports Bedrock Agents integration + * - Fast response times + * - Best for: Real-time applications, chatbots, quick content generation */ public static readonly AMAZON_TITAN_TEXT_EXPRESS_V1 = new BedrockFoundationModel( 'amazon.titan-text-express-v1', @@ -161,8 +191,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Amazon's Titan Premier model, offering enhanced capabilities for complex text generation. - * Provides higher quality outputs compared to Express version. + * Amazon's Titan Text Premier model, designed for high-quality text generation. + * Offers enhanced capabilities for complex language tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Advanced language understanding + * - Best for: Complex content generation, detailed analysis */ public static readonly AMAZON_TITAN_PREMIER_V1_0 = new BedrockFoundationModel( 'amazon.titan-text-premier-v1:0', @@ -172,8 +207,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Amazon's Nova Micro model, a lightweight model optimized for Bedrock Agents. - * Provides fast inference with cross-region support. + * Amazon's Nova Micro model, a lightweight model optimized for efficiency. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: Quick processing tasks, basic language understanding */ public static readonly AMAZON_NOVA_MICRO_V1 = new BedrockFoundationModel( 'amazon.nova-micro-v1:0', @@ -185,8 +225,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Amazon's Nova Lite model, balancing performance and resource usage. - * Optimized for Bedrock Agents with cross-region support. + * Amazon's Nova Lite model, balancing performance with efficiency. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: General-purpose language tasks, moderate complexity */ public static readonly AMAZON_NOVA_LITE_V1 = new BedrockFoundationModel('amazon.nova-lite-v1:0', { supportsAgents: true, @@ -196,7 +241,12 @@ export class BedrockFoundationModel implements IInvokable { /** * Amazon's Nova Pro model, offering advanced capabilities for complex tasks. - * Provides high-quality outputs with cross-region support and agent optimization. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: Complex language tasks, professional applications */ public static readonly AMAZON_NOVA_PRO_V1 = new BedrockFoundationModel('amazon.nova-pro-v1:0', { supportsAgents: true, @@ -205,8 +255,13 @@ export class BedrockFoundationModel implements IInvokable { }); /** - * Amazon's Nova Premier model, their most advanced Nova model. - * Provides highest quality outputs with cross-region support and agent optimization. + * Amazon's Nova Premier model, the most advanced in the Nova series. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: High-end applications, complex analysis, premium performance */ public static readonly AMAZON_NOVA_PREMIER_V1 = new BedrockFoundationModel('amazon.nova-premier-v1:0', { supportsAgents: true, @@ -216,7 +271,12 @@ export class BedrockFoundationModel implements IInvokable { /** * Amazon's Titan Embed Text V1 model for text embeddings. - * Generates 1536-dimensional floating-point vector embeddings. + * + * Features: + * - Supports Knowledge Base integration + * - 1536-dimensional vectors + * - Floating-point vector type + * - Best for: Text embeddings, semantic search, document similarity */ public static readonly TITAN_EMBED_TEXT_V1 = new BedrockFoundationModel( 'amazon.titan-embed-text-v1', @@ -229,7 +289,12 @@ export class BedrockFoundationModel implements IInvokable { /** * Amazon's Titan Embed Text V2 model with 1024-dimensional vectors. - * Supports both floating-point and binary vector embeddings. + * + * Features: + * - Supports Knowledge Base integration + * - 1024-dimensional vectors + * - Supports both floating-point and binary vectors + * - Best for: High-dimensional embeddings, advanced semantic search */ public static readonly TITAN_EMBED_TEXT_V2_1024 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', @@ -242,7 +307,12 @@ export class BedrockFoundationModel implements IInvokable { /** * Amazon's Titan Embed Text V2 model with 512-dimensional vectors. - * Provides a balance between precision and resource usage. + * + * Features: + * - Supports Knowledge Base integration + * - 512-dimensional vectors + * - Supports both floating-point and binary vectors + * - Best for: Balanced performance and dimensionality */ public static readonly TITAN_EMBED_TEXT_V2_512 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', @@ -255,7 +325,12 @@ export class BedrockFoundationModel implements IInvokable { /** * Amazon's Titan Embed Text V2 model with 256-dimensional vectors. - * Optimized for applications requiring compact vector representations. + * + * Features: + * - Supports Knowledge Base integration + * - 256-dimensional vectors + * - Supports both floating-point and binary vectors + * - Best for: Efficient embeddings with lower dimensionality */ public static readonly TITAN_EMBED_TEXT_V2_256 = new BedrockFoundationModel( 'amazon.titan-embed-text-v2:0', @@ -268,18 +343,31 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * ANTHROPIC ***************************************************************************/ + /** - * Anthropic's Claude 3.7 Sonnet model, the latest version with enhanced capabilities. - * Provides advanced natural language understanding and generation with cross-region support. + * Anthropic's Claude 3.7 Sonnet model, latest in the Claude 3 series. + * Advanced language model with enhanced capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Complex reasoning, analysis, and content generation */ public static readonly ANTHROPIC_CLAUDE_3_7_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-7-sonnet-20250219-v1:0', + { supportsAgents: true, supportsCrossRegion: true, optimizedForAgents: false }, ); /** - * Anthropic's Claude 3.5 Sonnet V2 model, optimized for Bedrock Agents. - * Offers improved performance and reliability over V1. + * Anthropic's Claude 3.5 Sonnet V2 model, optimized for agent interactions. + * Enhanced version with improved performance and capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: Agent-based applications, complex dialogue */ public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V2_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-sonnet-20241022-v2:0', @@ -287,8 +375,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude 3.5 Sonnet V1 model, with cross-region support. - * Balances performance and resource usage for general-purpose tasks. + * Anthropic's Claude 3.5 Sonnet V1 model, balanced performance model. + * Offers good balance between performance and efficiency. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: General language tasks, balanced performance */ public static readonly ANTHROPIC_CLAUDE_3_5_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-sonnet-20240620-v1:0', @@ -296,8 +390,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude 3.5 Haiku model, a lightweight version optimized for speed. - * Ideal for applications requiring quick responses with good accuracy. + * Anthropic's Claude 3.5 Haiku model, optimized for quick responses. + * Lightweight model focused on speed and efficiency. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: Fast responses, lightweight processing */ public static readonly ANTHROPIC_CLAUDE_3_5_HAIKU_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-5-haiku-20241022-v1:0', @@ -305,8 +405,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude Opus model, their most advanced model for complex tasks. - * Provides highest quality outputs with enhanced reasoning capabilities. + * Anthropic's Claude Opus model, designed for advanced tasks. + * High-performance model with extensive capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Optimized for agents + * - Best for: Complex reasoning, research, and analysis */ public static readonly ANTHROPIC_CLAUDE_OPUS_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-opus-20240229-v1:0', @@ -314,8 +419,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude Sonnet model, a legacy version with agent optimization. - * Provides reliable performance for general language tasks. + * Anthropic's Claude Sonnet model, legacy version. + * Balanced model for general-purpose tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Legacy model with EOL date + * - Best for: General language tasks, standard applications */ public static readonly ANTHROPIC_CLAUDE_SONNET_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-sonnet-20240229-v1:0', @@ -323,8 +434,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude Haiku model, optimized for fast inference. - * Suitable for applications requiring quick responses with good quality. + * Anthropic's Claude Haiku model, optimized for efficiency. + * Fast and efficient model for lightweight tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Optimized for agents + * - Best for: Quick responses, simple tasks */ public static readonly ANTHROPIC_CLAUDE_HAIKU_V1_0 = new BedrockFoundationModel( 'anthropic.claude-3-haiku-20240307-v1:0', @@ -332,8 +449,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude V2.1 model, a legacy version with enhanced capabilities. - * Provides reliable performance for a wide range of language tasks. + * Anthropic's Claude V2.1 model, legacy version. + * Improved version of Claude V2 with enhanced capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Legacy model with EOL date + * - Optimized for agents + * - Best for: General language tasks, legacy applications */ public static readonly ANTHROPIC_CLAUDE_V2_1 = new BedrockFoundationModel( 'anthropic.claude-v2:1', @@ -345,8 +468,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Anthropic's Claude V2 model, a legacy version of their general-purpose model. - * Suitable for a wide range of language understanding and generation tasks. + * Anthropic's Claude V2 model, legacy version. + * Original Claude V2 model with broad capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Legacy model with EOL date + * - Optimized for agents + * - Best for: General language tasks, legacy applications */ public static readonly ANTHROPIC_CLAUDE_V2 = new BedrockFoundationModel('anthropic.claude-v2', { supportsAgents: true, @@ -355,8 +484,14 @@ export class BedrockFoundationModel implements IInvokable { }); /** - * Anthropic's Claude Instant V1.2 model, a legacy fast-inference version. - * Optimized for quick responses while maintaining good output quality. + * Anthropic's Claude Instant V1.2 model, legacy version. + * Fast and efficient model optimized for quick responses. + * + * Features: + * - Supports Bedrock Agents integration + * - Legacy model with EOL date + * - Optimized for agents + * - Best for: Quick responses, simple tasks, legacy applications */ public static readonly ANTHROPIC_CLAUDE_INSTANT_V1_2 = new BedrockFoundationModel( 'anthropic.claude-instant-v1', @@ -370,9 +505,16 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * COHERE ***************************************************************************/ + /** - * Cohere's English embedding model, optimized for English text. - * Generates 1024-dimensional vectors with support for both floating-point and binary types. + * Cohere's English embedding model, optimized for English text embeddings. + * Specialized for semantic understanding of English content. + * + * Features: + * - Supports Knowledge Base integration + * - 1024-dimensional vectors + * - Supports both floating-point and binary vectors + * - Best for: English text embeddings, semantic search, content similarity */ public static readonly COHERE_EMBED_ENGLISH_V3 = new BedrockFoundationModel( 'cohere.embed-english-v3', @@ -384,8 +526,14 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Cohere's multilingual embedding model, supporting multiple languages. - * Generates 1024-dimensional vectors with support for both floating-point and binary types. + * Cohere's Multilingual embedding model, supporting multiple languages. + * Enables semantic understanding across different languages. + * + * Features: + * - Supports Knowledge Base integration + * - 1024-dimensional vectors + * - Supports both floating-point and binary vectors + * - Best for: Cross-lingual embeddings, multilingual semantic search */ public static readonly COHERE_EMBED_MULTILINGUAL_V3 = new BedrockFoundationModel( 'cohere.embed-multilingual-v3', @@ -398,24 +546,33 @@ export class BedrockFoundationModel implements IInvokable { /**************************************************************************** * DEEPSEEK ***************************************************************************/ + /** - * Deepseek's R1 model, offering advanced language capabilities. - * Supports cross-region deployment and Bedrock Agents integration. + * Deepseek's R1 model, designed for general language understanding. + * Balanced model for various language tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: General language tasks, content generation */ - public static readonly DEEPSEEK_R1_V1 = new BedrockFoundationModel( - 'deepseek.r1-v1:0', - { - supportsAgents: true, - supportsCrossRegion: true, - }, - ); + public static readonly DEEPSEEK_R1_V1 = new BedrockFoundationModel('deepseek.r1-v1:0', { + supportsAgents: true, + supportsCrossRegion: true, + }); /**************************************************************************** * META ***************************************************************************/ + /** - * Meta's Llama 3 1.8B instruction-tuned model, a lightweight version. - * Suitable for tasks requiring quick responses with good accuracy. + * Meta's Llama 3 1.8B Instruct model, compact instruction-following model. + * Efficient model optimized for instruction-based tasks. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Lightweight instruction processing, quick responses */ public static readonly META_LLAMA_3_1_8B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-1-8b-instruct-v1:0', @@ -426,8 +583,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 3 70B instruction-tuned model, their largest model. - * Provides high-quality outputs for complex language tasks. + * Meta's Llama 3 70B Instruct model, large-scale instruction model. + * High-capacity model for complex language understanding. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Complex instructions, advanced language tasks */ public static readonly META_LLAMA_3_1_70B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-1-70b-instruct-v1:0', @@ -438,8 +600,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 3 11B instruction-tuned model, a mid-sized version. - * Balances performance and resource usage for general tasks. + * Meta's Llama 3.2 11B Instruct model, mid-sized instruction model. + * Balanced model for general instruction processing. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: General instruction tasks, balanced performance */ public static readonly META_LLAMA_3_2_11B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-11b-instruct-v1:0', @@ -450,8 +617,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 3 3B instruction-tuned model, optimized for efficiency. - * Suitable for applications requiring fast inference. + * Meta's Llama 3.2 3B Instruct model, compact efficient model. + * Lightweight model for basic instruction processing. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Basic instructions, efficient processing */ public static readonly META_LLAMA_3_2_3B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-3b-instruct-v1:0', @@ -462,8 +634,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 3 1B instruction-tuned model, their most compact version. - * Ideal for resource-constrained environments. + * Meta's Llama 3.2 1B Instruct model, ultra-lightweight model. + * Most compact model in the Llama 3.2 series. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Simple instructions, fastest response times */ public static readonly META_LLAMA_3_2_1B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-2-1b-instruct-v1:0', @@ -474,8 +651,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 3.3 70B instruction-tuned model, latest large version. - * Offers enhanced capabilities with cross-region support. + * Meta's Llama 3.3 70B Instruct model, latest large-scale model. + * Advanced model with enhanced capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Complex reasoning, advanced language tasks */ public static readonly META_LLAMA_3_3_70B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama3-3-70b-instruct-v1:0', @@ -486,8 +668,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 4 Maverick 70B instruction-tuned model, their most advanced model. - * Provides state-of-the-art performance for complex language tasks with cross-region support. + * Meta's Llama 4 Maverick 17B Instruct model, innovative mid-sized model. + * Specialized for creative and dynamic responses. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Creative tasks, innovative solutions */ public static readonly META_LLAMA_4_MAVERICK_17B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama4-maverick-17b-instruct-v1:0', @@ -498,8 +685,13 @@ export class BedrockFoundationModel implements IInvokable { ); /** - * Meta's Llama 4 Scout 17B instruction-tuned model, a mid-sized efficient model. - * Balances performance and resource usage with cross-region support. + * Meta's Llama 4 Scout 17B Instruct model, analytical mid-sized model. + * Focused on precise and analytical responses. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Analytical tasks, precise responses */ public static readonly META_LLAMA_4_SCOUT_17B_INSTRUCT_V1 = new BedrockFoundationModel( 'meta.llama4-scout-17b-instruct-v1:0', @@ -508,11 +700,123 @@ export class BedrockFoundationModel implements IInvokable { supportsCrossRegion: true, }, ); + /**************************************************************************** + * MISTRAL AI + ***************************************************************************/ + + /** + * Mistral's 7B Instruct model, efficient instruction-following model. + * Balanced performance for instruction processing. + * + * Features: + * - Supports Bedrock Agents integration + * - Optimized for instruction tasks + * - Best for: General instruction processing, balanced performance + */ + public static readonly MISTRAL_7B_INSTRUCT_V0 = new BedrockFoundationModel( + 'mistral.mistral-7b-instruct-v0:2', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: false, + }, + ); + + /** + * Mistral's Mixtral 8x7B Instruct model, mixture-of-experts architecture. + * Advanced model combining multiple expert networks. + * + * Features: + * - Supports Bedrock Agents integration + * - Specialized expert networks + * - Best for: Complex tasks, diverse language understanding + */ + public static readonly MISTRAL_MIXTRAL_8X7B_INSTRUCT_V0 = new BedrockFoundationModel( + 'mistral.mixtral-8x7b-instruct-v0:1', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: false, + }, + ); + + /** + * Mistral's Small 2402 model, compact efficient model. + * Optimized for quick responses and efficiency. + * + * Features: + * - Supports Bedrock Agents integration + * - Efficient processing + * - Best for: Quick responses, basic language tasks + */ + public static readonly MISTRAL_SMALL_2402_V1 = new BedrockFoundationModel( + 'mistral.mistral-small-2402-v1:0', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: false, + }, + ); + + /** + * Mistral's Large 2402 model, high-capacity language model. + * Advanced model for complex language understanding. + * + * Features: + * - Supports Bedrock Agents integration + * - Enhanced language capabilities + * - Best for: Complex reasoning, detailed analysis + */ + public static readonly MISTRAL_LARGE_2402_V1 = new BedrockFoundationModel( + 'mistral.mistral-large-2402-v1:0', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: false, + }, + ); + + /** + * Mistral's Large 2407 model, updated large-scale model. + * Enhanced version with improved capabilities. + * + * Features: + * - Supports Bedrock Agents integration + * - Advanced language processing + * - Best for: Sophisticated language tasks, complex analysis + */ + public static readonly MISTRAL_LARGE_2407_V1 = new BedrockFoundationModel( + 'mistral.mistral-large-2407-v1:0', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: false, + }, + ); + + /** + * Mistral's Pixtral Large 2502 model, specialized large model. + * Advanced model with cross-region support. + * + * Features: + * - Supports Bedrock Agents integration + * - Cross-region support + * - Best for: Advanced language tasks, distributed applications + */ + public static readonly MISTRAL_PIXTRAL_LARGE_2502_V1 = new BedrockFoundationModel( + 'mistral.pixtral-large-2502-v1:0', + { + supportsAgents: true, + optimizedForAgents: false, + supportsCrossRegion: true, + }, + ); /** - * Creates a BedrockFoundationModel from a CDK FoundationModelIdentifier. - * @param modelId The foundation model identifier - * @param props Optional properties for the model + * Creates a BedrockFoundationModel from a FoundationModelIdentifier. + * Use this method when you have a model identifier from the CDK. + * @param modelId - The foundation model identifier + * @param props - Optional properties for the model * @returns A new BedrockFoundationModel instance */ public static fromCdkFoundationModelId( @@ -521,11 +825,11 @@ export class BedrockFoundationModel implements IInvokable { ): BedrockFoundationModel { return new BedrockFoundationModel(modelId.modelId, props); } - /** - * Creates a BedrockFoundationModel from a CDK FoundationModel. - * @param modelId The foundation model - * @param props Optional properties for the model + * Creates a BedrockFoundationModel from a FoundationModel. + * Use this method when you have a foundation model from the CDK. + * @param modelId - The foundation model + * @param props - Optional properties for the model * @returns A new BedrockFoundationModel instance */ public static fromCdkFoundationModel( @@ -545,38 +849,43 @@ export class BedrockFoundationModel implements IInvokable { /** * The ARN of the foundation model. + * Format: arn:${Partition}:bedrock:${Region}::foundation-model/${ResourceId} */ public readonly modelArn: string; /** * The ARN used for invoking the model. + * This is the same as modelArn for foundation models. */ public readonly invokableArn: string; /** - * Whether this model can be used with Bedrock Agents. + * Whether this model supports integration with Bedrock Agents. + * When true, the model can be used with Bedrock Agents for automated task execution. */ public readonly supportsAgents: boolean; /** * Whether this model supports cross-region inference. + * When true, the model can be used with Cross-Region Inference Profiles. */ public readonly supportsCrossRegion: boolean; /** - * The dimensionality of vectors produced by this model. + * The dimensionality of the vector embeddings produced by this model. * Only applicable for embedding models. */ public readonly vectorDimensions?: number; /** - * Whether this model can be used with Bedrock Knowledge Base. + * Whether this model supports integration with Bedrock Knowledge Base. + * When true, the model can be used for knowledge base operations. */ public readonly supportsKnowledgeBase: boolean; /** - * The vector types supported by this model. - * Only applicable for embedding models. + * The vector types supported by this model for embeddings. + * Defines whether the model supports floating-point or binary vectors. */ public readonly supportedVectorType?: VectorType[]; constructor(value: string, props: BedrockFoundationModelProps = {}) { @@ -606,21 +915,14 @@ export class BedrockFoundationModel implements IInvokable { * Returns the ARN of the foundation model in the following format: * `arn:${Partition}:bedrock:${Region}::foundation-model/${ResourceId}` */ - asArn(construct: IConstruct): string { - if (construct) { - } + asArn(): string { return this.modelArn; } /** - * Returns this foundation model as an IModel interface. - * This allows using the model with APIs that expect an IModel. - * @param construct The scope in which to create any required resources - * @returns This foundation model as an IModel + * Returns the IModel */ - asIModel(construct: IConstruct): IModel { - if (construct) { - } + asIModel(): IModel { return this; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts new file mode 100644 index 0000000000000..a5cdcd7a2778c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts @@ -0,0 +1,141 @@ +import { Stack } from 'aws-cdk-lib'; +import { Template } from 'aws-cdk-lib/assertions'; +import { Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; +import { BedrockFoundationModel, VectorType } from '../models'; + +describe('BedrockFoundationModel', () => { + test('creates model with default properties', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1'); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(false); + expect(model.supportsCrossRegion).toBe(false); + expect(model.supportsKnowledgeBase).toBe(false); + expect(model.vectorDimensions).toBeUndefined(); + expect(model.supportedVectorType).toBeUndefined(); + }); + + test('creates model with custom properties', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1', { + supportsAgents: true, + supportsCrossRegion: true, + supportsKnowledgeBase: true, + vectorDimensions: 1024, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(true); + expect(model.supportsCrossRegion).toBe(true); + expect(model.supportsKnowledgeBase).toBe(true); + expect(model.vectorDimensions).toBe(1024); + expect(model.supportedVectorType).toEqual([VectorType.FLOATING_POINT, VectorType.BINARY]); + }); + + test('formats model ARN correctly', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1'); + + // THEN + expect(model.asArn()).toMatch(/arn:aws:bedrock:\w+::foundation-model\/test\.model-v1/); + }); + + test('grants invoke permissions', () => { + // GIVEN + const stack = new Stack(); + const role = new Role(stack, 'TestRole', { + assumedBy: new ServicePrincipal('lambda.amazonaws.com'), + }); + const model = new BedrockFoundationModel('test.model-v1'); + + // WHEN + model.grantInvoke(role); + + // THEN + const template = Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: [ + 'bedrock:InvokeModel*', + 'bedrock:GetFoundationModel', + ], + Effect: 'Allow', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':bedrock:', + { Ref: 'AWS::Region' }, + '::foundation-model/test.model-v1', + ], + ], + }, + }, + ], + }, + }); + }); + + test('grants invoke permissions for all regions', () => { + // GIVEN + const stack = new Stack(); + const role = new Role(stack, 'TestRole', { + assumedBy: new ServicePrincipal('lambda.amazonaws.com'), + }); + const model = new BedrockFoundationModel('test.model-v1'); + + // WHEN + model.grantInvokeAllRegions(role); + + // THEN + const template = Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: [ + 'bedrock:InvokeModel*', + 'bedrock:GetFoundationModel', + ], + Effect: 'Allow', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':bedrock:*::foundation-model/test.model-v1', + ], + ], + }, + }, + ], + }, + }); + }); + + test('static model instances are configured correctly', () => { + // Test a few representative models + expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.modelId).toBe('amazon.titan-text-express-v1'); + expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.supportsAgents).toBe(true); + + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.modelId).toBe('anthropic.claude-v2'); + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.supportsAgents).toBe(true); + + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.modelId).toBe('cohere.embed-english-v3'); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportsKnowledgeBase).toBe(true); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.vectorDimensions).toBe(1024); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportedVectorType).toEqual([ + VectorType.FLOATING_POINT, + VectorType.BINARY, + ]); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/package.json b/packages/@aws-cdk/aws-bedrock-alpha/package.json index b6d61c985a270..41425242c9cdf 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/package.json +++ b/packages/@aws-cdk/aws-bedrock-alpha/package.json @@ -16,8 +16,8 @@ } }, "dotnet": { - "namespace": "Amazon.CDK.Aws.Bedrock.Alpha", - "packageId": "Amazon.CDK.Aws.Bedrock.Alpha", + "namespace": "Amazon.CDK.AWS.Bedrock.Alpha", + "packageId": "Amazon.CDK.AWS.Bedrock.Alpha", "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png" }, "python": { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json b/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json deleted file mode 100644 index 6d202934fdbaa..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/tsconfig.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "compilerOptions": { - "declarationMap": false, - "inlineSourceMap": true, - "inlineSources": true, - "alwaysStrict": true, - "declaration": true, - "experimentalDecorators": true, - "incremental": true, - "lib": [ - "es2020" - ], - "module": "commonjs", - "noEmitOnError": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "strictNullChecks": true, - "strictPropertyInitialization": true, - "stripInternal": false, - "target": "es2020", - "composite": true, - "tsBuildInfoFile": "tsconfig.tsbuildinfo" - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "node_modules" - ], - "references": [ - { - "path": "../../aws-cdk-lib" - }, - { - "path": "../../../tools/@aws-cdk/cdk-build-tools" - }, - { - "path": "../../../tools/@aws-cdk/pkglint" - }, - { - "path": "../integ-tests-alpha" - } - ], - "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore" -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index cf6a1143b6003..0000000000000 --- a/yarn.lock +++ /dev/null @@ -1,14730 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@actions/core@^1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172" - integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A== - dependencies: - "@actions/exec" "^1.1.1" - "@actions/http-client" "^2.0.1" - -"@actions/exec@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" - integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== - dependencies: - "@actions/io" "^1.0.1" - -"@actions/github@^5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb" - integrity sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g== - dependencies: - "@actions/http-client" "^2.0.1" - "@octokit/core" "^3.6.0" - "@octokit/plugin-paginate-rest" "^2.17.0" - "@octokit/plugin-rest-endpoint-methods" "^5.13.0" - -"@actions/http-client@^2.0.1": - version "2.2.3" - resolved "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674" - integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA== - dependencies: - tunnel "^0.0.6" - undici "^5.25.4" - -"@actions/io@^1.0.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" - integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@aws-cdk/asset-awscli-v1@^2.2.229": - version "2.2.229" - resolved "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.229.tgz#39bf5b70f1e1334031d1333ba42fe755cacbb441" - integrity sha512-apNt/Sfty7Jwi1+6hrZaQeVisqnJAW4+uQZI55VPKtBqjTFEsKPBc/KZDx9Tlw8Ii1yWrS3HNzLNGxpTXae8XQ== - -"@aws-cdk/asset-node-proxy-agent-v6@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" - integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== - -"@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": - version "0.0.0" - -"@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": - version "0.0.0" - -"@aws-cdk/aws-service-spec@0.1.62": - version "0.1.62" - resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.62.tgz#7cb5f186f9805206ac7718f75d4c537d7727dc0d" - integrity sha512-E6jCjAHagp0OfGfTfGae/kctceuzLyJ+DuWLrmh/dTGVobUVdtObFLCE5X5u7LK2xq0YI9RRsC9pEJtAmD9bmw== - dependencies: - "@aws-cdk/service-spec-types" "^0.0.128" - "@cdklabs/tskb" "^0.0.3" - -"@aws-cdk/aws-service-spec@^0.1.68": - version "0.1.68" - resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.68.tgz#1bff6732a69b3ec060644bb912b7bff051a07cb7" - integrity sha512-03LcUVIuJxxfae+8Z5cRCsy4GhdGROJOGwn0zIU7aQ8AKV6/EJ0w0BMeDm5Siy4TbCQZgvAyZIkSqUpjwOA5tQ== - dependencies: - "@aws-cdk/service-spec-types" "^0.0.134" - "@cdklabs/tskb" "^0.0.3" - -"@aws-cdk/cloud-assembly-schema@^41.0.0": - version "41.0.0" - resolved "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-41.0.0.tgz#0d6fc77dd22d78f181a462b89f769497c3898065" - integrity sha512-Jgs3gelFN0Ghr5tbAhPxRsf78jKLGrMbUno4nXTGz3QiPkFqfrq0kodxmKP/IVSp55A5I3CsJ5QErQTit39GdA== - dependencies: - jsonschema "~1.4.1" - semver "^7.7.1" - -"@aws-cdk/integ-runner@^2.186.0": - version "2.186.0" - resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.0.tgz#87f2868ea291265c90f626364442f9fb1b783e8c" - integrity sha512-TOQow5gtcJCiF/R3LEfSS4f8OXojxtXKUrv9fDr9yW95t9m8R6QEJDDtz0QCw+QNlxmHknevlGAapWwfK/ZV8w== - dependencies: - "@aws-cdk/aws-service-spec" "0.1.62" - aws-cdk "2.1006.0" - optionalDependencies: - fsevents "2.3.2" - -"@aws-cdk/lambda-layer-kubectl-v24@^2.0.242": - version "2.0.242" - resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v24/-/lambda-layer-kubectl-v24-2.0.242.tgz#4273a5ad7714f933a7eba155eb9280823086db71" - integrity sha512-7/wIOo685tmrEe4hh6zqDELhBZh5OQGf3Hd2FU2Vnwy2ZubW8qTmEw5gqJCsCrGKeYDoa1BcVhDRZ/nzjkaqyA== - -"@aws-cdk/lambda-layer-kubectl-v29@^2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v29/-/lambda-layer-kubectl-v29-2.1.1.tgz#8160f2a6658d3c6832f5bfa0d81184bfe9cd776b" - integrity sha512-6CChfYXbV8jDIEhUrF2oxXUJPYjXRjt4d6D3Tck9z9wd1jN17juOHTetompVJCDYWfqrXYWT2gK8PEc9pqJojg== - -"@aws-cdk/lambda-layer-kubectl-v30@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v30/-/lambda-layer-kubectl-v30-2.0.4.tgz#fdde8426a02d730b7d3a990a3a439e096370e179" - integrity sha512-zhi8pZA+NS+irgWdPOqK+O++qk3moOAoG4kv+VEVWC9G2p+dZX51VheKxawqPF9IwAZnQ2kmVGs7PgrsVIsDWQ== - -"@aws-cdk/lambda-layer-kubectl-v31@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v31/-/lambda-layer-kubectl-v31-2.0.3.tgz#6b457c9a8836e6b010a8aad9d9515089174c5bbd" - integrity sha512-nmpFLK3539UsZmXdO9Ni+e2samRCT6HIIOgPgIVgbiYy8etV+5w+oan4ZAcfwI53L9w1cINQLQZiCkXdh43CMw== - -"@aws-cdk/lambda-layer-kubectl-v32@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v32/-/lambda-layer-kubectl-v32-2.1.0.tgz#6b9beb4b6b09af74ec48f0c778e50732d7bbb54b" - integrity sha512-a+zvCLapTg8R0P/Nrecc8mKV+ZgAwvkndn4/zlb43e14zRlc4/ozvmeghUT2eoyyaWJv+PwqgWohEXXec3kpSw== - -"@aws-cdk/service-spec-importers@^0.0.76": - version "0.0.76" - resolved "https://registry.npmjs.org/@aws-cdk/service-spec-importers/-/service-spec-importers-0.0.76.tgz#5dbace907c58369f3891b4a55e8e6972934d95c4" - integrity sha512-0LE7P3W5UNaMsBQmEv1QTPCxfQ2FCcmI9U8njRBffBYKY+VjGslnot5lUIuTi8YIE8/2uTug2m9ZiZKfsTn+iw== - dependencies: - "@aws-cdk/service-spec-types" "^0.0.134" - "@cdklabs/tskb" "^0.0.3" - ajv "^6" - canonicalize "^2.1.0" - chalk "^4" - commander "^11.1.0" - fast-json-patch "^3.1.1" - fs-extra "^11.3.0" - glob "^8" - sort-json "^2.0.1" - -"@aws-cdk/service-spec-types@^0.0.128": - version "0.0.128" - resolved "https://registry.npmjs.org/@aws-cdk/service-spec-types/-/service-spec-types-0.0.128.tgz#7f84406311664e08523501885b4e28d0e8e34f26" - integrity sha512-wAYyf6xiYXObUR/f83iSd8cQ4TgDuk7h909wgmTMIIWxId1NJGw8o0TvInYjHP0GtXIFGoHoeO2efKsp72YbBw== - dependencies: - "@cdklabs/tskb" "^0.0.3" - -"@aws-cdk/service-spec-types@^0.0.134": - version "0.0.134" - resolved "https://registry.npmjs.org/@aws-cdk/service-spec-types/-/service-spec-types-0.0.134.tgz#e9debe8ea9cd4036c875f2f47f8358d8d3a73a5d" - integrity sha512-xA0F1OLu6Art6XCmddamuW7X5yXOg9SISCOdgb4EqNrXiTm+lnOBR4HFx7sxdA+iUXRgWGEfUk+Syc3ymO5UvQ== - dependencies: - "@cdklabs/tskb" "^0.0.3" - -"@aws-crypto/crc32@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" - integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== - dependencies: - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - tslib "^2.6.2" - -"@aws-crypto/crc32c@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" - integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== - dependencies: - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - tslib "^2.6.2" - -"@aws-crypto/sha1-browser@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" - integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== - dependencies: - "@aws-crypto/supports-web-crypto" "^5.2.0" - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@smithy/util-utf8" "^2.0.0" - tslib "^2.6.2" - -"@aws-crypto/sha256-browser@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" - integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== - dependencies: - "@aws-crypto/sha256-js" "^5.2.0" - "@aws-crypto/supports-web-crypto" "^5.2.0" - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@smithy/util-utf8" "^2.0.0" - tslib "^2.6.2" - -"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" - integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== - dependencies: - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - tslib "^2.6.2" - -"@aws-crypto/supports-web-crypto@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" - integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== - dependencies: - tslib "^2.6.2" - -"@aws-crypto/util@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" - integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== - dependencies: - "@aws-sdk/types" "^3.222.0" - "@smithy/util-utf8" "^2.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-account@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-account/-/client-account-3.632.0.tgz#ca4abada7c0a9073a73512af96e19d54c99363f2" - integrity sha512-dnOw27v5Gz1MuIkv/0OKAOSUshYROACIlK94WibWo4mCEKxrc5bW1OeE00p1tcMm9l5Mhl6IYSoUwVaziUhTLA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-acm@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-acm/-/client-acm-3.632.0.tgz#a476d9964a2c06060e14f69e6afb0ba8a227ef54" - integrity sha512-uPsDoJFmFTJXTSJ8Dmi1u901Drss9CXsxRHX+kUp30A92HK4C7LbnmUh0gHaXM4OgFeRbklrGNbqQr6AxRRKBA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-amplify@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-amplify/-/client-amplify-3.632.0.tgz#9960f36c282de8f78e5582c57a7eaba54eccd975" - integrity sha512-ktlje4aC+R1ZgmJzITeGm17YkBEPPPOim+HnHpyu5+W5k55LaQ9q2uHM0wcNrNCu6BwN3jJ2s2+v+z7jT2GQuw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-cloudwatch-logs@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.632.0.tgz#53355665b04a2131a80bcaba7a3f88ecf6c7c929" - integrity sha512-QrG04Ss2/KDsvGmoBH9QHjaC/wx7Gf9U2F5o8gYbHVU5ZGDW+zMX2Sj/6jjSyZ4qLD4sxK7sRHwK+fYA21OQQA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-cloudwatch@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.632.0.tgz#865a01e2eea926d80caeec7b461c126c5f51b7b5" - integrity sha512-RIItCf874T8aiE17yikJ6VcARvRv/sn86WMpyJCN0+aUMSOB8X86OHe7KCUN72EkvFKeWXim808RPpS8fZLXKw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-compression" "^3.0.7" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-codepipeline@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-codepipeline/-/client-codepipeline-3.632.0.tgz#c09564b38aea90001767aa3640e4456bdc7a28a0" - integrity sha512-5Cl8W/tG7k/sGmEEst2NY9o9ID2bTvdaPLT0ICpi8Ehq8K17Q79nMKgSzBGvgkQv6lvYxgsdFU3Cv0lkcXw75Q== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-cognito-identity-provider@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.632.0.tgz#076e0a62ee24c02d2bebbfef3f33e4ebcd1c2512" - integrity sha512-RP9L/LKu3qwXT6z+eq8tjOb4kpT2JiQYi483pVg85jf1PiIB+aoPA0Dbre7f+b7Wpo3FyPIlFqKuHzqhPWZvfQ== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-cognito-identity@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.632.0.tgz#9b8b95885e21eecce2593f7a8f45ec5828ddf0be" - integrity sha512-ciPZZ0jxMmXuaKCVdJthWogfqJ/4nb1zCxm7D/XkKcSbANjAiJ+1l+yiu7ZPTLGKKPRQQkPsWUknw5xb/5LxeQ== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-dynamodb@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.632.0.tgz#c1980d0ec06f8663b795043c5436e94060ac7b80" - integrity sha512-Y7u/B/lyLdLZBrBSXjYZviyck0e3dZLL/Va6HIShNlDG8FyWuArefWr57/bu9Q8smdqpEduldprSRSWI7MPykg== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-endpoint-discovery" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-ec2@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ec2/-/client-ec2-3.632.0.tgz#291c496fbef8b1f3e166470e7dffff8911e3e53b" - integrity sha512-hjXIfn5OEISL5rous2G5N3/YgcBMwsKgwKZgrHissJjH/HralJIqQVCjxcE7X6diopgsbX0Lj/EbxkX2eudH/A== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-ec2" "3.622.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-ecr@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.632.0.tgz#cf6d09e55e50c1a864c4b7fb34b9fc24e5b0b8cc" - integrity sha512-J5EvnmMz3JCoQbhNIwSX7H4Ojrwndoh/xd/3rzehSBMSONARfl6RM5tWCxlDDR9cObnL6I503aoCxbP1LRwILw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-ecs@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.632.0.tgz#1f346349cfadb88c473ce63a547bfb80d288adc8" - integrity sha512-g1euXlFQ99CScMb9Tn9baGoNxRoeJclm+cDv7jf//F/eZCUCQq7Iah2dlOR2nZkrjpWAY3dvQ3MwVEB1z662Sg== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-eks@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-eks/-/client-eks-3.632.0.tgz#c9dff3f2d59ca1b46ea220937efb93ddc5cc389d" - integrity sha512-ax8XRTThlIYicCOxOZ0zViVpMJrR3XVN9/MtQUtO1thHxFiSdcw74qFXEYsB/rM4FpzWvFIWVx5lMLoBWmb1wQ== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-iam@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.632.0.tgz#43ee70a7957d4b77b68279205b64679146f81363" - integrity sha512-iwivASUliVxCEbT/mu5s03SCyqQKNXbJUpG17ywT4taA2xvLisGRI5iNV3OYT1qDmK9DOLMSJYpeX2GWCijPxw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-kinesis@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.632.0.tgz#c22b2e652409626c993d0fd1997a47d1709d7cb0" - integrity sha512-4CVhckeqvpWKATFwKdwysbnaJY9e9+zmJnnH8fQqqfOqijoH2KNkygPCFoiRKwYl+UHl99KDu1Vt8+/3M490Ug== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-kms@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.632.0.tgz#c917414a017c83294f6ee27a51a2191dfa6bb1e0" - integrity sha512-uMm1fAIdImaBKwKXnpcD1cpRlTAbLisbRbNJqzJdH+snN0jAkukLNUMUheb0XKaczk7eQrp5w4inlWrRvEmjSA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-lambda@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.632.0.tgz#6e31acb2f4484d61ade5928eba329a1e45f27354" - integrity sha512-vF4KRuHGr6EfW+dssm56S6b+jAa8dKqdWduHNms1TQFah0iOkjc9Dpo4p4j6bobZcuricGko/OZy9ynb1Dwldg== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-rds@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-rds/-/client-rds-3.632.0.tgz#ff8a78b81c8a58930c1f80db77ddfee4efdb5242" - integrity sha512-dKltgfhjPjeRQc3DLQQGFKUpW7Cnr/oyh8iDNP20EPQww6f7rif3KPmShiXBp/PAkYmXeaWqu6MSsoC3PTyMqA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-rds" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-redshift-data@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-redshift-data/-/client-redshift-data-3.632.0.tgz#0412f25f42eacd8986af3164603c1f8f52a8868b" - integrity sha512-Hphh1/OwlZhIRvrxjFX/6p+tRKlXSc2Uvkv6q/ekkHth9otZg5BUei/vLXzbixQiCKVhay60EYn4ecd/6jPAsA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-redshift@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-redshift/-/client-redshift-3.632.0.tgz#2671660fc7a3108eef97ddd189bb2ecccfef6cf5" - integrity sha512-+3/D4TvIHlFVyFbWey3a2eu1LUAtQFMHMSaKm37b+qWi8lM1ME2nocUC/4n8wKR0XRhHUF5sDFbXZVF0jk2GhA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-route-53@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.632.0.tgz#3c6a7eb2bac2701411f8a9b4bf56461d8a03471f" - integrity sha512-BEMRHWxmXBzWlnCuW1rTaqYHUSGPDMpQbZdsC7dCuVcYdIBwKfJrPe1HtvT0+6W/KkDQqxoEgKrl47+Jzl06qw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-route53" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-s3@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.632.0.tgz#8a22b393f9fd469b1fbd006f60d18d4e039a6846" - integrity sha512-GlhLo/t/E9w3EG3ZhFsSeSM3op2lfhc1LrLMXHFsmH1xIPkjIoxV+aHYIenuF7b/MGgMQDOjf07QeQNXfAr1gg== - dependencies: - "@aws-crypto/sha1-browser" "5.2.0" - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.629.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/eventstream-serde-browser" "^3.0.6" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.5" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - -"@aws-sdk/client-secrets-manager@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.632.0.tgz#821b28489da90229a8718ba1d7bc3d9a7ba694e1" - integrity sha512-WsQhPHHK1yPfALcP1B7nBSGDzky6vFTUEXnUdfzb5Xy2cT+JTBTS6ChtQGqqOuGHDP/3t/9soqZ+L6rUCYBb/Q== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-sfn@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.632.0.tgz#6b4fd93ad9adb4619d322dbf73478ff90ff2f971" - integrity sha512-LPaMqALuArGX1Y5N3tHX4lNlZabsqgfGJZjwyLTHawqiGNDMlMqOUg4Dl0e2Ies8yvMjs//YXtMWz26x24cGkQ== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-ssm@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.632.0.tgz#4997995530e40dd45b8883ddd66e20dd4c6a3bf8" - integrity sha512-p9QZguhC6NB6CQTFgLcYhU1yhGF7SN9kDMtFwtFBxTPO/SQJ/PJcEyL40yXPbuPUXFtT/YRhT9mIwQagfkXzAA== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" - tslib "^2.6.2" - uuid "^9.0.1" - -"@aws-sdk/client-sso-oidc@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz#38d0b11980f0716c85e63acf2bce0ac1e6ccc9b5" - integrity sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-sso@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz#cc7d7c7578ba34d3689574dc015a0a71b35872e1" - integrity sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-sts@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz#dc0e9d9958752f620adbe9783fb8ba2f2f915463" - integrity sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-synthetics@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-synthetics/-/client-synthetics-3.632.0.tgz#a3abdd36e431952d6c1a26b2cdbe0c94d38277fd" - integrity sha512-Ce1CXIDuoa8x6EH3tmrSUtzGzyJaNF5mTb9OA1rnaBYBOS3ObIROSB/JIe+wvod7B92s4PTZ2wvCur3DzwQSaw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/core" "3.629.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.632.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.2" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.14" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.14" - "@smithy/util-defaults-mode-node" "^3.0.14" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/core@3.629.0": - version "3.629.0" - resolved "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz#1ed02c657edcd22ffdce9b3b5bdbd2a36fe899aa" - integrity sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ== - dependencies: - "@smithy/core" "^2.3.2" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - fast-xml-parser "4.4.1" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-cognito-identity@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.632.0.tgz#f2db006faf4f81aed366b793845d036ac3054e09" - integrity sha512-fr+xCIqMYsUD67vwE/IpboIqHiEYMQMrpPjnvpbbvyjTKspFh0GS7Qn1LVFCd5oNeu1rzAdJei1On2HBOwIiZQ== - dependencies: - "@aws-sdk/client-cognito-identity" "3.632.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-http@3.622.0": - version "3.622.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz#db481fdef859849d07dd5870894f45df2debab3d" - integrity sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-ini@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz#55c2aa6e59fb9f19cf4e9c1e4ebf70235de32930" - integrity sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.622.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.632.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-node@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz#33a21d722b620c6a9cc43c38981cba69345e251f" - integrity sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.622.0" - "@aws-sdk/credential-provider-ini" "3.632.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.632.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-sso@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz#c217b853fd7d00511f3f14accdd3bf27ec4426a6" - integrity sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA== - dependencies: - "@aws-sdk/client-sso" "3.632.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/credential-providers@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.632.0.tgz#5556914f3ffa6d01e312a2fc6410749bf2d50ac0" - integrity sha512-Q4x2ARdgncZKOJE/NXJHY5s8/YDRugVUR4lBEtibE764w5ezAhI1aMChzAzv4j3WMSDZ29KyxaymHHt2vJED9g== - dependencies: - "@aws-sdk/client-cognito-identity" "3.632.0" - "@aws-sdk/client-sso" "3.632.0" - "@aws-sdk/client-sts" "3.632.0" - "@aws-sdk/credential-provider-cognito-identity" "3.632.0" - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.622.0" - "@aws-sdk/credential-provider-ini" "3.632.0" - "@aws-sdk/credential-provider-node" "3.632.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.632.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/endpoint-cache@3.572.0": - version "3.572.0" - resolved "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz#414970b764db207eba4d93228363d61af33ea03b" - integrity sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q== - dependencies: - mnemonist "0.38.3" - tslib "^2.6.2" - -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-config-provider" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-endpoint-discovery@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" - integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== - dependencies: - "@aws-sdk/endpoint-cache" "3.572.0" - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== - dependencies: - "@aws-crypto/crc32" "5.2.0" - "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" - "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-sdk-ec2@3.622.0": - version "3.622.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-ec2/-/middleware-sdk-ec2-3.622.0.tgz#dc25d26d404344ec0d94e6d897baf849ec9f0718" - integrity sha512-rVShV+eB1vovLuvlzUEFuxZB4yxSMFzyP+VNIoFxtSZh0LWh7+7bNLwp1I9Vq3SxHLMVYQevjm7nkiPM0DG+RQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-format-url" "3.609.0" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-sdk-rds@3.620.0": - version "3.620.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-rds/-/middleware-sdk-rds-3.620.0.tgz#6157eab60a7f015dac99f7bf8626dc15bb6f4185" - integrity sha512-pokuq3rMJfn8ZNUIhAKn0c1nQtvClPLzh5h1fOXAeRXmNjp+YPXQ4CIsGRcqDNO8lkUyyfV42WnPCdUZmR9zAA== - dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-format-url" "3.609.0" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-sdk-route53@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.609.0.tgz#285fcd97c3d479b4f5d09a66bf3cde04465dfd8b" - integrity sha512-lw0WdzAJS8puQeJNeyOeEfRtG2C91yFBj8IXWmwm7r+QqnZtDork0uiZYFt1Br24dOxZiFefxLCehjSoyr8fVQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-sdk-s3@3.629.0": - version "3.629.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.629.0.tgz#10ad7b8af945f915d31f00cec0198248be95291c" - integrity sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A== - dependencies: - "@aws-sdk/core" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/core" "^2.3.2" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-stream" "^3.1.3" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-user-agent@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz#274bbf2789268f30c1ff2ef20c395c9dc4f91c96" - integrity sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.632.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@aws-sdk/s3-request-presigner@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.632.0.tgz#ee05b0844fafc6c5f8afb17e3d543a2c8c0c73ff" - integrity sha512-gvN37+14lOE9bX8hz2ztJa8W37FgkNQiMTH72Mzmkaw8qeILUkB74nzq9JdRKJxB9QIWeWs7PeUP+8zUapuMrQ== - dependencies: - "@aws-sdk/signature-v4-multi-region" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-format-url" "3.609.0" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.12" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/signature-v4-multi-region@3.629.0": - version "3.629.0" - resolved "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.629.0.tgz#ca75443f3324fd398d228c3cba0f4275e7bb4a3a" - integrity sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg== - dependencies: - "@aws-sdk/middleware-sdk-s3" "3.629.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== - dependencies: - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/types@^3.222.0": - version "3.775.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.775.0.tgz#09863a9e68c080947db7c3d226d1c56b8f0f5150" - integrity sha512-ZoGKwa4C9fC9Av6bdfqcW6Ix5ot05F/S4VxWR2nHuMv7hzfmAjTOcUiWT7UR4hM/U0whf84VhDtXN/DWAk52KA== - dependencies: - "@smithy/types" "^4.2.0" - tslib "^2.6.2" - -"@aws-sdk/util-arn-parser@3.568.0": - version "3.568.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" - integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== - dependencies: - tslib "^2.6.2" - -"@aws-sdk/util-endpoints@3.632.0": - version "3.632.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz#f8716bdc75fc322babc6a3faf943ee1d0e462124" - integrity sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" - tslib "^2.6.2" - -"@aws-sdk/util-format-url@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz#f53907193bb636b52b61c81bbe6d7bd5ddc76c68" - integrity sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/util-locate-window@^3.0.0": - version "3.723.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.723.0.tgz#174551bfdd2eb36d3c16e7023fd7e7ee96ad0fa9" - integrity sha512-Yf2CS10BqK688DRsrKI/EO6B8ff5J86NXe4C+VCysK7UOgN0l1zOTeTukZ3H8Q9tYYX3oaF1961o8vRkFm7Nmw== - dependencies: - tslib "^2.6.2" - -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - bowser "^2.11.0" - tslib "^2.6.2" - -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== - dependencies: - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/compat-data@^7.26.8": - version "7.26.8" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.23.9", "@babel/core@^7.7.5": - version "7.26.10" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" - integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.7.2": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c" - integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== - dependencies: - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-compilation-targets@^7.26.5": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" - integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== - dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-validator-option" "^7.25.9" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.27.0": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz#518fad6a307c6a96f44af14912b2c20abe9bfc30" - integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.27.0" - semver "^6.3.1" - -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.26.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== - -"@babel/helper-replace-supers@^7.26.5": - version "7.26.5" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" - integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.26.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== - -"@babel/helpers@^7.26.10": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" - integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== - dependencies: - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" - -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" - integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== - dependencies: - "@babel/types" "^7.27.0" - -"@babel/plugin-proposal-class-properties@^7.13.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-flow@^7.26.0": - version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz#96507595c21b45fccfc2bc758d5c45452e6164fa" - integrity sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.26.0" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-import-meta@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.25.9", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.25.9", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-transform-flow-strip-types@^7.25.9": - version "7.26.5" - resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz#2904c85a814e7abb1f4850b8baf4f07d0a2389d4" - integrity sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/plugin-syntax-flow" "^7.26.0" - -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.26.3": - version "7.26.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== - dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-transform-typescript@^7.27.0": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz#a29fd3481da85601c7e34091296e9746d2cccba8" - integrity sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.27.0" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-syntax-typescript" "^7.25.9" - -"@babel/preset-flow@^7.13.13": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.9.tgz#ef8b5e7e3f24a42b3711e77fb14919b87dffed0a" - integrity sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-transform-flow-strip-types" "^7.25.9" - -"@babel/preset-typescript@^7.13.0": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz#4dcb8827225975f4290961b0b089f9c694ca50c7" - integrity sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-typescript" "^7.27.0" - -"@babel/register@^7.13.16": - version "7.25.9" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz#1c465acf7dc983d70ccc318eb5b887ecb04f021b" - integrity sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.6" - source-map-support "^0.5.16" - -"@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.3.3": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" - integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.27.0" - "@babel/types" "^7.27.0" - -"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.27.0": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" - integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.27.0" - "@babel/parser" "^7.27.0" - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.27.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" - integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@balena/dockerignore@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" - integrity sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q== - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cdklabs/eslint-plugin@^1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@cdklabs/eslint-plugin/-/eslint-plugin-1.3.2.tgz#9a37485e0c94cd13a9becdd69791d4ff1dc1c515" - integrity sha512-PWh8MOKgPOYRGRdd/eiPS93F4B/pahhHsNAtLderZ2XtaxfipE55AfSeiXRde2B4OUIYoIRh02b+On+3HZurTQ== - dependencies: - fs-extra "^11.3.0" - -"@cdklabs/tskb@^0.0.3": - version "0.0.3" - resolved "https://registry.npmjs.org/@cdklabs/tskb/-/tskb-0.0.3.tgz#4b79846d9381eb1252ba85d5d20b7cd7d99b6ecb" - integrity sha512-JR+MuD4awAXvutu7HArephXfZm09GPTaSAQUqNcJB5+ZENRm4kV+L6vJL6Tn1xHjCcHksO+HAqj3gYtm5K94vA== - -"@cdklabs/typewriter@^0.0.5": - version "0.0.5" - resolved "https://registry.npmjs.org/@cdklabs/typewriter/-/typewriter-0.0.5.tgz#edbec5c2e6dd45c803154d7e521ca38746a08d89" - integrity sha512-gLp7s9bhHOIN9SN6jhdVi3cLp0YisMkvn4Ct3KeqySR7H1Q5nytKvV0NWUC1FrdNsPoKvulUFIGtqbwCFZt9NQ== - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@emnapi/core@^1.1.0": - version "1.3.1" - resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz#9c62d185372d1bddc94682b87f376e03dfac3f16" - integrity sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog== - dependencies: - "@emnapi/wasi-threads" "1.0.1" - tslib "^2.4.0" - -"@emnapi/runtime@^1.1.0": - version "1.3.1" - resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" - integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== - dependencies: - tslib "^2.4.0" - -"@emnapi/wasi-threads@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz#d7ae71fd2166b1c916c6cd2d0df2ef565a2e1a5b" - integrity sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw== - dependencies: - tslib "^2.4.0" - -"@es-joy/jsdoccomment@~0.49.0": - version "0.49.0" - resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz#e5ec1eda837c802eca67d3b29e577197f14ba1db" - integrity sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q== - dependencies: - comment-parser "1.4.1" - esquery "^1.6.0" - jsdoc-type-pratt-parser "~4.1.0" - -"@esbuild/aix-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz#c33cf6bbee34975626b01b80451cbb72b4c6c91d" - integrity sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ== - -"@esbuild/android-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz#ea766015c7d2655164f22100d33d7f0308a28d6d" - integrity sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA== - -"@esbuild/android-arm@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz#e84d2bf2fe2e6177a0facda3a575b2139fd3cb9c" - integrity sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q== - -"@esbuild/android-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz#58337bee3bc6d78d10425e5500bd11370cfdfbed" - integrity sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw== - -"@esbuild/darwin-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz#a46805c1c585d451aa83be72500bd6e8495dd591" - integrity sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ== - -"@esbuild/darwin-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz#0643e003bb238c63fc93ddbee7d26a003be3cd98" - integrity sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA== - -"@esbuild/freebsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz#cff18da5469c09986b93e87979de5d6872fe8f8e" - integrity sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A== - -"@esbuild/freebsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz#362fc09c2de14987621c1878af19203c46365dde" - integrity sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww== - -"@esbuild/linux-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz#aa90d5b02efc97a271e124e6d1cea490634f7498" - integrity sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ== - -"@esbuild/linux-arm@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz#dfcefcbac60a20918b19569b4b657844d39db35a" - integrity sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ== - -"@esbuild/linux-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz#6f9527077ccb7953ed2af02e013d4bac69f13754" - integrity sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ== - -"@esbuild/linux-loong64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz#287d2412a5456e5860c2839d42a4b51284d1697c" - integrity sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg== - -"@esbuild/linux-mips64el@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz#530574b9e1bc5d20f7a4f44c5f045e26f3783d57" - integrity sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg== - -"@esbuild/linux-ppc64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz#5d7e6b283a0b321ea42c6bc0abeb9eb99c1f5589" - integrity sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg== - -"@esbuild/linux-riscv64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz#14fa0cd073c26b4ee2465d18cd1e18eea7859fa8" - integrity sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ== - -"@esbuild/linux-s390x@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz#e677b4b9d1b384098752266ccaa0d52a420dc1aa" - integrity sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ== - -"@esbuild/linux-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz#f1c796b78fff5ce393658313e8c58613198d9954" - integrity sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA== - -"@esbuild/netbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz#0d280b7dfe3973f111b02d5fe9f3063b92796d29" - integrity sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g== - -"@esbuild/netbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz#be663893931a4bb3f3a009c5cc24fa9681cc71c0" - integrity sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA== - -"@esbuild/openbsd-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz#d9021b884233673a05dc1cc26de0bf325d824217" - integrity sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg== - -"@esbuild/openbsd-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz#9f1dc1786ed2e2938c404b06bcc48be9a13250de" - integrity sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw== - -"@esbuild/sunos-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz#89aac24a4b4115959b3f790192cf130396696c27" - integrity sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg== - -"@esbuild/win32-arm64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz#354358647a6ea98ea6d243bf48bdd7a434999582" - integrity sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ== - -"@esbuild/win32-ia32@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz#8cea7340f2647eba951a041dc95651e3908cd4cb" - integrity sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A== - -"@esbuild/win32-x64@0.25.1": - version "0.25.1" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz#7d79922cb2d88f9048f06393dbf62d2e4accb584" - integrity sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.5.1" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c" - integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": - version "4.12.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.1": - version "8.57.1" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" - integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== - -"@extra-number/significant-digits@^1.1.1": - version "1.3.9" - resolved "https://registry.npmjs.org/@extra-number/significant-digits/-/significant-digits-1.3.9.tgz#06f3acc4aa688af3ed76bf5f30bca6de9d60883f" - integrity sha512-E5PY/bCwrNqEHh4QS6AQBinLZ+sxM1lT8tsSVYk8VwhWIPp6fCU/BMRVq0V8iJ8LwS3FHmaA4vUzb78s4BIIyA== - -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - -"@gar/promisify@^1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@humanwhocodes/config-array@^0.13.0": - version "0.13.0" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" - integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== - dependencies: - "@humanwhocodes/object-schema" "^2.0.3" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@isaacs/string-locale-compare@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" - integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jsii/check-node@1.106.0": - version "1.106.0" - resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.106.0.tgz#5deb20b0bbe0a506c4bd9edf60b17b0a93f83834" - integrity sha512-/T/TUsbHdEbZRFR4Rem9+UXVvgMYncEkrIeC52oIHJ8BDSgqlDsIARio/Eu5DOftF4avSLV/sshR6n19mpK1oA== - dependencies: - chalk "^4.1.2" - semver "^7.6.3" - -"@jsii/check-node@1.107.0": - version "1.107.0" - resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.107.0.tgz#359099573cf47e3d2f7be19172fbe49e3e2d11a7" - integrity sha512-ud21048xxEVbbzjFlE7GQSuypW7/8P6Dyu+jjTwp6wGFbnbpxZiupIMdp6eSVSqo9M3rC14SyjNq2liXoSYBZg== - dependencies: - chalk "^4.1.2" - semver "^7.6.3" - -"@jsii/check-node@1.110.0": - version "1.110.0" - resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.110.0.tgz#668188d5a7dd46faedbea45a67064a810c7f1cd4" - integrity sha512-JX8MV6j/ZScaxq4flcBfS4oHD+Fe4AMPUdlZ1xKm4VKwhoxV729dmC2m6XTad7tnipq5YhDAOS3HQgqFtpRlDA== - dependencies: - chalk "^4.1.2" - semver "^7.7.1" - -"@jsii/spec@1.110.0", "@jsii/spec@^1.106.0", "@jsii/spec@^1.107.0", "@jsii/spec@^1.110.0": - version "1.110.0" - resolved "https://registry.npmjs.org/@jsii/spec/-/spec-1.110.0.tgz#0d8af08fdc57e79514291c909a23d0437124f107" - integrity sha512-qJBcIf5VJL+xDloImTkIfJIdXkhSnM46gqF73pwLahCwJQit0TwC8a659+aseCoAxF2+b0cnM0nzmoM+BWh2VA== - dependencies: - ajv "^8.17.1" - -"@lerna/create@8.2.1": - version "8.2.1" - resolved "https://registry.npmjs.org/@lerna/create/-/create-8.2.1.tgz#b9c34b9fbd75035418244e33cf197523a2e10a6e" - integrity sha512-Cz2u/fwc03D1EE6VFZCLMmI8FIUtGmxHQ3ECeNblsxv9i0YSKWe4Xm18sjO1xltG/K5ByiH8/HMeY9dlyAv22A== - dependencies: - "@npmcli/arborist" "7.5.4" - "@npmcli/package-json" "5.2.0" - "@npmcli/run-script" "8.1.0" - "@nx/devkit" ">=17.1.2 < 21" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "20.1.2" - aproba "2.0.0" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.3" - color-support "1.1.3" - columnify "1.6.0" - console-control-strings "^1.1.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "9.0.0" - dedent "1.5.3" - execa "5.0.0" - fs-extra "^11.2.0" - get-stream "6.0.0" - git-url-parse "14.0.0" - glob-parent "6.0.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - ini "^1.3.8" - init-package-json "6.0.3" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - js-yaml "4.1.0" - libnpmpublish "9.0.9" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "11.0.2" - npm-packlist "8.0.2" - npm-registry-fetch "^17.1.0" - nx ">=17.1.2 < 21" - p-map "4.0.0" - p-map-series "2.1.0" - p-queue "6.6.2" - p-reduce "^2.1.0" - pacote "^18.0.6" - pify "5.0.0" - read-cmd-shim "4.0.0" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.4" - set-blocking "^2.0.0" - signal-exit "3.0.7" - slash "^3.0.0" - ssri "^10.0.6" - string-width "^4.2.3" - strong-log-transformer "2.1.0" - tar "6.2.1" - temp-dir "1.0.0" - upath "2.0.1" - uuid "^10.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "5.0.1" - wide-align "1.1.5" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== - dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" - -"@lerna/project@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== - dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== - dependencies: - npmlog "^4.1.2" - -"@napi-rs/wasm-runtime@0.2.4": - version "0.2.4" - resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" - integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== - dependencies: - "@emnapi/core" "^1.1.0" - "@emnapi/runtime" "^1.1.0" - "@tybys/wasm-util" "^0.9.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@npmcli/agent@^2.0.0": - version "2.2.2" - resolved "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" - integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== - dependencies: - agent-base "^7.1.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.1" - lru-cache "^10.0.1" - socks-proxy-agent "^8.0.3" - -"@npmcli/arborist@7.5.4": - version "7.5.4" - resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" - integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== - dependencies: - "@isaacs/string-locale-compare" "^1.1.0" - "@npmcli/fs" "^3.1.1" - "@npmcli/installed-package-contents" "^2.1.0" - "@npmcli/map-workspaces" "^3.0.2" - "@npmcli/metavuln-calculator" "^7.1.1" - "@npmcli/name-from-folder" "^2.0.0" - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.1.0" - "@npmcli/query" "^3.1.0" - "@npmcli/redact" "^2.0.0" - "@npmcli/run-script" "^8.1.0" - bin-links "^4.0.4" - cacache "^18.0.3" - common-ancestor-path "^1.0.1" - hosted-git-info "^7.0.2" - json-parse-even-better-errors "^3.0.2" - json-stringify-nice "^1.1.4" - lru-cache "^10.2.2" - minimatch "^9.0.4" - nopt "^7.2.1" - npm-install-checks "^6.2.0" - npm-package-arg "^11.0.2" - npm-pick-manifest "^9.0.1" - npm-registry-fetch "^17.0.1" - pacote "^18.0.6" - parse-conflict-json "^3.0.0" - proc-log "^4.2.0" - proggy "^2.0.0" - promise-all-reject-late "^1.0.0" - promise-call-limit "^3.0.1" - read-package-json-fast "^3.0.2" - semver "^7.3.7" - ssri "^10.0.6" - treeverse "^3.0.0" - walk-up-path "^3.0.1" - -"@npmcli/fs@^2.1.0": - version "2.1.2" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" - integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== - dependencies: - "@gar/promisify" "^1.1.3" - semver "^7.3.5" - -"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== - dependencies: - semver "^7.3.5" - -"@npmcli/git@^4.0.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" - integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== - dependencies: - "@npmcli/promise-spawn" "^6.0.0" - lru-cache "^7.4.4" - npm-pick-manifest "^8.0.0" - proc-log "^3.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^3.0.0" - -"@npmcli/git@^5.0.0": - version "5.0.8" - resolved "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" - integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== - dependencies: - "@npmcli/promise-spawn" "^7.0.0" - ini "^4.1.3" - lru-cache "^10.0.1" - npm-pick-manifest "^9.0.0" - proc-log "^4.0.0" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^4.0.0" - -"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" - integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== - dependencies: - npm-bundled "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -"@npmcli/map-workspaces@^3.0.2": - version "3.0.6" - resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" - integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== - dependencies: - "@npmcli/name-from-folder" "^2.0.0" - glob "^10.2.2" - minimatch "^9.0.0" - read-package-json-fast "^3.0.0" - -"@npmcli/metavuln-calculator@^7.1.1": - version "7.1.1" - resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" - integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== - dependencies: - cacache "^18.0.0" - json-parse-even-better-errors "^3.0.0" - pacote "^18.0.0" - proc-log "^4.1.0" - semver "^7.3.5" - -"@npmcli/move-file@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" - integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/name-from-folder@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" - integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== - -"@npmcli/node-gyp@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" - integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== - -"@npmcli/package-json@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" - integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" - -"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": - version "5.2.1" - resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" - integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== - dependencies: - "@npmcli/git" "^5.0.0" - glob "^10.2.2" - hosted-git-info "^7.0.0" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^6.0.0" - proc-log "^4.0.0" - semver "^7.5.3" - -"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": - version "6.0.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" - integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== - dependencies: - which "^3.0.0" - -"@npmcli/promise-spawn@^7.0.0": - version "7.0.2" - resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" - integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== - dependencies: - which "^4.0.0" - -"@npmcli/query@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" - integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== - dependencies: - postcss-selector-parser "^6.0.10" - -"@npmcli/redact@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" - integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== - -"@npmcli/run-script@8.1.0", "@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" - integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/package-json" "^5.0.0" - "@npmcli/promise-spawn" "^7.0.0" - node-gyp "^10.0.0" - proc-log "^4.0.0" - which "^4.0.0" - -"@npmcli/run-script@^6.0.0": - version "6.0.2" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" - integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== - dependencies: - "@npmcli/node-gyp" "^3.0.0" - "@npmcli/promise-spawn" "^6.0.0" - node-gyp "^9.0.0" - read-package-json-fast "^3.0.0" - which "^3.0.0" - -"@nx/devkit@20.6.4", "@nx/devkit@>=17.1.2 < 21": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-20.6.4.tgz#d5b8b9d98c145385df29a5a3fa7d3f3386863d93" - integrity sha512-lyEidfyPhTuHt1X6EsskugBREazS5VOKSPIcreQ8Qt0MaULxn0bQ9o0N6C+BQaw5Zu6RTaMRMWKGW0I0Qni0UA== - dependencies: - ejs "^3.1.7" - enquirer "~2.3.6" - ignore "^5.0.4" - minimatch "9.0.3" - semver "^7.5.3" - tmp "~0.2.1" - tslib "^2.3.0" - yargs-parser "21.1.1" - -"@nx/nx-darwin-arm64@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.6.4.tgz#c26d568d81d2eaebbf2a41c0a45d60bb5101123a" - integrity sha512-urdLFCY0c2X11FBuokSgCktKTma7kjZKWJi8mVO8PbTJh0h2Qtp4l9/px8tv9EHeHuusA18p2Wq3ZM6c95qcBg== - -"@nx/nx-darwin-x64@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.6.4.tgz#7749d5d7de4f2dd127fcc40379d179bacc6c6970" - integrity sha512-nNOXc9ccdsdmylC/InRud/F977ldat2zQuSWfhoI5+9exHIjMo0TNU8gZdT53t3S1OTQKOEbNXZcoEaURb6STA== - -"@nx/nx-freebsd-x64@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.6.4.tgz#88d468112775884255a407363e86cd6df6c8896e" - integrity sha512-jPGzjdB9biMu8N4038qBe0VBfrQ+HDjXfxBhETqrVIJPBfgdxN1I8CXIhCqMPG2CHBAM6kDQCU6QCTMWADJcEw== - -"@nx/nx-linux-arm-gnueabihf@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.6.4.tgz#c0c3a524cee5f204068ccb48fcec486cd914d449" - integrity sha512-j4ekxzZPc5lj+VbaLBpKJl6w2VyFXycLrT65CWQYAj9yqV5dUuDtTR33r50ddLtqQt3PVV5hJAj8+g7sGPXUWQ== - -"@nx/nx-linux-arm64-gnu@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.6.4.tgz#872325ed9dbe9b18227c01a451d1f3c33a9ae54d" - integrity sha512-nYMB4Sh5yI7WbunizZ/mgR21MQgrs77frnAChs+6aPF5HA7N1VGEn3FMKX+ypd3DjTl14zuwB/R5ilwNgKzL+A== - -"@nx/nx-linux-arm64-musl@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.6.4.tgz#ae5810fb316faf764ab03a26da699a86ee10ffc7" - integrity sha512-ukjB1pmBvtinT0zeYJ1lWi7BAw6cDnPQnfXMbyV+afYnNRcgdDFzQaUpo3UUeai69Fo3TTr0SWx6DjMVifxJZw== - -"@nx/nx-linux-x64-gnu@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.6.4.tgz#a8b759494aa7c39bac72b4154952328586aa3ca4" - integrity sha512-+6DloqqB8ZzuZOY4A1PryuPD5hGoxbSafRN++sXUFvKx6mRYNyLGrn5APT3Kiq1qPBxkAxcsreexcu/wsTcrcw== - -"@nx/nx-linux-x64-musl@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.6.4.tgz#12afe0eb1bcd08592d3dc8aed395e24a296fadad" - integrity sha512-+ZuF6dobfGo5EN55syuUEdbYs9qxbLmTkGPMq66X7dZ/jm7kKTsVzDYnf9v3ynQCOq4DMFtdACneL32Ks22+NQ== - -"@nx/nx-win32-arm64-msvc@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.6.4.tgz#12e039b4e2781ca5e1684cd3d9fc7501db1f4e5b" - integrity sha512-z+Y8iwEPZ8L8SISh/tcyqEtAy9Ju6aB5kLe8E/E1Wwzy5DU/jNvqM9Wq4HRPMY0r1S4jzwC6x7W3/fkxeFjZ7A== - -"@nx/nx-win32-x64-msvc@20.6.4": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.6.4.tgz#9ac887aeb5014cecfefe292c0f8cab2231a8d14f" - integrity sha512-9LMVHZQqc1m2Fulvfz1nPZFHUKvFjmU7igxoWJXj/m+q+DyYWEbE710ARK9JtMibLg+xSRfERKOcIy11k6Ro1A== - -"@nx/workspace@^20": - version "20.6.4" - resolved "https://registry.npmjs.org/@nx/workspace/-/workspace-20.6.4.tgz#23d09044979e768458eee431b97655a91453bfef" - integrity sha512-HZK0XTJ1flx9NpAFW8ZVeMRrsAEOc4Bj5ZtBR1aVUSC/IzAGQH4dkVZMXX1oG3vBzhuz+4Ery2mfst1YsJNuxQ== - dependencies: - "@nx/devkit" "20.6.4" - "@zkochan/js-yaml" "0.0.7" - chalk "^4.1.0" - enquirer "~2.3.6" - nx "20.6.4" - picomatch "4.0.2" - tslib "^2.3.0" - yargs-parser "21.1.1" - -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/auth-token@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" - integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== - -"@octokit/core@^3.5.1", "@octokit/core@^3.6.0": - version "3.6.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/core@^5.0.2": - version "5.2.1" - resolved "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz#58c21a5f689ee81e0b883b5aa77573a7ff1b4ea1" - integrity sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ== - dependencies: - "@octokit/auth-token" "^4.0.0" - "@octokit/graphql" "^7.1.0" - "@octokit/request" "^8.4.1" - "@octokit/request-error" "^5.1.1" - "@octokit/types" "^13.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^9.0.6": - version "9.0.6" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz#114d912108fe692d8b139cfe7fc0846dfd11b6c0" - integrity sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw== - dependencies: - "@octokit/types" "^13.1.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== - dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^7.1.0": - version "7.1.1" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz#79d9f3d0c96a8fd13d64186fe5c33606d48b79cc" - integrity sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g== - dependencies: - "@octokit/request" "^8.4.1" - "@octokit/types" "^13.0.0" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== - -"@octokit/openapi-types@^24.2.0": - version "24.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz#3d55c32eac0d38da1a7083a9c3b0cca77924f7d3" - integrity sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== - -"@octokit/plugin-enterprise-rest@6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== - -"@octokit/plugin-paginate-rest@11.4.4-cjs.2": - version "11.4.4-cjs.2" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz#979a10d577bce7a393e8e65953887e42b0a05000" - integrity sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw== - dependencies: - "@octokit/types" "^13.7.0" - -"@octokit/plugin-paginate-rest@^2.16.8", "@octokit/plugin-paginate-rest@^2.17.0": - version "2.21.3" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== - dependencies: - "@octokit/types" "^6.40.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-request-log@^4.0.0": - version "4.0.1" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz#98a3ca96e0b107380664708111864cb96551f958" - integrity sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA== - -"@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1": - version "13.3.2-cjs.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz#d0a142ff41d8f7892b6ccef45979049f51ecaa8d" - integrity sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ== - dependencies: - "@octokit/types" "^13.8.0" - -"@octokit/plugin-rest-endpoint-methods@^5.12.0", "@octokit/plugin-rest-endpoint-methods@^5.13.0": - version "5.16.2" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== - dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" - -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request-error@^5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz#b9218f9c1166e68bb4d0c89b638edc62c9334805" - integrity sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g== - dependencies: - "@octokit/types" "^13.1.0" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/request@^8.4.1": - version "8.4.1" - resolved "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz#715a015ccf993087977ea4365c44791fc4572486" - integrity sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw== - dependencies: - "@octokit/endpoint" "^9.0.6" - "@octokit/request-error" "^5.1.1" - "@octokit/types" "^13.1.0" - universal-user-agent "^6.0.0" - -"@octokit/rest@20.1.2": - version "20.1.2" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz#1d74d0c72ade0d64f7c5416448d5c885f5e3ccc4" - integrity sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA== - dependencies: - "@octokit/core" "^5.0.2" - "@octokit/plugin-paginate-rest" "11.4.4-cjs.2" - "@octokit/plugin-request-log" "^4.0.0" - "@octokit/plugin-rest-endpoint-methods" "13.3.2-cjs.1" - -"@octokit/rest@^18", "@octokit/rest@^18.12.0": - version "18.12.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - -"@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.7.0", "@octokit/types@^13.8.0": - version "13.10.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz#3e7c6b19c0236c270656e4ea666148c2b51fd1a3" - integrity sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== - dependencies: - "@octokit/openapi-types" "^24.2.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== - dependencies: - "@octokit/openapi-types" "^12.11.0" - -"@octokit/webhooks-definitions@^3.68.1": - version "3.68.1" - resolved "https://registry.npmjs.org/@octokit/webhooks-definitions/-/webhooks-definitions-3.68.1.tgz#8e7ff2f10303b4602587e767f5baa3a70a74b4cf" - integrity sha512-wa8koFift24mUsMarWP/wfl9kIwqL5TK9smsCRIyJYfs9iYQEoJsQjcmhyKCmevPA8Ja/K1ZTE4W8ABA0yMM8g== - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.1.0": - version "0.1.2" - resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz#1cf95080bb7072fafaa3cb13b442fab4695c3893" - integrity sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ== - -"@pnpm/config.env-replace@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" - integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== - -"@pnpm/network.ca-file@^1.0.1": - version "1.0.2" - resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" - integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== - dependencies: - graceful-fs "4.2.10" - -"@pnpm/npm-conf@^2.1.0": - version "2.3.1" - resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" - integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== - dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" - config-chain "^1.1.11" - -"@rtsao/scc@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" - integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== - -"@sigstore/bundle@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" - integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - -"@sigstore/bundle@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" - integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - -"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" - integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== - -"@sigstore/protobuf-specs@^0.2.0": - version "0.2.1" - resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" - integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== - -"@sigstore/protobuf-specs@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz#7dd46d68b76c322873a2ef7581ed955af6f4dcde" - integrity sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ== - -"@sigstore/sign@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" - integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - make-fetch-happen "^11.0.1" - -"@sigstore/sign@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" - integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - make-fetch-happen "^13.0.1" - proc-log "^4.2.0" - promise-retry "^2.0.1" - -"@sigstore/tuf@^1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" - integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== - dependencies: - "@sigstore/protobuf-specs" "^0.2.0" - tuf-js "^1.1.7" - -"@sigstore/tuf@^2.3.4": - version "2.3.4" - resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" - integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== - dependencies: - "@sigstore/protobuf-specs" "^0.3.2" - tuf-js "^2.2.1" - -"@sigstore/verify@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" - integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.1.0" - "@sigstore/protobuf-specs" "^0.3.2" - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sindresorhus/is@^5.2.0": - version "5.6.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" - integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== - -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": - version "1.8.6" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@11.2.2": - version "11.2.2" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/fake-timers@^13.0.1": - version "13.0.5" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" - integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== - dependencies: - "@sinonjs/commons" "^3.0.1" - -"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@sinonjs/samsam@^5.3.1": - version "5.3.1" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" - integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== - dependencies: - "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/samsam@^8.0.0": - version "8.0.2" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" - integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== - dependencies: - "@sinonjs/commons" "^3.0.1" - lodash.get "^4.4.2" - type-detect "^4.1.0" - -"@sinonjs/text-encoding@^0.7.1", "@sinonjs/text-encoding@^0.7.3": - version "0.7.3" - resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" - integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== - -"@smithy/abort-controller@^3.1.9": - version "3.1.9" - resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz#47d323f754136a489e972d7fd465d534d72fcbff" - integrity sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/chunked-blob-reader-native@^3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29" - integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ== - dependencies: - "@smithy/util-base64" "^3.0.0" - tslib "^2.6.2" - -"@smithy/chunked-blob-reader@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d" - integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ== - dependencies: - tslib "^2.6.2" - -"@smithy/config-resolver@^3.0.13", "@smithy/config-resolver@^3.0.5": - version "3.0.13" - resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.13.tgz#653643a77a33d0f5907a5e7582353886b07ba752" - integrity sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg== - dependencies: - "@smithy/node-config-provider" "^3.1.12" - "@smithy/types" "^3.7.2" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.11" - tslib "^2.6.2" - -"@smithy/core@^2.3.2", "@smithy/core@^2.5.7": - version "2.5.7" - resolved "https://registry.npmjs.org/@smithy/core/-/core-2.5.7.tgz#b545649071905f064cb0407102f3b9159246f8d9" - integrity sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg== - dependencies: - "@smithy/middleware-serde" "^3.0.11" - "@smithy/protocol-http" "^4.1.8" - "@smithy/types" "^3.7.2" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-middleware" "^3.0.11" - "@smithy/util-stream" "^3.3.4" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/credential-provider-imds@^3.2.0", "@smithy/credential-provider-imds@^3.2.8": - version "3.2.8" - resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz#27ed2747074c86a7d627a98e56f324a65cba88de" - integrity sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw== - dependencies: - "@smithy/node-config-provider" "^3.1.12" - "@smithy/property-provider" "^3.1.11" - "@smithy/types" "^3.7.2" - "@smithy/url-parser" "^3.0.11" - tslib "^2.6.2" - -"@smithy/eventstream-codec@^3.1.10": - version "3.1.10" - resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz#0c1a3457e7a23b71cd71525ceb668f8569a84dad" - integrity sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ== - dependencies: - "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.7.2" - "@smithy/util-hex-encoding" "^3.0.0" - tslib "^2.6.2" - -"@smithy/eventstream-serde-browser@^3.0.6": - version "3.0.14" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz#0c3584c7cde2e210aacdfbbd2b57c1d7e2ca3b95" - integrity sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg== - dependencies: - "@smithy/eventstream-serde-universal" "^3.0.13" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz#5edceba836debea165ea93145231036f6286d67c" - integrity sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/eventstream-serde-node@^3.0.5": - version "3.0.13" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz#5aebd7b553becee277e411a2b69f6af8c9d7b3a6" - integrity sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ== - dependencies: - "@smithy/eventstream-serde-universal" "^3.0.13" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/eventstream-serde-universal@^3.0.13": - version "3.0.13" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz#609c922ea14a0a3eed23a28ac110344c935704eb" - integrity sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw== - dependencies: - "@smithy/eventstream-codec" "^3.1.10" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.9" - resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" - integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== - dependencies: - "@smithy/protocol-http" "^4.1.4" - "@smithy/querystring-builder" "^3.0.7" - "@smithy/types" "^3.5.0" - "@smithy/util-base64" "^3.0.0" - tslib "^2.6.2" - -"@smithy/fetch-http-handler@^4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz#fc590dea2470d32559ae298306f1277729d24aa9" - integrity sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA== - dependencies: - "@smithy/protocol-http" "^4.1.8" - "@smithy/querystring-builder" "^3.0.11" - "@smithy/types" "^3.7.2" - "@smithy/util-base64" "^3.0.0" - tslib "^2.6.2" - -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.10" - resolved "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz#985e308189c2687a15004152b97506882ffb2b13" - integrity sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA== - dependencies: - "@smithy/chunked-blob-reader" "^4.0.0" - "@smithy/chunked-blob-reader-native" "^3.0.1" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/hash-node@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.11.tgz#99e09ead3fc99c8cd7ca0f254ea0e35714f2a0d3" - integrity sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA== - dependencies: - "@smithy/types" "^3.7.2" - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/hash-stream-node@^3.1.2": - version "3.1.10" - resolved "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz#94716b4556f4ccf2807e605f47bb5b018ed7dfb0" - integrity sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q== - dependencies: - "@smithy/types" "^3.7.2" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/invalid-dependency@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz#8144d7b0af9d34ab5f672e1f674f97f8740bb9ae" - integrity sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/is-array-buffer@^2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" - integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== - dependencies: - tslib "^2.6.2" - -"@smithy/is-array-buffer@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a" - integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== - dependencies: - tslib "^2.6.2" - -"@smithy/md5-js@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.11.tgz#27e4dab616348ff94aed24dc75e4017c582df40f" - integrity sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ== - dependencies: - "@smithy/types" "^3.7.2" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/middleware-compression@^3.0.7": - version "3.1.7" - resolved "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.1.7.tgz#db8f3c8feb1fbbf58d10dd1f0881fd05b0addbc4" - integrity sha512-MCv7lz4PRArQ8vjhg6GocI/ARLP/EinzMs7RfVvgXYCEnpg8LULd6fDC3FbIxPpm2qTX7GMttcD98yFEZy7yXg== - dependencies: - "@smithy/core" "^2.5.7" - "@smithy/is-array-buffer" "^3.0.0" - "@smithy/node-config-provider" "^3.1.12" - "@smithy/protocol-http" "^4.1.8" - "@smithy/types" "^3.7.2" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.11" - "@smithy/util-utf8" "^3.0.0" - fflate "0.8.1" - tslib "^2.6.2" - -"@smithy/middleware-content-length@^3.0.5": - version "3.0.13" - resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz#6e08fe52739ac8fb3996088e0f8837e4b2ea187f" - integrity sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw== - dependencies: - "@smithy/protocol-http" "^4.1.8" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/middleware-endpoint@^3.1.0", "@smithy/middleware-endpoint@^3.2.8": - version "3.2.8" - resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz#6ca5de80543ba0f0d40e15dc3f9d0f14d192e06e" - integrity sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ== - dependencies: - "@smithy/core" "^2.5.7" - "@smithy/middleware-serde" "^3.0.11" - "@smithy/node-config-provider" "^3.1.12" - "@smithy/shared-ini-file-loader" "^3.1.12" - "@smithy/types" "^3.7.2" - "@smithy/url-parser" "^3.0.11" - "@smithy/util-middleware" "^3.0.11" - tslib "^2.6.2" - -"@smithy/middleware-retry@^3.0.14": - version "3.0.34" - resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.34.tgz#136c89fc22d70819fdefc51b0d24952cf98883f1" - integrity sha512-yVRr/AAtPZlUvwEkrq7S3x7Z8/xCd97m2hLDaqdz6ucP2RKHsBjEqaUA2ebNv2SsZoPEi+ZD0dZbOB1u37tGCA== - dependencies: - "@smithy/node-config-provider" "^3.1.12" - "@smithy/protocol-http" "^4.1.8" - "@smithy/service-error-classification" "^3.0.11" - "@smithy/smithy-client" "^3.7.0" - "@smithy/types" "^3.7.2" - "@smithy/util-middleware" "^3.0.11" - "@smithy/util-retry" "^3.0.11" - tslib "^2.6.2" - uuid "^9.0.1" - -"@smithy/middleware-serde@^3.0.11", "@smithy/middleware-serde@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz#c7d54e0add4f83e05c6878a011fc664e21022f12" - integrity sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/middleware-stack@^3.0.11", "@smithy/middleware-stack@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz#453af2096924e4064d9da4e053cfdf65d9a36acc" - integrity sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/node-config-provider@^3.1.12", "@smithy/node-config-provider@^3.1.4": - version "3.1.12" - resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz#1b1d674fc83f943dc7b3017e37f16f374e878a6c" - integrity sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ== - dependencies: - "@smithy/property-provider" "^3.1.11" - "@smithy/shared-ini-file-loader" "^3.1.12" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/node-http-handler@3.3.3", "@smithy/node-http-handler@^3.1.4", "@smithy/node-http-handler@^3.3.3": - version "3.3.3" - resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz#94dbb3f15342b656ceba2b26e14aa741cace8919" - integrity sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ== - dependencies: - "@smithy/abort-controller" "^3.1.9" - "@smithy/protocol-http" "^4.1.8" - "@smithy/querystring-builder" "^3.0.11" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/property-provider@^3.1.11", "@smithy/property-provider@^3.1.3": - version "3.1.11" - resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz#161cf1c2a2ada361e417382c57f5ba6fbca8acad" - integrity sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/protocol-http@^4.1.0", "@smithy/protocol-http@^4.1.4", "@smithy/protocol-http@^4.1.8": - version "4.1.8" - resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9" - integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/querystring-builder@^3.0.11", "@smithy/querystring-builder@^3.0.3", "@smithy/querystring-builder@^3.0.7": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz#2ed04adbe725671824c5613d0d6f9376d791a909" - integrity sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg== - dependencies: - "@smithy/types" "^3.7.2" - "@smithy/util-uri-escape" "^3.0.0" - tslib "^2.6.2" - -"@smithy/querystring-parser@^3.0.11": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz#9d3177ea19ce8462f18d9712b395239e1ca1f969" - integrity sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/service-error-classification@^3.0.11": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz#d3d7fc0aacd2e60d022507367e55c7939e5bcb8a" - integrity sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog== - dependencies: - "@smithy/types" "^3.7.2" - -"@smithy/shared-ini-file-loader@^3.1.12", "@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.12" - resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz#d98b1b663eb18935ce2cbc79024631d34f54042a" - integrity sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/signature-v4@^4.1.0": - version "4.2.4" - resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d" - integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA== - dependencies: - "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.8" - "@smithy/types" "^3.7.2" - "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.11" - "@smithy/util-uri-escape" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/smithy-client@^3.1.12", "@smithy/smithy-client@^3.7.0": - version "3.7.0" - resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.7.0.tgz#8cfaa7b68b7af15e588b96aa14e5dce393f85839" - integrity sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA== - dependencies: - "@smithy/core" "^2.5.7" - "@smithy/middleware-endpoint" "^3.2.8" - "@smithy/middleware-stack" "^3.0.11" - "@smithy/protocol-http" "^4.1.8" - "@smithy/types" "^3.7.2" - "@smithy/util-stream" "^3.3.4" - tslib "^2.6.2" - -"@smithy/types@3.5.0", "@smithy/types@3.7.2", "@smithy/types@^3.3.0", "@smithy/types@^3.5.0", "@smithy/types@^3.7.2", "@smithy/types@^4.2.0": - version "3.5.0" - resolved "https://registry.npmjs.org/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" - integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== - dependencies: - tslib "^2.6.2" - -"@smithy/url-parser@^3.0.11", "@smithy/url-parser@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz#e5f5ffabfb6230159167cf4cc970705fca6b8b2d" - integrity sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw== - dependencies: - "@smithy/querystring-parser" "^3.0.11" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/util-base64@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" - integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== - dependencies: - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-body-length-browser@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded" - integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-body-length-node@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d" - integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== - dependencies: - tslib "^2.6.2" - -"@smithy/util-buffer-from@^2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" - integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== - dependencies: - "@smithy/is-array-buffer" "^2.2.0" - tslib "^2.6.2" - -"@smithy/util-buffer-from@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3" - integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== - dependencies: - "@smithy/is-array-buffer" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-config-provider@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe" - integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-defaults-mode-browser@^3.0.14": - version "3.0.34" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.34.tgz#885312529599cf24b09335cb20439c838e452f9f" - integrity sha512-FumjjF631lR521cX+svMLBj3SwSDh9VdtyynTYDAiBDEf8YPP5xORNXKQ9j0105o5+ARAGnOOP/RqSl40uXddA== - dependencies: - "@smithy/property-provider" "^3.1.11" - "@smithy/smithy-client" "^3.7.0" - "@smithy/types" "^3.7.2" - bowser "^2.11.0" - tslib "^2.6.2" - -"@smithy/util-defaults-mode-node@^3.0.14": - version "3.0.34" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.34.tgz#5eb0d97231a34e137980abfb08ea5e3a8f2156f7" - integrity sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw== - dependencies: - "@smithy/config-resolver" "^3.0.13" - "@smithy/credential-provider-imds" "^3.2.8" - "@smithy/node-config-provider" "^3.1.12" - "@smithy/property-provider" "^3.1.11" - "@smithy/smithy-client" "^3.7.0" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/util-endpoints@^2.0.5": - version "2.1.7" - resolved "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz#a088ebfab946a7219dd4763bfced82709894b82d" - integrity sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw== - dependencies: - "@smithy/node-config-provider" "^3.1.12" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/util-hex-encoding@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" - integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-middleware@^3.0.11", "@smithy/util-middleware@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf" - integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow== - dependencies: - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/util-retry@^3.0.11", "@smithy/util-retry@^3.0.3": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.11.tgz#d267e5ccb290165cee69732547fea17b695a7425" - integrity sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ== - dependencies: - "@smithy/service-error-classification" "^3.0.11" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@smithy/util-stream@3.3.4", "@smithy/util-stream@^3.1.3", "@smithy/util-stream@^3.3.4": - version "3.3.4" - resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz#c506ac41310ebcceb0c3f0ba20755e4fe0a90b8d" - integrity sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ== - dependencies: - "@smithy/fetch-http-handler" "^4.1.3" - "@smithy/node-http-handler" "^3.3.3" - "@smithy/types" "^3.7.2" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-uri-escape@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" - integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== - dependencies: - tslib "^2.6.2" - -"@smithy/util-utf8@^2.0.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" - integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== - dependencies: - "@smithy/util-buffer-from" "^2.2.0" - tslib "^2.6.2" - -"@smithy/util-utf8@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a" - integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== - dependencies: - "@smithy/util-buffer-from" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-waiter@^3.1.2": - version "3.2.0" - resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.2.0.tgz#1e52f870e77d2e5572025f7606053e6ff00df93d" - integrity sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg== - dependencies: - "@smithy/abort-controller" "^3.1.9" - "@smithy/types" "^3.7.2" - tslib "^2.6.2" - -"@stylistic/eslint-plugin@^2": - version "2.13.0" - resolved "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz#53bf175dac8c1ec055b370a6ff77d491cae9a70d" - integrity sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ== - dependencies: - "@typescript-eslint/utils" "^8.13.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" - estraverse "^5.3.0" - picomatch "^4.0.2" - -"@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== - dependencies: - defer-to-connect "^2.0.1" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@tootallnate/quickjs-emscripten@^0.23.0": - version "0.23.0" - resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" - integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== - -"@ts-morph/common@~0.25.0": - version "0.25.0" - resolved "https://registry.npmjs.org/@ts-morph/common/-/common-0.25.0.tgz#b76cbd517118acc8eadaf12b2fc2d47f42923452" - integrity sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg== - dependencies: - minimatch "^9.0.4" - path-browserify "^1.0.1" - tinyglobby "^0.2.9" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@tufjs/canonical-json@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" - integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== - -"@tufjs/canonical-json@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" - integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== - -"@tufjs/models@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" - integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== - dependencies: - "@tufjs/canonical-json" "1.0.0" - minimatch "^9.0.0" - -"@tufjs/models@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" - integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== - dependencies: - "@tufjs/canonical-json" "2.0.0" - minimatch "^9.0.4" - -"@tybys/wasm-util@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" - integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== - dependencies: - tslib "^2.4.0" - -"@types/aws-lambda@^8.10.136": - version "8.10.149" - resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" - integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== - -"@types/aws-lambda@^8.10.148": - version "8.10.148" - resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.148.tgz#3a31fc720670473c4d7de4b03d074e8bd97e36a3" - integrity sha512-JL+2cfkY9ODQeE06hOxSFNkafjNk4JRBgY837kpoq1GHDttq2U3BA9IzKOWxS4DLjKoymGB4i9uBrlCkjUl1yg== - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@7.18.2", "@types/babel__traverse@^7.0.6": - version "7.18.2" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309" - integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== - dependencies: - "@babel/types" "^7.3.0" - -"@types/changelog-parser@^2.8.4": - version "2.8.4" - resolved "https://registry.npmjs.org/@types/changelog-parser/-/changelog-parser-2.8.4.tgz#45d70417e742ac3bc6bef3786aa453e1f1d63ecc" - integrity sha512-lCjy5pdZr+PmGMUSnn/z1BPWb3ADiGXjwbKdLa6EnvZ+dY6815Ak65VWstOIq/x3mqEwdvmv+/2ExRElEEcXMw== - -"@types/conventional-commits-parser@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-3.0.2.tgz#144b208c7344838bb045860fe1ddd10d4ae68f7c" - integrity sha512-1kVPUHFaart1iGRFxKn8WNXYEDVAgMb+DLatgql2dGg9jTGf3bNxWtN//C/tDG3ckOLg4u7SSx+qcn8VjzI5zg== - dependencies: - "@types/node" "*" - -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/fs-extra@^9.0.13": - version "9.0.13" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" - integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== - dependencies: - "@types/node" "*" - -"@types/glob@^7.2.0": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-cache-semantics@^4.0.2": - version "4.0.4" - resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" - integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.14": - version "29.5.14" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" - integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/katex@^0.16.0": - version "0.16.7" - resolved "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868" - integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== - -"@types/license-checker@^25.0.6": - version "25.0.6" - resolved "https://registry.npmjs.org/@types/license-checker/-/license-checker-25.0.6.tgz#c346285ee7e42bac58a4922059453f50a5d4175d" - integrity sha512-ju/75+YPkNE5vX1iPer+qtI1eI/LqJVYZgOsmSHI1iiEM1bQL5Gh1lEvyjR9T7ZXVE1FwJa2doWJEEmPNwbZkw== - -"@types/lodash@^4.17.16": - version "4.17.16" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a" - integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g== - -"@types/madge@^5.0.3": - version "5.0.3" - resolved "https://registry.npmjs.org/@types/madge/-/madge-5.0.3.tgz#e6adeb1b9e8c8b41e36341c598c051c6e5cd5464" - integrity sha512-NlQJd0qRAoyu+pawTDhLxkW940QT2dqASfwd2g/xEZu2F4Xjwa7TVRSPdbmZwUF1ygvAh0/nepeN7JjwEuOXCA== - dependencies: - "@types/node" "*" - -"@types/mime-types@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz#93a1933e24fed4fb9e4adc5963a63efcbb3317a2" - integrity sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - -"@types/mock-fs@^4.13.4": - version "4.13.4" - resolved "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.4.tgz#e73edb4b4889d44d23f1ea02d6eebe50aa30b09a" - integrity sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg== - dependencies: - "@types/node" "*" - -"@types/ms@*": - version "2.1.0" - resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== - -"@types/node-fetch@^2.6.12": - version "2.6.12" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" - integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - -"@types/node@*": - version "22.13.13" - resolved "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz#5e7d110fb509b0d4a43fbf48fa9d6e0f83e1b1e7" - integrity sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ== - dependencies: - undici-types "~6.20.0" - -"@types/node@18.11.19": - version "18.11.19" - resolved "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d" - integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw== - -"@types/node@^16": - version "16.18.126" - resolved "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz#27875faa2926c0f475b39a8bb1e546c0176f8d4b" - integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== - -"@types/node@^18", "@types/node@^18.11.9": - version "18.19.83" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.83.tgz#44d302cd09364640bdd45d001bc75e596f7da920" - integrity sha512-D69JeR5SfFS5H6FLbUaS0vE4r1dGhmMBbG4Ed6BNS4wkDK8GZjsdCShT5LCN59vOHEUHnFCY9J4aclXlIphMkA== - dependencies: - undici-types "~5.26.4" - -"@types/node@^18.11.19": - version "18.19.86" - resolved "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b" - integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ== - dependencies: - undici-types "~5.26.4" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - -"@types/prettier@2.6.0": - version "2.6.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== - -"@types/punycode@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@types/punycode/-/punycode-2.1.4.tgz#96f8a47f1ee9fb0d0def5557fe80fac532f966fa" - integrity sha512-trzh6NzBnq8yw5e35f8xe8VTYjqM3NE7bohBtvDVf/dtUer3zYTLK1Ka3DG3p7bdtoaOHZucma6FfVKlQ134pQ== - -"@types/semver-utils@^1.1.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz#f78233e6613e53626844112422845f0f13b573fb" - integrity sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww== - -"@types/semver@^7.7.0": - version "7.7.0" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" - integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== - -"@types/sinon@^17.0.3": - version "17.0.4" - resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz#fd9a3e8e07eea1a3f4a6f82a972c899e5778f369" - integrity sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.5" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" - integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/unist@^2.0.0": - version "2.0.11" - resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" - integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^15.0.19": - version "15.0.19" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz#328fb89e46109ecbdb70c295d96ff2f46dfd01b9" - integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17", "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== - dependencies: - "@types/yargs-parser" "*" - -"@types/yarnpkg__lockfile@^1.1.9": - version "1.1.9" - resolved "https://registry.npmjs.org/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.9.tgz#b3c8e8d66dc8ce79827f422a660a557cda9ded14" - integrity sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q== - -"@typescript-eslint/eslint-plugin@^8": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz#ad1465aa6fe7e937801c291648dec951c4dc38e6" - integrity sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/type-utils" "8.28.0" - "@typescript-eslint/utils" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/parser@^8": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz#85321707e8711c0e66a949ea228224af35f45c98" - integrity sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ== - dependencies: - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/typescript-estree" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@8.28.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz#e495b20438a3787e00498774d5625e620d68f9fe" - integrity sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw== - dependencies: - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - -"@typescript-eslint/type-utils@8.28.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz#fc565414ebc16de1fc65e0dd8652ce02c78ca61f" - integrity sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg== - dependencies: - "@typescript-eslint/typescript-estree" "8.28.0" - "@typescript-eslint/utils" "8.28.0" - debug "^4.3.4" - ts-api-utils "^2.0.1" - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/types@8.28.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz#7c73878385edfd9674c7aa10975e6c484b4f896e" - integrity sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA== - -"@typescript-eslint/typescript-estree@8.28.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz#56b999f26f7ca67b9d75d6a67af5c8b8e4e80114" - integrity sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA== - dependencies: - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/visitor-keys" "8.28.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.0.1" - -"@typescript-eslint/typescript-estree@^4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/utils@8.28.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz#7850856620a896b7ac621ac12d49c282aefbb528" - integrity sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.28.0" - "@typescript-eslint/types" "8.28.0" - "@typescript-eslint/typescript-estree" "8.28.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@8.28.0": - version "8.28.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz#18eb9a25cc9dadb027835c58efe93a5c4ee81969" - integrity sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg== - dependencies: - "@typescript-eslint/types" "8.28.0" - eslint-visitor-keys "^4.2.0" - -"@ungap/structured-clone@^1.2.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== - -"@vitest/expect@>1.6.0": - version "3.0.9" - resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz#b0cb9cd798a131423097cc5a777b699675405fcf" - integrity sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig== - dependencies: - "@vitest/spy" "3.0.9" - "@vitest/utils" "3.0.9" - chai "^5.2.0" - tinyrainbow "^2.0.0" - -"@vitest/pretty-format@3.0.9": - version "3.0.9" - resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz#d9c88fe64b4edcdbc88e5bd92c39f9cc8d40930d" - integrity sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA== - dependencies: - tinyrainbow "^2.0.0" - -"@vitest/spy@3.0.9": - version "3.0.9" - resolved "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz#c3e5d47ceff7c1cb9fdfb9b2f168056bbc625534" - integrity sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ== - dependencies: - tinyspy "^3.0.2" - -"@vitest/utils@3.0.9": - version "3.0.9" - resolved "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz#15da261d8cacd6035dc28a8d3ba38ee39545f82b" - integrity sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng== - dependencies: - "@vitest/pretty-format" "3.0.9" - loupe "^3.1.3" - tinyrainbow "^2.0.0" - -"@xmldom/xmldom@^0.9.7": - version "0.9.8" - resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz#1471e82bdff9e8f20ee8bbe60d4ffa8a516e78d8" - integrity sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A== - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@yarnpkg/parsers@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" - integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== - dependencies: - js-yaml "^3.10.0" - tslib "^2.4.0" - -"@zkochan/js-yaml@0.0.7": - version "0.0.7" - resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" - integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== - dependencies: - argparse "^2.0.1" - -JSONStream@^1.0.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abbrev@1, abbrev@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" - integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.14.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.1.0, agent-base@^7.1.2: - version "7.1.3" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" - integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== - -agentkeepalive@^4.2.1: - version "4.6.0" - resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" - integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== - dependencies: - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1, ajv@^8.17.1: - version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - -ansi-align@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^3.0.3: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== - -app-root-path@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" - integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== - -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - -aproba@2.0.0, "aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -are-docs-informative@^0.0.2: - version "0.0.2" - resolved "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" - integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== - -are-we-there-yet@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" - integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" - integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== - dependencies: - call-bound "^1.0.3" - is-array-buffer "^3.0.5" - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-find-index@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== - -array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.5: - version "1.2.6" - resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" - integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.4" - define-properties "^1.2.1" - es-abstract "^1.23.9" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - es-shim-unscopables "^1.1.0" - -array.prototype.flat@^1.3.2: - version "1.3.3" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" - integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-shim-unscopables "^1.0.2" - -array.prototype.flatmap@^1.3.2: - version "1.3.3" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" - integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-shim-unscopables "^1.0.2" - -arraybuffer.prototype.slice@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" - integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== - dependencies: - array-buffer-byte-length "^1.0.1" - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - is-array-buffer "^3.0.4" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - -ast-module-types@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.7.1.tgz#3f7989ef8dfa1fdb82dfe0ab02bdfc7c77a57dd3" - integrity sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw== - -ast-module-types@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz#9a6d8a80f438b6b8fe4995699d700297f398bf81" - integrity sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ== - -ast-types@^0.13.4: - version "0.13.4" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" - integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== - dependencies: - tslib "^2.0.1" - -ast-types@^0.16.1: - version "0.16.1" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" - integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== - dependencies: - tslib "^2.0.1" - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-function@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" - integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== - -async@^3.2.3: - version "3.2.6" - resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -aws-cdk-lib@^2.188.0: - version "2.189.0" - resolved "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz#b5964f1686215834b9f8497c131901c120355147" - integrity sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw== - dependencies: - "@aws-cdk/asset-awscli-v1" "^2.2.229" - "@aws-cdk/asset-node-proxy-agent-v6" "^2.1.0" - "@aws-cdk/cloud-assembly-schema" "^41.0.0" - "@balena/dockerignore" "^1.0.2" - case "1.6.3" - fs-extra "^11.3.0" - ignore "^5.3.2" - jsonschema "^1.5.0" - mime-types "^2.1.35" - minimatch "^3.1.2" - punycode "^2.3.1" - semver "^7.7.1" - table "^6.9.0" - yaml "1.10.2" - -aws-cdk@2.1006.0: - version "2.1006.0" - resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1006.0.tgz#21fd99184c5b0eea3c5c384fd5c5209e78569508" - integrity sha512-6qYnCt4mBN+3i/5F+FC2yMETkDHY/IL7gt3EuqKVPcaAO4jU7oXfVSlR60CYRkZWL4fnAurUV14RkJuJyVG/IA== - optionalDependencies: - fsevents "2.3.2" - -aws-cdk@2.1007.0: - version "2.1007.0" - resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" - integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== - optionalDependencies: - fsevents "2.3.2" - -aws-sdk-client-mock-jest@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-4.1.0.tgz#40a3bdedd8d551cf2a836b77239038c0ca10e25c" - integrity sha512-+g4a5Hp+MmPqqNnvwfLitByggrqf+xSbk1pm6fBYHNcon6+aQjL5iB+3YB6HuGPemY+/mUKN34iP62S14R61bA== - dependencies: - "@vitest/expect" ">1.6.0" - expect ">28.1.3" - tslib "^2.1.0" - -aws-sdk-client-mock@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz#ae1950b2277f8e65f9a039975d79ff9fffab39e3" - integrity sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw== - dependencies: - "@types/sinon" "^17.0.3" - sinon "^18.0.1" - tslib "^2.1.0" - -aws-sdk-js-codemod@^0.28.2: - version "0.28.2" - resolved "https://registry.npmjs.org/aws-sdk-js-codemod/-/aws-sdk-js-codemod-0.28.2.tgz#26a331ce0073cb0910c6aa0163075fe3bebdf3f3" - integrity sha512-ZWGvBbnWBlxMy1++ac9ytIf9dBeEtXxIuhYBkJLFPVbygHCk4gzZs/LepVsTslPjPlyVtGuoEZwRxVW1g7J62w== - dependencies: - jscodeshift "0.15.0" - -aws-sdk@^2.1692.0: - version "2.1692.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1692.0.tgz#9dac5f7bfcc5ab45825cc8591b12753aa7d2902c" - integrity sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.16.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - util "^0.12.4" - uuid "8.0.0" - xml2js "0.6.2" - -axios@1.8.4, axios@^1.8.3: - version "1.8.4" - resolved "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447" - integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axios@^0.27.2: - version "0.27.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== - dependencies: - follow-redirects "^1.14.9" - form-data "^4.0.0" - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" - integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -backport@8.5.0: - version "8.5.0" - resolved "https://registry.npmjs.org/backport/-/backport-8.5.0.tgz#f37459eaa4272d47efe050b06a22b10209f16d49" - integrity sha512-gX8v+l+BTue2lmmqD/yQiR6JUUY+5OWNZTI1qyusViqC9R2iv4YFPqT23IcJfpYqlYb3DOiwunfVjKLickdQ6g== - dependencies: - "@octokit/rest" "^18.12.0" - axios "^0.27.2" - dedent "^0.7.0" - del "^6.1.1" - dotenv "^16.0.1" - find-up "^5.0.0" - graphql "^16.5.0" - graphql-tag "^2.12.6" - inquirer "^8.2.3" - lodash "^4.17.21" - make-dir "^3.1.0" - ora "^5.4.1" - safe-json-stringify "^1.2.0" - strip-json-comments "^3.1.1" - terminal-link "^2.1.1" - utility-types "^3.10.0" - winston "^3.7.2" - yargs "^17.5.1" - yargs-parser "^21.0.1" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.0.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -basic-ftp@^5.0.2: - version "5.0.5" - resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" - integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== - -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== - -bin-links@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" - integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== - dependencies: - cmd-shim "^6.0.0" - npm-normalize-package-bin "^3.0.0" - read-cmd-shim "^4.0.0" - write-file-atomic "^5.0.0" - -bl@^4.0.3, bl@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@^3.5.0: - version "3.7.2" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bowser@^2.11.0: - version "2.11.0" - resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - -boxen@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" - integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== - dependencies: - ansi-align "^3.0.1" - camelcase "^7.0.1" - chalk "^5.2.0" - cli-boxes "^3.0.0" - string-width "^5.1.2" - type-fest "^2.13.0" - widest-line "^4.0.1" - wrap-ansi "^8.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.24.0: - version "4.24.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== - dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" - node-releases "^2.0.19" - update-browserslist-db "^1.1.1" - -bs-logger@^0.2.6: - version "0.2.6" - resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== - -byte-size@8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" - integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== - -cacache@^16.1.0: - version "16.1.3" - resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" - integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== - dependencies: - "@npmcli/fs" "^2.1.0" - "@npmcli/move-file" "^2.0.0" - chownr "^2.0.0" - fs-minipass "^2.1.0" - glob "^8.0.1" - infer-owner "^1.0.4" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - mkdirp "^1.0.4" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^9.0.0" - tar "^6.1.11" - unique-filename "^2.0.0" - -cacache@^17.0.0: - version "17.1.4" - resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" - integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^7.0.3" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacache@^18.0.0, cacache@^18.0.3: - version "18.0.4" - resolved "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" - integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^10.0.1" - minipass "^7.0.3" - minipass-collect "^2.0.1" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - -cacheable-lookup@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" - integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== - -cacheable-request@^10.2.8: - version "10.2.14" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" - integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== - dependencies: - "@types/http-cache-semantics" "^4.0.2" - get-stream "^6.0.1" - http-cache-semantics "^4.1.1" - keyv "^4.5.3" - mimic-response "^4.0.0" - normalize-url "^8.0.0" - responselike "^3.0.0" - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.7, call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6, camelcase@^6.2.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelcase@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" - integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== - -caniuse-lite@^1.0.30001688: - version "1.0.30001707" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz#c5e104d199e6f4355a898fcd995a066c7eb9bf41" - integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== - -canonicalize@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/canonicalize/-/canonicalize-2.1.0.tgz#92a20ecfb94e96591badf4977dc2fb1bfbc31dc5" - integrity sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ== - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -case@1.6.3, case@^1.6.3: - version "1.6.3" - resolved "https://registry.npmjs.org/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" - integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== - -cdk-generate-synthetic-examples@^0.2.24: - version "0.2.24" - resolved "https://registry.npmjs.org/cdk-generate-synthetic-examples/-/cdk-generate-synthetic-examples-0.2.24.tgz#15f230693ebe829dd9efe2f57986dbf27df541df" - integrity sha512-kbAXVdOJvUtdIOV+RkatrMGudKwHVsTlZfdctSC6y5znhyRD2+BZCeWaBEiNZwSUuQYPyN/efe/uJhbl6WQKRw== - dependencies: - "@jsii/spec" "^1.110.0" - jsii-reflect "^1.110.0" - yargs "^17.7.2" - -cdk-nag@2.28.13: - version "2.28.13" - resolved "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.28.13.tgz#bef1b6c65496d99ef2e110f1a28f5260f9efef80" - integrity sha512-f+fteEq09+N7H2heqls0NcTC+MFcXl6fztEjjpKK0qTo5eFAKmDekEHLRGY5LX8v/JlueoVyhttsjaULNwnoSg== - -cdk8s-plus-27@2.9.5: - version "2.9.5" - resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" - integrity sha512-vZtq6BHIi3wFdzxd8LFmKiWIb3sFjV9kFpJ3bN2sOZiQYHoirN0UUlB04n2YMA7u97wJZPc521ZJGUyDBUhupQ== - dependencies: - minimatch "^3.1.2" - optionalDependencies: - backport "8.5.0" - -cdk8s@2.69.57: - version "2.69.57" - resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.69.57.tgz#4c06c56c2f816061a3f6843671f75139fea34785" - integrity sha512-j7N9CQy4dlqnVophC45RzkWBSXGyUlNo0c9DOkZVB8O+mgP6Yym/KwWdj62fEFeeO8ENeCM7z6BwPLEas9kF1Q== - dependencies: - fast-json-patch "^3.1.1" - follow-redirects "^1.15.9" - yaml "2.7.0" - -chai@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05" - integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== - dependencies: - assertion-error "^2.0.1" - check-error "^2.1.1" - deep-eql "^5.0.1" - loupe "^3.1.0" - pathval "^2.0.0" - -chalk@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.1, chalk@^5.2.0, chalk@^5.3.0: - version "5.4.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" - integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== - -change-case@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - dependencies: - camel-case "^4.1.2" - capital-case "^1.0.4" - constant-case "^3.0.4" - dot-case "^3.0.4" - header-case "^2.0.4" - no-case "^3.0.4" - param-case "^3.0.4" - pascal-case "^3.1.2" - path-case "^3.0.4" - sentence-case "^3.0.4" - snake-case "^3.0.4" - tslib "^2.0.3" - -changelog-parser@^2.8.1: - version "2.8.1" - resolved "https://registry.npmjs.org/changelog-parser/-/changelog-parser-2.8.1.tgz#1428998c275e4f7c0a855026dc60c66cde36bb87" - integrity sha512-tNUYFRCEeWTXmwLqoNtOEzx9wcytg72MmGQqsEs14ClYwIDln7sbQw7FJj/dulXgSlsxkemc9gpPQhZYZx1TPw== - dependencies: - line-reader "^0.2.4" - remove-markdown "^0.2.2" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - -character-reference-invalid@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" - integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-error@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" - integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -ci-info@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" - integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== - -cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" - integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -cli-cursor@3.1.0, cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-table3@^0.6.3: - version "0.6.5" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" - integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== - dependencies: - string-width "^4.2.0" - optionalDependencies: - "@colors/colors" "1.5.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone-deep@4.0.1, clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -cmd-shim@6.0.3, cmd-shim@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" - integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-block-writer@^13.0.3: - version "13.0.3" - resolved "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz#90f8a84763a5012da7af61319dd638655ae90b5b" - integrity sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg== - -codemaker@^1.110.0: - version "1.110.0" - resolved "https://registry.npmjs.org/codemaker/-/codemaker-1.110.0.tgz#15104750d71e2297f310a5dee0c4e769a965dc0f" - integrity sha512-+aIsH91DjT+c0fDG0CqELCpeZJZyj6Lw266B3iLivBOZvJabdP+myoNLdIqCwcUkp0q17MFL27tilWIhy1DuuQ== - dependencies: - camelcase "^6.3.0" - decamelize "^5.0.1" - fs-extra "^10.1.0" - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@1.1.3, color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colors@1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -columnify@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -commander@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - -commander@^2.16.0, commander@^2.20.3, commander@^2.8.1: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -commander@~13.1.0: - version "13.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" - integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== - -comment-parser@1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" - integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== - -common-ancestor-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" - integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -commonmark@^0.31.2: - version "0.31.2" - resolved "https://registry.npmjs.org/commonmark/-/commonmark-0.31.2.tgz#9d8d5439c82c9a235154d858a53e1a7965d573a5" - integrity sha512-2fRLTyb9r/2835k5cwcAwOj0DEc44FARnMp5veGsJ+mEAZdi52sNopLu07ZyElQUz058H43whzlERDIaaSw4rg== - dependencies: - entities "~3.0.1" - mdurl "~1.0.1" - minimist "~1.2.8" - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -config-chain@^1.1.11: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -configstore@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" - integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== - dependencies: - dot-prop "^6.0.1" - graceful-fs "^4.2.6" - unique-string "^3.0.0" - write-file-atomic "^3.0.3" - xdg-basedir "^5.0.1" - -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -constructs@^10.0.0: - version "10.4.2" - resolved "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz#e875a78bef932cca12ea63965969873a25c1c132" - integrity sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA== - -conventional-changelog-angular@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" - integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== - dependencies: - compare-func "^2.0.0" - -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-atom@^2.0.8: - version "2.0.8" - resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" - integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== - dependencies: - q "^1.5.1" - -conventional-changelog-cli@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz#9a7746cede92c6a8f27dc46692efaadfbed60daa" - integrity sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA== - dependencies: - add-stream "^1.0.0" - conventional-changelog "^3.1.24" - lodash "^4.17.15" - meow "^8.0.0" - tempfile "^3.0.0" - -conventional-changelog-codemirror@^2.0.8: - version "2.0.8" - resolved "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" - integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== - dependencies: - q "^1.5.1" - -conventional-changelog-config-spec@2.1.0, conventional-changelog-config-spec@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz#874a635287ef8b581fd8558532bf655d4fb59f2d" - integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== - -conventional-changelog-conventionalcommits@4.6.3, conventional-changelog-conventionalcommits@^4.5.0: - version "4.6.3" - resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" - integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== - dependencies: - compare-func "^2.0.0" - lodash "^4.17.15" - q "^1.5.1" - -conventional-changelog-core@5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" - integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^6.0.0" - conventional-commits-parser "^4.0.0" - dateformat "^3.0.3" - get-pkg-repo "^4.2.1" - git-raw-commits "^3.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^5.0.0" - normalize-package-data "^3.0.3" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - -conventional-changelog-core@^4.2.1: - version "4.2.4" - resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-ember@^2.0.9: - version "2.0.9" - resolved "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" - integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== - dependencies: - q "^1.5.1" - -conventional-changelog-eslint@^3.0.9: - version "3.0.9" - resolved "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" - integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== - dependencies: - q "^1.5.1" - -conventional-changelog-express@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" - integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== - dependencies: - q "^1.5.1" - -conventional-changelog-jquery@^3.0.11: - version "3.0.11" - resolved "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" - integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== - dependencies: - q "^1.5.1" - -conventional-changelog-jshint@^2.0.9: - version "2.0.9" - resolved "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" - integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-preset-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" - integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== - -conventional-changelog-writer@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" - integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== - dependencies: - compare-func "^2.0.0" - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-changelog-writer@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" - integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== - dependencies: - conventional-commits-filter "^3.0.0" - dateformat "^3.0.3" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - meow "^8.1.2" - semver "^7.0.0" - split "^1.0.1" - -conventional-changelog@3.1.25, conventional-changelog@^3.1.24, conventional-changelog@^3.1.25: - version "3.1.25" - resolved "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz#3e227a37d15684f5aa1fb52222a6e9e2536ccaff" - integrity sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ== - dependencies: - conventional-changelog-angular "^5.0.12" - conventional-changelog-atom "^2.0.8" - conventional-changelog-codemirror "^2.0.8" - conventional-changelog-conventionalcommits "^4.5.0" - conventional-changelog-core "^4.2.1" - conventional-changelog-ember "^2.0.9" - conventional-changelog-eslint "^3.0.9" - conventional-changelog-express "^2.0.6" - conventional-changelog-jquery "^3.0.11" - conventional-changelog-jshint "^2.0.9" - conventional-changelog-preset-loader "^2.3.4" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" - integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.1" - -conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-commits-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" - integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== - dependencies: - JSONStream "^1.3.5" - is-text-path "^1.0.1" - meow "^8.1.2" - split2 "^3.2.2" - -conventional-recommended-bump@6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -conventional-recommended-bump@7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" - integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^3.0.0" - conventional-commits-filter "^3.0.0" - conventional-commits-parser "^4.0.0" - git-raw-commits "^3.0.0" - git-semver-tags "^5.0.0" - meow "^8.1.2" - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" - integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== - dependencies: - env-paths "^2.2.1" - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - -cosmiconfig@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" - integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== - dependencies: - type-fest "^1.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -data-uri-to-buffer@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" - integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== - -data-view-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" - integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-data-view "^1.0.2" - -data-view-byte-length@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" - integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-data-view "^1.0.2" - -data-view-byte-offset@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" - integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -date-format@^4.0.14: - version "4.0.14" - resolved "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" - integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== - -dateformat@^3.0.0, dateformat@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6: - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decamelize@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" - integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== - -decode-named-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf" - integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w== - dependencies: - character-entities "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -dedent@1.5.3, dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-eql@^5.0.1: - version "5.0.2" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" - integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-require-extensions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" - integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== - dependencies: - strip-bom "^4.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -degenerator@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" - integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== - dependencies: - ast-types "^0.13.4" - escodegen "^2.1.0" - esprima "^4.0.1" - -del@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - -delay@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -dependency-tree@^8.1.1: - version "8.1.2" - resolved "https://registry.npmjs.org/dependency-tree/-/dependency-tree-8.1.2.tgz#c9e652984f53bd0239bc8a3e50cbd52f05b2e770" - integrity sha512-c4CL1IKxkKng0oT5xrg4uNiiMVFqTGOXqHSFx7XEFdgSsp6nw3AGGruICppzJUrfad/r7GLqt26rmWU4h4j39A== - dependencies: - commander "^2.20.3" - debug "^4.3.1" - filing-cabinet "^3.0.1" - precinct "^8.0.0" - typescript "^3.9.7" - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== - -detect-indent@^6.0.0, detect-indent@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== - -detect-newline@^3.0.0, detect-newline@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detective-amd@^3.1.0: - version "3.1.2" - resolved "https://registry.npmjs.org/detective-amd/-/detective-amd-3.1.2.tgz#bf55eb5291c218b76d6224a3d07932ef13a9a357" - integrity sha512-jffU26dyqJ37JHR/o44La6CxtrDf3Rt9tvd2IbImJYxWKTMdBjctp37qoZ6ZcY80RHg+kzWz4bXn39e4P7cctQ== - dependencies: - ast-module-types "^3.0.0" - escodegen "^2.0.0" - get-amd-module-type "^3.0.0" - node-source-walk "^4.2.0" - -detective-cjs@^3.1.1: - version "3.1.3" - resolved "https://registry.npmjs.org/detective-cjs/-/detective-cjs-3.1.3.tgz#50e107d67b37f459b0ec02966ceb7e20a73f268b" - integrity sha512-ljs7P0Yj9MK64B7G0eNl0ThWSYjhAaSYy+fQcpzaKalYl/UoQBOzOeLCSFEY1qEBhziZ3w7l46KG/nH+s+L7BQ== - dependencies: - ast-module-types "^3.0.0" - node-source-walk "^4.0.0" - -detective-es6@^2.2.0, detective-es6@^2.2.1: - version "2.2.2" - resolved "https://registry.npmjs.org/detective-es6/-/detective-es6-2.2.2.tgz#ee5f880981d9fecae9a694007029a2f6f26d8d28" - integrity sha512-eZUKCUsbHm8xoeoCM0z6JFwvDfJ5Ww5HANo+jPR7AzkFpW9Mun3t/TqIF2jjeWa2TFbAiGaWESykf2OQp3oeMw== - dependencies: - node-source-walk "^4.0.0" - -detective-less@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/detective-less/-/detective-less-1.0.2.tgz#a68af9ca5f69d74b7d0aa190218b211d83b4f7e3" - integrity sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA== - dependencies: - debug "^4.0.0" - gonzales-pe "^4.2.3" - node-source-walk "^4.0.0" - -detective-postcss@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/detective-postcss/-/detective-postcss-4.0.0.tgz#24e69b465e5fefe7a6afd05f7e894e34595dbf51" - integrity sha512-Fwc/g9VcrowODIAeKRWZfVA/EufxYL7XfuqJQFroBKGikKX83d2G7NFw6kDlSYGG3LNQIyVa+eWv1mqre+v4+A== - dependencies: - debug "^4.1.1" - is-url "^1.2.4" - postcss "^8.1.7" - postcss-values-parser "^2.0.1" - -detective-postcss@^5.0.0: - version "5.1.3" - resolved "https://registry.npmjs.org/detective-postcss/-/detective-postcss-5.1.3.tgz#773314cd017621b7d382be81331eb0c7abbe8cc3" - integrity sha512-Wo7PUpF6wqeT1aRgajdyIdDRjFFJVxlXPRAlT1aankH/RVOgrJuEZFZ4ABxYXdzaRPO5Lkg8rHxsxpLnxdJIYA== - dependencies: - is-url "^1.2.4" - postcss "^8.4.6" - postcss-values-parser "^5.0.0" - -detective-sass@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/detective-sass/-/detective-sass-3.0.2.tgz#e0f35aac79a4d2f6409c284d95b8f7ecd5973afd" - integrity sha512-DNVYbaSlmti/eztFGSfBw4nZvwsTaVXEQ4NsT/uFckxhJrNRFUh24d76KzoCC3aarvpZP9m8sC2L1XbLej4F7g== - dependencies: - gonzales-pe "^4.3.0" - node-source-walk "^4.0.0" - -detective-scss@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/detective-scss/-/detective-scss-2.0.2.tgz#7d2a642616d44bf677963484fa8754d9558b8235" - integrity sha512-hDWnWh/l0tht/7JQltumpVea/inmkBaanJUcXRB9kEEXVwVUMuZd6z7eusQ6GcBFrfifu3pX/XPyD7StjbAiBg== - dependencies: - gonzales-pe "^4.3.0" - node-source-walk "^4.0.0" - -detective-stylus@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.3.tgz#20a702936c9fd7d4203fd7a903314b5dd43ac713" - integrity sha512-4/bfIU5kqjwugymoxLXXLltzQNeQfxGoLm2eIaqtnkWxqbhap9puDVpJPVDx96hnptdERzS5Cy6p9N8/08A69Q== - -detective-typescript@^7.0.0: - version "7.0.2" - resolved "https://registry.npmjs.org/detective-typescript/-/detective-typescript-7.0.2.tgz#c6e00b4c28764741ef719662250e6b014a5f3c8e" - integrity sha512-unqovnhxzvkCz3m1/W4QW4qGsvXCU06aU2BAm8tkza+xLnp9SOFnob2QsTxUv5PdnQKfDvWcv9YeOeFckWejwA== - dependencies: - "@typescript-eslint/typescript-estree" "^4.33.0" - ast-module-types "^2.7.1" - node-source-walk "^4.2.0" - typescript "^3.9.10" - -devlop@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -dezalgo@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1, diff@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@~11.0.6: - version "11.0.7" - resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" - integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== - dependencies: - dotenv "^16.4.5" - -dotenv-json@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/dotenv-json/-/dotenv-json-1.0.0.tgz#fc7f672aafea04bed33818733b9f94662332815c" - integrity sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ== - -dotenv@^16.0.1, dotenv@^16.4.5, dotenv@~16.4.5: - version "16.4.7" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" - integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== - -dotenv@^8.0.0: - version "8.6.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -dotgitignore@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" - integrity sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA== - dependencies: - find-up "^3.0.0" - minimatch "^3.0.4" - -downlevel-dts@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/downlevel-dts/-/downlevel-dts-0.11.0.tgz#514a2d723009c5845730c1db6c994484c596ed9c" - integrity sha512-vo835pntK7kzYStk7xUHDifiYJvXxVhUapt85uk2AI94gUUAQX9HNRtrcMHNSc3YHJUEHGbYIGsM99uIbgAtxw== - dependencies: - semver "^7.3.2" - shelljs "^0.8.3" - typescript next - -dunder-proto@^1.0.0, dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ejs@^3.1.10, ejs@^3.1.7: - version "3.1.10" - resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.5.73: - version "1.5.124" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.124.tgz#34b1d6baf8f21d9dbcbae6e67fa276e54554ce81" - integrity sha512-riELkpDUqBi00gqreV3RIGoowxGrfueEKBd6zPdOk/I8lvuFpBGNkYoHof3zUHbiTBsIU8oxdIIL/WNrAG1/7A== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.8.3: - version "5.18.1" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" - integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@~2.3.6: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -entities@~3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -env-paths@^2.2.0, env-paths@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@7.13.0: - version "7.13.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== - -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: - version "1.23.9" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" - integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== - dependencies: - array-buffer-byte-length "^1.0.2" - arraybuffer.prototype.slice "^1.0.4" - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.3" - data-view-buffer "^1.0.2" - data-view-byte-length "^1.0.2" - data-view-byte-offset "^1.0.1" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.1.0" - es-to-primitive "^1.3.0" - function.prototype.name "^1.1.8" - get-intrinsic "^1.2.7" - get-proto "^1.0.0" - get-symbol-description "^1.1.0" - globalthis "^1.0.4" - gopd "^1.2.0" - has-property-descriptors "^1.0.2" - has-proto "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - internal-slot "^1.1.0" - is-array-buffer "^3.0.5" - is-callable "^1.2.7" - is-data-view "^1.0.2" - is-regex "^1.2.1" - is-shared-array-buffer "^1.0.4" - is-string "^1.1.1" - is-typed-array "^1.1.15" - is-weakref "^1.1.0" - math-intrinsics "^1.1.0" - object-inspect "^1.13.3" - object-keys "^1.1.1" - object.assign "^4.1.7" - own-keys "^1.0.1" - regexp.prototype.flags "^1.5.3" - safe-array-concat "^1.1.3" - safe-push-apply "^1.0.0" - safe-regex-test "^1.1.0" - set-proto "^1.0.0" - string.prototype.trim "^1.2.10" - string.prototype.trimend "^1.0.9" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.3" - typed-array-byte-length "^1.0.3" - typed-array-byte-offset "^1.0.4" - typed-array-length "^1.0.7" - unbox-primitive "^1.1.0" - which-typed-array "^1.1.18" - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-module-lexer@^1.5.3: - version "1.6.0" - resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" - integrity sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" - integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== - dependencies: - hasown "^2.0.2" - -es-to-primitive@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" - integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== - dependencies: - is-callable "^1.2.7" - is-date-object "^1.0.5" - is-symbol "^1.0.4" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -esbuild@^0.25.1: - version "0.25.1" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz#a16b8d070b6ad4871935277bda6ccfe852e3fa2f" - integrity sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.1" - "@esbuild/android-arm" "0.25.1" - "@esbuild/android-arm64" "0.25.1" - "@esbuild/android-x64" "0.25.1" - "@esbuild/darwin-arm64" "0.25.1" - "@esbuild/darwin-x64" "0.25.1" - "@esbuild/freebsd-arm64" "0.25.1" - "@esbuild/freebsd-x64" "0.25.1" - "@esbuild/linux-arm" "0.25.1" - "@esbuild/linux-arm64" "0.25.1" - "@esbuild/linux-ia32" "0.25.1" - "@esbuild/linux-loong64" "0.25.1" - "@esbuild/linux-mips64el" "0.25.1" - "@esbuild/linux-ppc64" "0.25.1" - "@esbuild/linux-riscv64" "0.25.1" - "@esbuild/linux-s390x" "0.25.1" - "@esbuild/linux-x64" "0.25.1" - "@esbuild/netbsd-arm64" "0.25.1" - "@esbuild/netbsd-x64" "0.25.1" - "@esbuild/openbsd-arm64" "0.25.1" - "@esbuild/openbsd-x64" "0.25.1" - "@esbuild/sunos-x64" "0.25.1" - "@esbuild/win32-arm64" "0.25.1" - "@esbuild/win32-ia32" "0.25.1" - "@esbuild/win32-x64" "0.25.1" - -escalade@^3.1.1, escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-goat@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" - integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0, escodegen@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" - integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== - dependencies: - debug "^4.3.4" - glob "^7.2.0" - is-glob "^4.0.3" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.31.0: - version "2.31.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== - dependencies: - "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" - hasown "^2.0.2" - is-core-module "^2.15.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.8" - object.groupby "^1.0.3" - object.values "^1.2.0" - semver "^6.3.1" - string.prototype.trimend "^1.0.8" - tsconfig-paths "^3.15.0" - -eslint-plugin-jest@^28: - version "28.11.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz#2641ecb4411941bbddb3d7cf8a8ff1163fbb510e" - integrity sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig== - dependencies: - "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" - -eslint-plugin-jsdoc@^50.6.9: - version "50.6.9" - resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz#b4afc06110958b9c525456b6c4348bf14e21c298" - integrity sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw== - dependencies: - "@es-joy/jsdoccomment" "~0.49.0" - are-docs-informative "^0.0.2" - comment-parser "1.4.1" - debug "^4.3.6" - escape-string-regexp "^4.0.0" - espree "^10.1.0" - esquery "^1.6.0" - parse-imports "^2.1.1" - semver "^7.6.3" - spdx-expression-parse "^4.0.0" - synckit "^0.9.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== - -eslint@^8: - version "8.57.1" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" - integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.1" - "@humanwhocodes/config-array" "^0.13.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^10.1.0, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== - dependencies: - acorn "^8.14.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2, esquery@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== - -execa@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@>28.1.3, expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -exponential-backoff@^3.1.1: - version "3.1.2" - resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" - integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-check@^3.23.2: - version "3.23.2" - resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz#0129f1eb7e4f500f58e8290edc83c670e4a574a2" - integrity sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A== - dependencies: - pure-rand "^6.1.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-json-patch@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" - integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-memoize@^2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" - integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== - -fast-uri@^3.0.1: - version "3.0.6" - resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" - integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== - -fast-xml-parser@4.4.1: - version "4.4.1" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" - integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== - dependencies: - strnum "^1.0.5" - -fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fdir@^6.4.3: - version "6.4.3" - resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" - integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -fflate@0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9" - integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ== - -figures@3.2.0, figures@^3.0.0, figures@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filing-cabinet@^3.0.1: - version "3.3.1" - resolved "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-3.3.1.tgz#45d87bb273a0e0a7dd6ac6bac9111059186e2e9c" - integrity sha512-renEK4Hh6DUl9Vl22Y3cxBq1yh8oNvbAdXnhih0wVpmea+uyKjC9K4QeRjUaybIiIewdzfum+Fg15ZqJ/GyCaA== - dependencies: - app-module-path "^2.2.0" - commander "^2.20.3" - debug "^4.3.3" - enhanced-resolve "^5.8.3" - is-relative-path "^1.0.2" - module-definition "^3.3.1" - module-lookup-amd "^7.0.1" - resolve "^1.21.0" - resolve-dependency-path "^2.0.0" - sass-lookup "^3.0.0" - stylus-lookup "^3.0.1" - tsconfig-paths "^3.10.1" - typescript "^3.9.7" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.2.0: - version "3.3.2" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.7, flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flow-parser@0.*: - version "0.265.3" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.265.3.tgz#29ba9a9b82913f7ec5c3483fd00b9cae6b94e3e8" - integrity sha512-YH50TTYgnzDnuaZlAxLYQ0UZtXSbbizMO3OCpoY8obvLReJmvQ5UUW22efsC3SZJmze/tATfQ0PtkKul2XwWBw== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.14.9, follow-redirects@^1.15.6, follow-redirects@^1.15.9: - version "1.15.9" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== - -for-each@^0.3.3, for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -foreground-child@^3.1.0: - version "3.3.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -form-data-encoder@^2.1.2: - version "2.1.4" - resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" - integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== - -form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - mime-types "^2.1.12" - -fp-and-or@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz#0268c800c359ede259cdcbc352654e698b7ea299" - integrity sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw== - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -front-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" - integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== - dependencies: - js-yaml "^3.13.1" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.2.0, fs-extra@^11.3.0: - version "11.3.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" - integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fsevents@^2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: - version "1.1.8" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" - integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - functions-have-names "^1.2.3" - hasown "^2.0.2" - is-callable "^1.2.7" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-amd-module-type@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-3.0.2.tgz#46550cee2b8e1fa4c3f2c8a5753c36990aa49ab0" - integrity sha512-PcuKwB8ouJnKuAPn6Hk3UtdfKoUV3zXRqVEvj8XGIXqjWfgd1j7QGdXy5Z9OdQfzVt1Sk29HVe/P+X74ccOuqw== - dependencies: - ast-module-types "^3.0.0" - node-source-walk "^4.2.2" - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.0.0, get-pkg-repo@^4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-proto@^1.0.0, get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - -get-stream@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" - integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - -get-uri@^6.0.1: - version "6.0.4" - resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7" - integrity sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ== - dependencies: - basic-ftp "^5.0.2" - data-uri-to-buffer "^6.0.2" - debug "^4.3.4" - -git-raw-commits@^2.0.11, git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -git-raw-commits@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" - integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== - dependencies: - dargs "^7.0.0" - meow "^8.1.2" - split2 "^3.2.2" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.0.0, git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -git-semver-tags@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" - integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== - dependencies: - meow "^8.1.2" - semver "^7.0.0" - -git-up@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" - integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== - dependencies: - is-ssh "^1.4.0" - parse-url "^8.1.0" - -git-url-parse@14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" - integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== - dependencies: - git-up "^7.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== - dependencies: - ini "^1.3.2" - -glob-parent@6.0.2, glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob-parent@^5.1.1, glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@~10.4.5: - version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0, glob@^7.2.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8, glob@^8.0.1: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -glob@^9.2.0: - version "9.3.5" - resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" - integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== - dependencies: - fs.realpath "^1.0.0" - minimatch "^8.0.2" - minipass "^4.2.4" - path-scurry "^1.6.1" - -global-dirs@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" - integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== - dependencies: - ini "2.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@11.1.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" - integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== - dependencies: - minimist "^1.2.5" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -got@^12.1.0: - version "12.6.1" - resolved "https://registry.npmjs.org/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" - integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== - dependencies: - "@sindresorhus/is" "^5.2.0" - "@szmarczak/http-timer" "^5.0.1" - cacheable-lookup "^7.0.0" - cacheable-request "^10.2.8" - decompress-response "^6.0.0" - form-data-encoder "^2.1.2" - get-stream "^6.0.1" - http2-wrapper "^2.1.10" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^3.0.0" - -graceful-fs@4.2.10: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -graphql-tag@^2.12.6: - version "2.12.6" - resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql@^16.5.0: - version "16.10.0" - resolved "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz#24c01ae0af6b11ea87bf55694429198aaa8e220c" - integrity sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ== - -graphviz@0.0.9: - version "0.0.9" - resolved "https://registry.npmjs.org/graphviz/-/graphviz-0.0.9.tgz#0bbf1df588c6a92259282da35323622528c4bbc4" - integrity sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg== - dependencies: - temp "~0.4.0" - -handlebars@^4.7.6, handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-bigints@^1.0.2: - version "1.1.0" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" - integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" - integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== - dependencies: - dunder-proto "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -has-unicode@2.0.1, has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -has-yarn@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" - integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== - -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hosted-git-info@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" - integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^6.0.0: - version "6.1.3" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz#2ee1a14a097a1236bddf8672c35b613c46c55946" - integrity sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw== - dependencies: - lru-cache "^7.5.1" - -hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" - integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== - dependencies: - lru-cache "^10.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: - version "7.0.2" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http2-wrapper@^2.1.10: - version "2.2.1" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" - integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: - version "7.0.6" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" - integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== - dependencies: - agent-base "^7.1.2" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@1.1.13: - version "1.1.13" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ieee754@^1.1.13, ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-walk@^6.0.0, ignore-walk@^6.0.4: - version "6.0.5" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" - integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== - dependencies: - minimatch "^9.0.0" - -ignore@^5.0.4, ignore@^5.2.0, ignore@^5.3.1, ignore@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -ignore@~7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz#397ef9315dfe0595671eefe8b633fec6943ab733" - integrity sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA== - -import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -import-local@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== - -infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@^1.3.2, ini@^1.3.4, ini@^1.3.8, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ini@^4.1.1, ini@^4.1.3, ini@~4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" - integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== - -init-package-json@6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" - integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== - dependencies: - "@npmcli/package-json" "^5.0.0" - npm-package-arg "^11.0.0" - promzard "^1.0.0" - read "^3.0.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^5.0.0" - -inquirer@^8.2.3, inquirer@^8.2.4: - version "8.2.6" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - -internal-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" - integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.2" - side-channel "^1.1.0" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ip-address@^9.0.5: - version "9.0.5" - resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" - integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== - dependencies: - jsbn "1.1.0" - sprintf-js "^1.1.3" - -is-alphabetical@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" - integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== - -is-alphanumerical@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" - integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - -is-arguments@^1.0.4: - version "1.2.0" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" - integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: - version "3.0.5" - resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" - integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - get-intrinsic "^1.2.6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-async-function@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" - integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== - dependencies: - async-function "^1.0.0" - call-bound "^1.0.3" - get-proto "^1.0.1" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-bigint@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" - integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== - dependencies: - has-bigints "^1.0.2" - -is-boolean-object@^1.2.1: - version "1.2.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" - integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-ci@3.0.1, is-ci@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== - dependencies: - ci-info "^3.2.0" - -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0, is-core-module@^2.8.1: - version "2.16.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-data-view@^1.0.1, is-data-view@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" - integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== - dependencies: - call-bound "^1.0.2" - get-intrinsic "^1.2.6" - is-typed-array "^1.1.13" - -is-date-object@^1.0.5, is-date-object@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" - integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-decimal@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" - integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" - integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== - dependencies: - call-bound "^1.0.3" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10, is-generator-function@^1.0.7: - version "1.1.0" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== - dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" - integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== - -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - -is-map@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" - integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== - -is-npm@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" - integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== - -is-number-object@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" - integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.2, is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-relative-path@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" - integrity sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA== - -is-set@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" - integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== - -is-shared-array-buffer@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" - integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== - dependencies: - call-bound "^1.0.3" - -is-ssh@^1.4.0: - version "1.4.1" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz#76de1cdbe8f92a8b905d1a172b6bc09704c20396" - integrity sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg== - dependencies: - protocols "^2.0.1" - -is-stream@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.7, is-string@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" - integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== - dependencies: - call-bound "^1.0.3" - has-tostringtag "^1.0.2" - -is-symbol@^1.0.4, is-symbol@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" - integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== - dependencies: - call-bound "^1.0.2" - has-symbols "^1.1.0" - safe-regex-test "^1.1.0" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== - dependencies: - text-extensions "^1.0.0" - -is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15, is-typed-array@^1.1.3: - version "1.1.15" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-url-superb@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" - integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-weakmap@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" - integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== - -is-weakref@^1.0.2, is-weakref@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" - integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== - dependencies: - call-bound "^1.0.3" - -is-weakset@^2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" - integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== - dependencies: - call-bound "^1.0.3" - get-intrinsic "^1.2.6" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" - integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isexe@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" - integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" - integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jake@^10.8.5: - version "10.9.2" - resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.4" - minimatch "^3.1.2" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-junit@^13.2.0: - version "13.2.0" - resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz#66eeb86429aafac8c1745a70f44ace185aacb943" - integrity sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg== - dependencies: - mkdirp "^1.0.4" - strip-ansi "^6.0.1" - uuid "^8.3.2" - xml "^1.0.1" - -jest-junit@^15: - version "15.0.0" - resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-15.0.0.tgz#a47544ab42e9f8fe7ada56306c218e09e52bd690" - integrity sha512-Z5sVX0Ag3HZdMUnD5DFlG+1gciIFSy7yIVPhOdGUi8YJaI9iLvvBb530gtQL2CHmv0JJeiwRZenr0VrSR7frvg== - dependencies: - mkdirp "^1.0.4" - strip-ansi "^6.0.1" - uuid "^8.3.2" - xml "^1.0.1" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29, jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -jju@^1.1.0: - version "1.4.0" - resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== - -jmespath@0.16.0: - version "0.16.0" - resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" - integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@4.1.0, js-yaml@^4.1.0, js-yaml@~4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== - -jscodeshift@0.15.0: - version "0.15.0" - resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.0.tgz#32fc8d90193d17cdf1b34604496922838500b51f" - integrity sha512-t337Wx7Vy1ffhas7E1KZUHaR9YPdeCfxPvxz9k6DKwYW88pcs1piR1eR9d+7GQZGSQIZd6a+cfIM3XpMe9rFKQ== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.23.1" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsdoc-type-pratt-parser@~4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" - integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== - -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -jsii-diff@1.110.0: - version "1.110.0" - resolved "https://registry.npmjs.org/jsii-diff/-/jsii-diff-1.110.0.tgz#fa45998e8fb85483fa0c0924f7702fe948937f73" - integrity sha512-cYEVZVn1NJ+jnIyStTjYwiMAMAu+Eqhqm+XLeZO7lvTSRZB2uQ78f4WrnXG9vleW+vXrBAEXW76tmxziokFQdw== - dependencies: - "@jsii/check-node" "1.110.0" - "@jsii/spec" "^1.110.0" - fs-extra "^10.1.0" - jsii-reflect "^1.110.0" - log4js "^6.9.1" - yargs "^16.2.0" - -jsii-pacmak@1.110.0: - version "1.110.0" - resolved "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.110.0.tgz#af272994242afda86107701ed577f888293c7f84" - integrity sha512-fSfAmL6CBQgJ6mGs7cMJXIJSUtiTL2gU7/1CGNuw3jqvbrAjrBqNb7fGPrVNQTo4wzJU8XtxB2PTRnANEujM4A== - dependencies: - "@jsii/check-node" "1.110.0" - "@jsii/spec" "^1.110.0" - clone "^2.1.2" - codemaker "^1.110.0" - commonmark "^0.31.2" - escape-string-regexp "^4.0.0" - fs-extra "^10.1.0" - jsii-reflect "^1.110.0" - semver "^7.7.1" - spdx-license-list "^6.9.0" - xmlbuilder "^15.1.1" - yargs "^16.2.0" - -jsii-reflect@1.110.0, jsii-reflect@^1.110.0: - version "1.110.0" - resolved "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.110.0.tgz#8f552b45cbf265b1d820ebafb6fbdc1172644bf7" - integrity sha512-JSucO8hFk4/4iXAlWkXT8bnYPyFhlfir4cRBId4PP991heBt3P8qZR/mSTYkj1vdf5ccZERIXEY1r+WY2W09YA== - dependencies: - "@jsii/check-node" "1.110.0" - "@jsii/spec" "^1.110.0" - chalk "^4" - fs-extra "^10.1.0" - oo-ascii-tree "^1.110.0" - yargs "^16.2.0" - -jsii-rosetta@~5.4.59: - version "5.4.59" - resolved "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-5.4.59.tgz#45b00a5c8ad8f036155a9a7ad3ab2796c2621d33" - integrity sha512-B5Ew/GAMGItzbuFyrmGyLSz/BTLk96VKiC7iZUOSSPkO+WBoKvgiP5s8nCbA3fD8KV9jJfmYVmLAELa4zsA2Cw== - dependencies: - "@jsii/check-node" "1.107.0" - "@jsii/spec" "^1.107.0" - "@xmldom/xmldom" "^0.9.7" - chalk "^4" - commonmark "^0.31.2" - fast-glob "^3.3.3" - jsii "~5.4.0" - semver "^7.7.1" - semver-intersect "^1.5.0" - stream-json "^1.9.1" - typescript "~5.4" - workerpool "^6.5.1" - yargs "^17.7.2" - -jsii@~5.4.0: - version "5.4.51" - resolved "https://registry.npmjs.org/jsii/-/jsii-5.4.51.tgz#4f22f6669a9bac8b6729b12d659e9b4656691129" - integrity sha512-Hc9H7DoxiUPchNCyTk68HvKIZ+Q1EBO1W8mVJmcxCyx9/ZjmE2jmENuwR1vC7HgSTJa+maLrZRVOJ90aIhsQKQ== - dependencies: - "@jsii/check-node" "1.106.0" - "@jsii/spec" "^1.106.0" - case "^1.6.3" - chalk "^4" - downlevel-dts "^0.11.0" - fast-deep-equal "^3.1.3" - log4js "^6.9.1" - semver "^7.7.1" - semver-intersect "^1.5.0" - sort-json "^2.0.1" - spdx-license-list "^6.9.0" - typescript "~5.4" - yargs "^17.7.2" - -jsii@~5.7.10: - version "5.7.10" - resolved "https://registry.npmjs.org/jsii/-/jsii-5.7.10.tgz#8c8dd12432aa770508aa229e98bc7b6e288aa036" - integrity sha512-dET3FIpmbeCGDEINef0KCyQXRjRDmRhNgkGYog/b5l15SdCWKegHaRyy3n6Ilfw3dpe4B211BcYIk8jynYW/Cg== - dependencies: - "@jsii/check-node" "1.110.0" - "@jsii/spec" "^1.110.0" - case "^1.6.3" - chalk "^4" - fast-deep-equal "^3.1.3" - log4js "^6.9.1" - semver "^7.7.1" - semver-intersect "^1.5.0" - sort-json "^2.0.1" - spdx-license-list "^6.9.0" - typescript "~5.7" - yargs "^17.7.2" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" - integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== - -json-parse-helpfulerror@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" - integrity sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg== - dependencies: - jju "^1.1.0" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-nice@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" - integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc-parser@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - -jsonc-parser@~3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" - integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonlines@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz#4fcd246dc5d0e38691907c44ab002f782d1d94cc" - integrity sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA== - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== - -jsonpointer@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" - integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== - -jsonschema@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz#f6aceb1ab9123563dd901d05f81f9d4883d3b7d8" - integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== - -jsonschema@~1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" - integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== - -just-diff-apply@^5.2.0: - version "5.5.0" - resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" - integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== - -just-diff@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" - integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== - -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - -just-extend@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" - integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== - -katex@^0.16.0: - version "0.16.21" - resolved "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" - integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A== - dependencies: - commander "^8.3.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.0.1: - version "4.1.5" - resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -lambda-event-mock@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/lambda-event-mock/-/lambda-event-mock-1.5.0.tgz#9cb1ce2bec4271f918d485fef0a327d194dd120f" - integrity sha512-vx1d+vZqi7FF6B3+mAfHnY/6Tlp6BheL2ta0MJS0cIRB3Rc4I5cviHTkiJxHdE156gXx3ZjlQRJrS4puXvtrhA== - dependencies: - "@extra-number/significant-digits" "^1.1.1" - clone-deep "^4.0.1" - uuid "^3.3.3" - vandium-utils "^1.2.0" - -lambda-leak@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/lambda-leak/-/lambda-leak-2.0.0.tgz#771985d3628487f6e885afae2b54510dcfb2cd7e" - integrity sha512-2c9jwUN3ZLa2GEiOhObbx2BMGQplEUCDHSIkhDtYwUjsTfiV/3jCF6ThIuEXfsvqbUK+0QpZcugIKB8YMbSevQ== - -lambda-tester@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lambda-tester/-/lambda-tester-4.0.1.tgz#91f0fc1266cdceae09a5ddbbdbc209c214beb98c" - integrity sha512-ft6XHk84B6/dYEzyI3anKoGWz08xQ5allEHiFYDUzaYTymgVK7tiBkCEbuWx+MFvH7OpFNsJXVtjXm0X8iH3Iw== - dependencies: - app-root-path "^3.0.0" - dotenv "^8.0.0" - dotenv-json "^1.0.0" - lambda-event-mock "^1.5.0" - lambda-leak "^2.0.0" - semver "^6.1.1" - uuid "^3.3.3" - vandium-utils "^2.0.0" - -latest-version@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" - integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== - dependencies: - package-json "^8.1.0" - -lerna@^8.2.1: - version "8.2.1" - resolved "https://registry.npmjs.org/lerna/-/lerna-8.2.1.tgz#30ddc192130dc50cff68951c1e63a74a391c178d" - integrity sha512-Xwjv9/4ixp7fpBWhtvp7dz4NoQT8DEf7hzibHKCgu/8kmZUHeXsTn+TKspHqhI+p4YDmdkDnkg8xmymz73kVOg== - dependencies: - "@lerna/create" "8.2.1" - "@npmcli/arborist" "7.5.4" - "@npmcli/package-json" "5.2.0" - "@npmcli/run-script" "8.1.0" - "@nx/devkit" ">=17.1.2 < 21" - "@octokit/plugin-enterprise-rest" "6.0.1" - "@octokit/rest" "20.1.2" - aproba "2.0.0" - byte-size "8.1.1" - chalk "4.1.0" - clone-deep "4.0.1" - cmd-shim "6.0.3" - color-support "1.1.3" - columnify "1.6.0" - console-control-strings "^1.1.0" - conventional-changelog-angular "7.0.0" - conventional-changelog-core "5.0.1" - conventional-recommended-bump "7.0.1" - cosmiconfig "9.0.0" - dedent "1.5.3" - envinfo "7.13.0" - execa "5.0.0" - fs-extra "^11.2.0" - get-port "5.1.1" - get-stream "6.0.0" - git-url-parse "14.0.0" - glob-parent "6.0.2" - globby "11.1.0" - graceful-fs "4.2.11" - has-unicode "2.0.1" - import-local "3.1.0" - ini "^1.3.8" - init-package-json "6.0.3" - inquirer "^8.2.4" - is-ci "3.0.1" - is-stream "2.0.0" - jest-diff ">=29.4.3 < 30" - js-yaml "4.1.0" - libnpmaccess "8.0.6" - libnpmpublish "9.0.9" - load-json-file "6.2.0" - lodash "^4.17.21" - make-dir "4.0.0" - minimatch "3.0.5" - multimatch "5.0.0" - node-fetch "2.6.7" - npm-package-arg "11.0.2" - npm-packlist "8.0.2" - npm-registry-fetch "^17.1.0" - nx ">=17.1.2 < 21" - p-map "4.0.0" - p-map-series "2.1.0" - p-pipe "3.1.0" - p-queue "6.6.2" - p-reduce "2.1.0" - p-waterfall "2.1.1" - pacote "^18.0.6" - pify "5.0.0" - read-cmd-shim "4.0.0" - resolve-from "5.0.0" - rimraf "^4.4.1" - semver "^7.3.8" - set-blocking "^2.0.0" - signal-exit "3.0.7" - slash "3.0.0" - ssri "^10.0.6" - string-width "^4.2.3" - strong-log-transformer "2.1.0" - tar "6.2.1" - temp-dir "1.0.0" - typescript ">=3 < 6" - upath "2.0.1" - uuid "^10.0.0" - validate-npm-package-license "3.0.4" - validate-npm-package-name "5.0.1" - wide-align "1.1.5" - write-file-atomic "5.0.1" - write-pkg "4.0.0" - yargs "17.7.2" - yargs-parser "21.1.1" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -libnpmaccess@8.0.6: - version "8.0.6" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" - integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== - dependencies: - npm-package-arg "^11.0.2" - npm-registry-fetch "^17.0.1" - -libnpmpublish@9.0.9: - version "9.0.9" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.9.tgz#e737378c09f09738377d2a276734be35cffb85e2" - integrity sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg== - dependencies: - ci-info "^4.0.0" - normalize-package-data "^6.0.1" - npm-package-arg "^11.0.2" - npm-registry-fetch "^17.0.1" - proc-log "^4.2.0" - semver "^7.3.7" - sigstore "^2.2.0" - ssri "^10.0.6" - -license-checker@^25.0.1: - version "25.0.1" - resolved "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz#4d14504478a5240a857bb3c21cd0491a00d761fa" - integrity sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g== - dependencies: - chalk "^2.4.1" - debug "^3.1.0" - mkdirp "^0.5.1" - nopt "^4.0.1" - read-installed "~4.0.3" - semver "^5.5.0" - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - spdx-satisfies "^4.0.0" - treeify "^1.1.0" - -line-reader@^0.2.4: - version "0.2.4" - resolved "https://registry.npmjs.org/line-reader/-/line-reader-0.2.4.tgz#c4392b587dea38580c9678570e6e8e49fce52622" - integrity sha512-342xzyZZS9uTiKwHJcMacopVl/WjrMMCZS1Qg4Uhl/WBknWRrGFdKOIS1Kec6SaiTcZMtmuxWvvIbPXj/+FMjA== - -lines-and-columns@2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" - integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - -load-json-file@6.2.0, load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log4js@^6.9.1: - version "6.9.1" - resolved "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" - integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - flatted "^3.2.7" - rfdc "^1.3.0" - streamroller "^3.1.5" - -logform@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" - integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -loupe@^3.1.0, loupe@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" - integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: - version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -madge@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/madge/-/madge-5.0.2.tgz#d34527af7e96de9625e8069902667c4c5a073ada" - integrity sha512-OeqFIgugINbVqh6keLWePD/N3u1EEYS3O9gCTD+EjcuaJa1TH30jcCxr8CEl3+neS1VM8sDCQSYoln/2li3ceg== - dependencies: - chalk "^4.1.1" - commander "^7.2.0" - commondir "^1.0.1" - debug "^4.3.1" - dependency-tree "^8.1.1" - detective-amd "^3.1.0" - detective-cjs "^3.1.1" - detective-es6 "^2.2.0" - detective-less "^1.0.2" - detective-postcss "^5.0.0" - detective-sass "^3.0.1" - detective-scss "^2.0.1" - detective-stylus "^1.0.0" - detective-typescript "^7.0.0" - graphviz "0.0.9" - ora "^5.4.1" - pluralize "^8.0.0" - precinct "^8.1.0" - pretty-ms "^7.0.1" - rc "^1.2.7" - typescript "^3.9.5" - walkdir "^0.4.1" - -make-dir@4.0.0, make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@^1.1.1, make-error@^1.3.6: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -make-fetch-happen@^10.0.3: - version "10.2.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" - integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^16.1.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^3.1.6" - minipass-collect "^1.0.2" - minipass-fetch "^2.0.3" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^9.0.0" - -make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: - version "11.1.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" - http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^10.0.0" - -make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: - version "13.0.1" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" - integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== - dependencies: - "@npmcli/agent" "^2.0.0" - cacache "^18.0.0" - http-cache-semantics "^4.1.1" - is-lambda "^1.0.1" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - proc-log "^4.2.0" - promise-retry "^2.0.1" - ssri "^10.0.0" - -make-runnable@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/make-runnable/-/make-runnable-1.4.1.tgz#a230f5bc085468362dc73c9f2391948b26e777ba" - integrity sha512-18F9NyNAPcoAT5a1y5r2bBOEY17Z4fa86WXBfLcSOzNo8/KSCymyViDDlsPJ66xhatwBVfodiXYyOm5Jvz9YFA== - dependencies: - bluebird "^3.5.0" - yargs "^16.2.0" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -markdown-it@14.1.0, markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -markdownlint-cli@^0.44.0: - version "0.44.0" - resolved "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz#02b24c8a20972c50d124a6cafdeca3beb085a1ce" - integrity sha512-ZJTAONlvF9NkrIBltCdW15DxN9UTbPiKMEqAh2EU2gwIFlrCMavyCEPPO121cqfYOrLUJWW8/XKWongstmmTeQ== - dependencies: - commander "~13.1.0" - glob "~10.4.5" - ignore "~7.0.3" - js-yaml "~4.1.0" - jsonc-parser "~3.3.1" - jsonpointer "~5.0.1" - markdownlint "~0.37.4" - minimatch "~9.0.5" - run-con "~1.3.2" - smol-toml "~1.3.1" - -markdownlint@~0.37.4: - version "0.37.4" - resolved "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz#dd58c4a13b798d4702438e5f7fd587a219f753f6" - integrity sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ== - dependencies: - markdown-it "14.1.0" - micromark "4.0.1" - micromark-core-commonmark "2.0.2" - micromark-extension-directive "3.0.2" - micromark-extension-gfm-autolink-literal "2.1.0" - micromark-extension-gfm-footnote "2.1.0" - micromark-extension-gfm-table "2.1.0" - micromark-extension-math "3.1.0" - micromark-util-types "2.0.1" - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -mdurl@^1.0.1, mdurl@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -meow@^8.0.0, meow@^8.1.2: - version "8.1.2" - resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromark-core-commonmark@2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" - integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-core-commonmark@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" - integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-directive@3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" - integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - parse-entities "^4.0.0" - -micromark-extension-gfm-autolink-literal@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" - integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" - integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" - integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-math@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz#c42ee3b1dd5a9a03584e83dd8f08e3de510212c1" - integrity sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg== - dependencies: - "@types/katex" "^0.16.0" - devlop "^1.0.0" - katex "^0.16.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" - integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" - integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" - integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" - integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" - integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-character@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" - integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-chunked@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" - integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" - integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" - integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" - integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" - integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== - -micromark-util-html-tag-name@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" - integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" - integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" - integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" - integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-subtokenize@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" - integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-symbol@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" - integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== - -micromark-util-types@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" - integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== - -micromark-util-types@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" - integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== - -micromark@4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" - integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromatch@^4.0.4, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.35: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -mimic-response@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" - integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@3.0.5: - version "3.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" - integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^8.0.2: - version "8.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" - integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@~9.0.5: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8, minimist@~1.2.8: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-collect@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" - integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== - dependencies: - minipass "^7.0.3" - -minipass-fetch@^2.0.3: - version "2.1.2" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" - integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== - dependencies: - minipass "^3.1.6" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-fetch@^3.0.0: - version "3.0.5" - resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" - integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz#5121616c77a11c406c3ffa77509e0b77bb267ec3" - integrity sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: - version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^4.2.4: - version "4.2.8" - resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" - integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -minizlib@^2.1.1, minizlib@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mnemonist@0.38.3: - version "0.38.3" - resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" - integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== - dependencies: - obliterator "^1.6.1" - -mock-fs@^4.14.0: - version "4.14.0" - resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - -modify-values@^1.0.0, modify-values@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -module-definition@^3.3.1: - version "3.4.0" - resolved "https://registry.npmjs.org/module-definition/-/module-definition-3.4.0.tgz#953a3861f65df5e43e80487df98bb35b70614c2b" - integrity sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA== - dependencies: - ast-module-types "^3.0.0" - node-source-walk "^4.0.0" - -module-lookup-amd@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/module-lookup-amd/-/module-lookup-amd-7.0.1.tgz#d67c1a93f2ff8e38b8774b99a638e9a4395774b2" - integrity sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ== - dependencies: - commander "^2.8.1" - debug "^4.1.0" - glob "^7.1.6" - requirejs "^2.3.5" - requirejs-config-file "^4.0.0" - -ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multimatch@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mute-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== - -nanoid@^3.3.8: - version "3.3.11" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@^0.6.3: - version "0.6.4" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" - integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== - -neo-async@^2.5.0, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -netmask@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" - integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== - -nise@^4.0.4: - version "4.1.0" - resolved "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" - integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^6.0.0" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - -nise@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" - integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== - dependencies: - "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "^13.0.1" - "@sinonjs/text-encoding" "^0.7.3" - just-extend "^6.2.0" - path-to-regexp "^8.1.0" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -nock@^13.5.6: - version "13.5.6" - resolved "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" - integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - propagate "^2.0.0" - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.7, node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp@^10.0.0: - version "10.3.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" - integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^10.3.10" - graceful-fs "^4.2.6" - make-fetch-happen "^13.0.0" - nopt "^7.0.0" - proc-log "^4.1.0" - semver "^7.3.5" - tar "^6.2.1" - which "^4.0.0" - -node-gyp@^9.0.0: - version "9.4.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" - integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== - dependencies: - env-paths "^2.2.0" - exponential-backoff "^3.1.1" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^10.0.3" - nopt "^6.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-machine-id@1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - -node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - -node-source-walk@^4.0.0, node-source-walk@^4.2.0, node-source-walk@^4.2.2: - version "4.3.0" - resolved "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz#8336b56cfed23ac5180fe98f1e3bb6b11fd5317c" - integrity sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA== - dependencies: - "@babel/parser" "^7.0.0" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" - integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== - dependencies: - abbrev "^1.0.0" - -nopt@^7.0.0, nopt@^7.2.1: - version "7.2.1" - resolved "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" - integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== - dependencies: - abbrev "^2.0.0" - -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" - integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== - dependencies: - hosted-git-info "^6.0.0" - is-core-module "^2.8.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: - version "6.0.2" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" - integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== - dependencies: - hosted-git-info "^7.0.0" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^8.0.0: - version "8.0.1" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" - integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== - -npm-bundled@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-bundled@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" - integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== - dependencies: - npm-normalize-package-bin "^3.0.0" - -npm-check-updates@^16: - version "16.14.20" - resolved "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.20.tgz#02c06df77593f5d32e19966b19dddeaca73f69a0" - integrity sha512-sYbIhun4DrjO7NFOTdvs11nCar0etEhZTsEjL47eM0TuiGMhmYughRCxG2SpGRmGAQ7AkwN7bw2lWzoE7q6yOQ== - dependencies: - "@types/semver-utils" "^1.1.1" - chalk "^5.3.0" - cli-table3 "^0.6.3" - commander "^10.0.1" - fast-memoize "^2.5.2" - find-up "5.0.0" - fp-and-or "^0.1.4" - get-stdin "^8.0.0" - globby "^11.0.4" - hosted-git-info "^5.1.0" - ini "^4.1.1" - js-yaml "^4.1.0" - json-parse-helpfulerror "^1.0.3" - jsonlines "^0.1.1" - lodash "^4.17.21" - make-fetch-happen "^11.1.1" - minimatch "^9.0.3" - p-map "^4.0.0" - pacote "15.2.0" - parse-github-url "^1.0.2" - progress "^2.0.3" - prompts-ncu "^3.0.0" - rc-config-loader "^4.1.3" - remote-git-tags "^3.0.0" - rimraf "^5.0.5" - semver "^7.5.4" - semver-utils "^1.1.4" - source-map-support "^0.5.21" - spawn-please "^2.0.2" - strip-ansi "^7.1.0" - strip-json-comments "^5.0.1" - untildify "^4.0.0" - update-notifier "^6.0.2" - -npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" - integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== - dependencies: - semver "^7.1.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-normalize-package-bin@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" - integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== - -npm-package-arg@11.0.2: - version "11.0.2" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" - integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: - version "11.0.3" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" - integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== - dependencies: - hosted-git-info "^7.0.0" - proc-log "^4.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - -npm-package-arg@^8.1.0: - version "8.1.5" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@8.0.2, npm-packlist@^8.0.0: - version "8.0.2" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" - integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== - dependencies: - ignore-walk "^6.0.4" - -npm-packlist@^7.0.0: - version "7.0.4" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" - integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== - dependencies: - ignore-walk "^6.0.0" - -npm-pick-manifest@^8.0.0: - version "8.0.2" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" - integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^10.0.0" - semver "^7.3.5" - -npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: - version "9.1.0" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" - integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== - dependencies: - npm-install-checks "^6.0.0" - npm-normalize-package-bin "^3.0.0" - npm-package-arg "^11.0.0" - semver "^7.3.5" - -npm-registry-fetch@^14.0.0: - version "14.0.5" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - -npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1, npm-registry-fetch@^17.1.0: - version "17.1.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" - integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== - dependencies: - "@npmcli/redact" "^2.0.0" - jsonparse "^1.3.1" - make-fetch-happen "^13.0.0" - minipass "^7.0.2" - minipass-fetch "^3.0.0" - minizlib "^2.1.2" - npm-package-arg "^11.0.0" - proc-log "^4.0.0" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - -nx@20.6.4, "nx@>=17.1.2 < 21", nx@^20: - version "20.6.4" - resolved "https://registry.npmjs.org/nx/-/nx-20.6.4.tgz#1afa7b2a165b21b8eb5b2161514a494a3d898d94" - integrity sha512-mkRgGvPSZpezn65upZ9psuyywr03XTirHDsqlnRYp90qqDQqMH/I1FsHqqUG5qdy4gbm5qFkZ5Vvc8Z3RkN/jg== - dependencies: - "@napi-rs/wasm-runtime" "0.2.4" - "@yarnpkg/lockfile" "^1.1.0" - "@yarnpkg/parsers" "3.0.2" - "@zkochan/js-yaml" "0.0.7" - axios "^1.8.3" - chalk "^4.1.0" - cli-cursor "3.1.0" - cli-spinners "2.6.1" - cliui "^8.0.1" - dotenv "~16.4.5" - dotenv-expand "~11.0.6" - enquirer "~2.3.6" - figures "3.2.0" - flat "^5.0.2" - front-matter "^4.0.2" - ignore "^5.0.4" - jest-diff "^29.4.1" - jsonc-parser "3.2.0" - lines-and-columns "2.0.3" - minimatch "9.0.3" - node-machine-id "1.1.12" - npm-run-path "^4.0.1" - open "^8.4.0" - ora "5.3.0" - resolve.exports "2.0.3" - semver "^7.5.3" - string-width "^4.2.3" - tar-stream "~2.2.0" - tmp "~0.2.1" - tsconfig-paths "^4.1.2" - tslib "^2.3.0" - yaml "^2.6.0" - yargs "^17.6.2" - yargs-parser "21.1.1" - optionalDependencies: - "@nx/nx-darwin-arm64" "20.6.4" - "@nx/nx-darwin-x64" "20.6.4" - "@nx/nx-freebsd-x64" "20.6.4" - "@nx/nx-linux-arm-gnueabihf" "20.6.4" - "@nx/nx-linux-arm64-gnu" "20.6.4" - "@nx/nx-linux-arm64-musl" "20.6.4" - "@nx/nx-linux-x64-gnu" "20.6.4" - "@nx/nx-linux-x64-musl" "20.6.4" - "@nx/nx-win32-arm64-msvc" "20.6.4" - "@nx/nx-win32-x64-msvc" "20.6.4" - -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.7: - version "4.1.7" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - -object.fromentries@^2.0.8: - version "2.0.8" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.values@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" - integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -obliterator@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" - integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== - -once@^1.3.0, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -oo-ascii-tree@^1.110.0: - version "1.110.0" - resolved "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.110.0.tgz#f70776bf0503603ab2030e003c48504a70f907ac" - integrity sha512-g33AbSedFq555wCEOKLZ5d2KjW/f0ApMlgn4/PlzYS76QawOcdhOaolZavMJioHn9Vv15TPbloEoYWStyGAoxw== - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -ora@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -own-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" - integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== - dependencies: - get-intrinsic "^1.2.6" - object-keys "^1.1.1" - safe-push-apply "^1.0.0" - -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map-series@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@4.0.0, p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-pipe@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@6.6.2: - version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -p-waterfall@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== - dependencies: - p-reduce "^2.0.0" - -pac-proxy-agent@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" - integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== - dependencies: - "@tootallnate/quickjs-emscripten" "^0.23.0" - agent-base "^7.1.2" - debug "^4.3.4" - get-uri "^6.0.1" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.6" - pac-resolver "^7.0.1" - socks-proxy-agent "^8.0.5" - -pac-resolver@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" - integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== - dependencies: - degenerator "^5.0.0" - netmask "^2.0.2" - -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -package-json@^8.1.0: - version "8.1.1" - resolved "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" - integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== - dependencies: - got "^12.1.0" - registry-auth-token "^5.0.1" - registry-url "^6.0.0" - semver "^7.3.7" - -pacote@15.2.0: - version "15.2.0" - resolved "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" - integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== - dependencies: - "@npmcli/git" "^4.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/promise-spawn" "^6.0.1" - "@npmcli/run-script" "^6.0.0" - cacache "^17.0.0" - fs-minipass "^3.0.0" - minipass "^5.0.0" - npm-package-arg "^10.0.0" - npm-packlist "^7.0.0" - npm-pick-manifest "^8.0.0" - npm-registry-fetch "^14.0.0" - proc-log "^3.0.0" - promise-retry "^2.0.1" - read-package-json "^6.0.0" - read-package-json-fast "^3.0.0" - sigstore "^1.3.0" - ssri "^10.0.0" - tar "^6.1.11" - -pacote@^18.0.0, pacote@^18.0.6: - version "18.0.6" - resolved "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" - integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== - dependencies: - "@npmcli/git" "^5.0.0" - "@npmcli/installed-package-contents" "^2.0.1" - "@npmcli/package-json" "^5.1.0" - "@npmcli/promise-spawn" "^7.0.0" - "@npmcli/run-script" "^8.0.0" - cacache "^18.0.0" - fs-minipass "^3.0.0" - minipass "^7.0.2" - npm-package-arg "^11.0.0" - npm-packlist "^8.0.0" - npm-pick-manifest "^9.0.0" - npm-registry-fetch "^17.0.0" - proc-log "^4.0.0" - promise-retry "^2.0.1" - sigstore "^2.2.0" - ssri "^10.0.0" - tar "^6.1.11" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-conflict-json@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" - integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== - dependencies: - json-parse-even-better-errors "^3.0.0" - just-diff "^6.0.0" - just-diff-apply "^5.2.0" - -parse-entities@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" - integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== - dependencies: - "@types/unist" "^2.0.0" - character-entities-legacy "^3.0.0" - character-reference-invalid "^2.0.0" - decode-named-character-reference "^1.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - -parse-github-url@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz#2ab55642c8685b63fbe2a196f5abe4ae9bd68abc" - integrity sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww== - -parse-imports@^2.1.1: - version "2.2.1" - resolved "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz#0a6e8b5316beb5c9905f50eb2bbb8c64a4805642" - integrity sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ== - dependencies: - es-module-lexer "^1.5.3" - slashes "^3.0.12" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - -parse-path@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.1.tgz#ae548cd36315fd8881a3610eae99fa08123ee0e2" - integrity sha512-6ReLMptznuuOEzLoGEa+I1oWRSj2Zna5jLWC+l6zlfAI4dbbSaIES29ThzuPkbhNahT65dWzfoZEO6cfJw2Ksg== - dependencies: - protocols "^2.0.0" - -parse-url@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" - integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== - dependencies: - parse-path "^7.0.0" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-equal@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/path-equal/-/path-equal-1.2.5.tgz#9fcbdd5e5daee448e96f43f3bac06c666b5e982a" - integrity sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1, path-scurry@^1.6.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-to-regexp@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" - integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== - dependencies: - isarray "0.0.1" - -path-to-regexp@^8.1.0: - version "8.2.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" - integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== - -picocolors@^1.0.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@4.0.2, picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4, pirates@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -possible-typed-array-names@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" - integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== - -postcss-selector-parser@^6.0.10: - version "6.1.2" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-values-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-5.0.0.tgz#10c61ac3f488e4de25746b829ea8d8894e9ac3d2" - integrity sha512-2viDDjMMrt21W2izbeiJxl3kFuD/+asgB0CBwPEgSyhCmBnDIa/y+pLaoyX+q3I3DHH0oPPL3cgjVTQvlS1Maw== - dependencies: - color-name "^1.1.4" - is-url-superb "^4.0.0" - quote-unquote "^1.0.0" - -postcss@^8.1.7, postcss@^8.4.6: - version "8.5.3" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -precinct@^8.0.0, precinct@^8.1.0: - version "8.3.1" - resolved "https://registry.npmjs.org/precinct/-/precinct-8.3.1.tgz#94b99b623df144eed1ce40e0801c86078466f0dc" - integrity sha512-pVppfMWLp2wF68rwHqBIpPBYY8Kd12lDhk8LVQzOwqllifVR15qNFyod43YLyFpurKRZQKnE7E4pofAagDOm2Q== - dependencies: - commander "^2.20.3" - debug "^4.3.3" - detective-amd "^3.1.0" - detective-cjs "^3.1.1" - detective-es6 "^2.2.1" - detective-less "^1.0.2" - detective-postcss "^4.0.0" - detective-sass "^3.0.1" - detective-scss "^2.0.1" - detective-stylus "^1.0.0" - detective-typescript "^7.0.0" - module-definition "^3.3.1" - node-source-walk "^4.2.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-ms@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - -proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" - integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process-on-spawn@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz#9d5999ba87b3bf0a8acb05322d69f2f5aa4fb763" - integrity sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q== - dependencies: - fromentries "^1.2.0" - -proggy@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" - integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== - -progress@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-all-reject-late@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" - integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== - -promise-call-limit@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" - integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -prompts-ncu@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.2.tgz#ffaf0388a7853f9f3e1caff51ece7828faaf62d6" - integrity sha512-BthHeqP0vwvZPk3ZmqZXhssNabxM60aBCbg/gQdxF8bQW/dy6ZGQpS8SG10bUQTMy5HKh34iI0g0TstCRZyjag== - dependencies: - kleur "^4.0.1" - sisteransi "^1.0.5" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -promzard@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/promzard/-/promzard-1.0.2.tgz#2226e7c6508b1da3471008ae17066a7c3251e660" - integrity sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ== - dependencies: - read "^3.0.1" - -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== - -protocols@^2.0.0, protocols@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz#822e8fcdcb3df5356538b3e91bfd890b067fd0a4" - integrity sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ== - -proxy-agent@^6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" - integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A== - dependencies: - agent-base "^7.1.2" - debug "^4.3.4" - http-proxy-agent "^7.0.1" - https-proxy-agent "^7.0.6" - lru-cache "^7.14.1" - pac-proxy-agent "^7.1.0" - proxy-from-env "^1.1.0" - socks-proxy-agent "^8.0.5" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@^2.1.0, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pupa@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" - integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== - dependencies: - escape-goat "^4.0.0" - -pure-rand@^6.0.0, pure-rand@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -q@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -quote-unquote@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" - integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== - -rc-config-loader@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz#1352986b8a2d8d96d6fd054a5bb19a60c576876a" - integrity sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w== - dependencies: - debug "^4.3.4" - js-yaml "^4.1.0" - json5 "^2.2.2" - require-from-string "^2.0.2" - -rc@1.2.8, rc@^1.2.7: - version "1.2.8" - resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -read-cmd-shim@4.0.0, read-cmd-shim@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" - integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== - -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ== - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" - integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== - dependencies: - json-parse-even-better-errors "^3.0.0" - npm-normalize-package-bin "^3.0.0" - -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^6.0.0: - version "6.0.4" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" - integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== - dependencies: - glob "^10.2.2" - json-parse-even-better-errors "^3.0.0" - normalize-package-data "^5.0.0" - npm-normalize-package-bin "^3.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" - integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== - dependencies: - mute-stream "^1.0.0" - -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^2.0.6, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -recast@^0.23.1: - version "0.23.11" - resolved "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz#8885570bb28cf773ba1dc600da7f502f7883f73f" - integrity sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA== - dependencies: - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tiny-invariant "^1.3.3" - tslib "^2.0.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: - version "1.0.10" - resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" - integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-abstract "^1.23.9" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.7" - get-proto "^1.0.1" - which-builtin-type "^1.2.1" - -regexp.prototype.flags@^1.5.3: - version "1.5.4" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" - integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== - dependencies: - call-bind "^1.0.8" - define-properties "^1.2.1" - es-errors "^1.3.0" - get-proto "^1.0.1" - gopd "^1.2.0" - set-function-name "^2.0.2" - -registry-auth-token@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" - integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== - dependencies: - "@pnpm/npm-conf" "^2.1.0" - -registry-url@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" - integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== - dependencies: - rc "1.2.8" - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== - dependencies: - es6-error "^4.0.1" - -remote-git-tags@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz#424f8ec2cdea00bb5af1784a49190f25e16983c3" - integrity sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w== - -remove-markdown@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.2.2.tgz#66b0ceeba9fb77ca9636bb1b0307ce21a32a12a6" - integrity sha512-jwgEf3Yh/xi4WodWi/vPlasa9C9pMv1kz5ITOIAGjBW7PeZ/CHZCdBfJzQnn2VX2cBvf1xCuJv0tUJqn/FCMNA== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requirejs-config-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" - integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== - dependencies: - esprima "^4.0.0" - stringify-object "^3.2.1" - -requirejs@^2.3.5: - version "2.3.7" - resolved "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz#0b22032e51a967900e0ae9f32762c23a87036bd0" - integrity sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw== - -resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-dependency-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz#11700e340717b865d216c66cabeb4a2a3c696736" - integrity sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w== - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve.exports@2.0.3, resolve.exports@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" - integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.21.0, resolve@^1.22.0, resolve@^1.22.4: - version "1.22.10" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -responselike@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" - integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== - dependencies: - lowercase-keys "^3.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -rfdc@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" - integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^4.4.1: - version "4.4.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" - integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== - dependencies: - glob "^9.2.0" - -rimraf@^5.0.5: - version "5.0.10" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" - integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== - dependencies: - glob "^10.3.7" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-con@~1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz#755860a10ce326a96b509485fcea50b4d03754e8" - integrity sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg== - dependencies: - deep-extend "^0.6.0" - ini "~4.1.0" - minimist "^1.2.8" - strip-json-comments "~3.1.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.5.5: - version "7.8.2" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" - integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== - dependencies: - tslib "^2.1.0" - -safe-array-concat@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" - integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - get-intrinsic "^1.2.6" - has-symbols "^1.1.0" - isarray "^2.0.5" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-json-stringify@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" - integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== - -safe-push-apply@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" - integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== - dependencies: - es-errors "^1.3.0" - isarray "^2.0.5" - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: - version "2.5.0" - resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-lookup@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/sass-lookup/-/sass-lookup-3.0.0.tgz#3b395fa40569738ce857bc258e04df2617c48cac" - integrity sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg== - dependencies: - commander "^2.16.0" - -sax@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== - -sax@>=0.6.0: - version "1.4.1" - resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - -semver-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" - integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== - dependencies: - semver "^7.3.5" - -semver-intersect@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.5.0.tgz#bb3aa0ea504935410d34cf15f49818d56906bd48" - integrity sha512-BDjWX7yCC0haX4W/zrnV2JaMpVirwaEkGOBmgRQtH++F1N3xl9v7k9H44xfTqwl+yLNNSbMKosoVSTIiJVQ2Pw== - dependencies: - semver "^6.3.0" - -semver-utils@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" - integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== - -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.1.1, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: - version "7.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -set-proto@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" - integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== - dependencies: - dunder-proto "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.3: - version "0.8.5" - resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shlex@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/shlex/-/shlex-2.1.2.tgz#5b5384d603885281c1dee05d56975865edddcba0" - integrity sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sigstore@^1.3.0: - version "1.9.0" - resolved "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" - integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== - dependencies: - "@sigstore/bundle" "^1.1.0" - "@sigstore/protobuf-specs" "^0.2.0" - "@sigstore/sign" "^1.0.0" - "@sigstore/tuf" "^1.0.3" - make-fetch-happen "^11.0.1" - -sigstore@^2.2.0: - version "2.3.1" - resolved "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" - integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== - dependencies: - "@sigstore/bundle" "^2.3.2" - "@sigstore/core" "^1.0.0" - "@sigstore/protobuf-specs" "^0.3.2" - "@sigstore/sign" "^2.3.2" - "@sigstore/tuf" "^2.3.4" - "@sigstore/verify" "^1.2.1" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sinon@^18.0.1: - version "18.0.1" - resolved "https://registry.npmjs.org/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" - integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== - dependencies: - "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "11.2.2" - "@sinonjs/samsam" "^8.0.0" - diff "^5.2.0" - nise "^6.0.0" - supports-color "^7" - -sinon@^9.2.4: - version "9.2.4" - resolved "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" - integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg== - dependencies: - "@sinonjs/commons" "^1.8.1" - "@sinonjs/fake-timers" "^6.0.1" - "@sinonjs/samsam" "^5.3.1" - diff "^4.0.2" - nise "^4.0.4" - supports-color "^7.1.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@3.0.0, slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slashes@^3.0.12: - version "3.0.12" - resolved "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" - integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slide@~1.1.3: - version "1.1.6" - resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -smol-toml@~1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz#d9084a9e212142e3cab27ef4e2b8e8ba620bfe15" - integrity sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks-proxy-agent@^8.0.3, socks-proxy-agent@^8.0.5: - version "8.0.5" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" - integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== - dependencies: - agent-base "^7.1.2" - debug "^4.3.4" - socks "^2.8.3" - -socks@^2.6.2, socks@^2.8.3: - version "2.8.4" - resolved "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" - integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== - dependencies: - ip-address "^9.0.5" - smart-buffer "^4.2.0" - -sort-json@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/sort-json/-/sort-json-2.0.1.tgz#7338783bef807185dc37d5b02e3afd905d537cfb" - integrity sha512-s8cs2bcsQCzo/P2T/uoU6Js4dS/jnX8+4xunziNoq9qmSpZNCrRIAIvp4avsz0ST18HycV4z/7myJ7jsHWB2XQ== - dependencies: - detect-indent "^5.0.0" - detect-newline "^2.1.0" - minimist "^1.2.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.16, source-map-support@^0.5.21: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-please@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz#41912d82fe9504dd5a5424d2b4834e9a6cea56e0" - integrity sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw== - dependencies: - cross-spawn "^7.0.3" - -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - -spdx-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz#2c55f117362078d7409e6d7b08ce70a857cd3ed7" - integrity sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A== - dependencies: - array-find-index "^1.0.2" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-expression-parse@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" - integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.21" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" - integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== - -spdx-license-list@^6.9.0: - version "6.9.0" - resolved "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.9.0.tgz#5543abb3a15f985a12808f642a622d2721c372ad" - integrity sha512-L2jl5vc2j6jxWcNCvcVj/BW9A8yGIG02Dw+IUw0ZxDM70f7Ylf5Hq39appV1BI9yxyWQRpq2TQ1qaXvf+yjkqA== - -spdx-ranges@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" - integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA== - -spdx-satisfies@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz#9a09a68d80f5f1a31cfaebb384b0c6009e4969fe" - integrity sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA== - dependencies: - spdx-compare "^1.0.0" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -split2@^3.0.0, split2@^3.2.2: - version "3.2.2" - resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.0, split@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" - integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -ssri@^10.0.0, ssri@^10.0.6: - version "10.0.6" - resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - -ssri@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" - integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== - dependencies: - minipass "^3.1.1" - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -standard-version@^9, standard-version@^9.5.0: - version "9.5.0" - resolved "https://registry.npmjs.org/standard-version/-/standard-version-9.5.0.tgz#851d6dcddf5320d5079601832aeb185dbf497949" - integrity sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q== - dependencies: - chalk "^2.4.2" - conventional-changelog "3.1.25" - conventional-changelog-config-spec "2.1.0" - conventional-changelog-conventionalcommits "4.6.3" - conventional-recommended-bump "6.1.0" - detect-indent "^6.0.0" - detect-newline "^3.1.0" - dotgitignore "^2.1.0" - figures "^3.1.0" - find-up "^5.0.0" - git-semver-tags "^4.0.0" - semver "^7.1.1" - stringify-package "^1.0.1" - yargs "^16.0.0" - -stream-chain@^2.2.5: - version "2.2.5" - resolved "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" - integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== - -stream-json@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" - integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== - dependencies: - stream-chain "^2.2.5" - -streamroller@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" - integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - fs-extra "^8.1.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^1.0.1, "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, string-width@^5.0.1, string-width@^5.1.2: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.trim@^1.2.10: - version "1.2.10" - resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" - integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - define-data-property "^1.1.4" - define-properties "^1.2.1" - es-abstract "^1.23.5" - es-object-atoms "^1.0.0" - has-property-descriptors "^1.0.2" - -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: - version "1.0.9" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" - integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.2" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -stringify-package@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" - integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1, strip-ansi@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz#0d8b7d01b23848ed7dbdf4baaaa31a8250d8cfa0" - integrity sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strnum@^1.0.5: - version "1.1.2" - resolved "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" - integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== - -strong-log-transformer@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - -stylus-lookup@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-3.0.2.tgz#c9eca3ff799691020f30b382260a67355fefdddd" - integrity sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg== - dependencies: - commander "^2.8.1" - debug "^4.1.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.9.1: - version "0.9.2" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" - integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table@^6.9.0: - version "6.9.0" - resolved "https://registry.npmjs.org/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" - integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== - dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar-stream@~2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@6.2.1, tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -temp@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz#671ad63d57be0fe9d7294664b3fc400636678a60" - integrity sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA== - -tempfile@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz#5376a3492de7c54150d0cc0612c3f00e2cdaf76c" - integrity sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw== - dependencies: - temp-dir "^2.0.0" - uuid "^3.3.2" - -terminal-link@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -tiny-invariant@^1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - -tinyglobby@^0.2.9: - version "0.2.12" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" - integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== - dependencies: - fdir "^6.4.3" - picomatch "^4.0.2" - -tinyrainbow@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" - integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== - -tinyspy@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" - integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@~0.2.1: - version "0.2.3" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -treeify@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" - integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== - -treeverse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" - integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== - -ts-jest@^29, ts-jest@^29.3.0: - version "29.3.0" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.0.tgz#8fc867616619dafeac150b818056badfe07708d5" - integrity sha512-4bfGBX7Gd1Aqz3SyeDS9O276wEU/BInZxskPrbhZLyv+c1wskDCqDFMJQJLWrIr/fKoAH4GE5dKUlrdyvo+39A== - dependencies: - bs-logger "^0.2.6" - ejs "^3.1.10" - fast-json-stable-stringify "^2.1.0" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.1" - type-fest "^4.37.0" - yargs-parser "^21.1.1" - -ts-jest@^29.2.5: - version "29.3.1" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.1.tgz#2e459e1f94a833bd8216ba4b045fac948e265937" - integrity sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ== - dependencies: - bs-logger "^0.2.6" - ejs "^3.1.10" - fast-json-stable-stringify "^2.1.0" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "^4.1.2" - make-error "^1.3.6" - semver "^7.7.1" - type-fest "^4.38.0" - yargs-parser "^21.1.1" - -ts-mock-imports@^1.3.16: - version "1.3.16" - resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" - integrity sha512-BJ3SShPRHcMC9IzW1iFk7h1I4/nkzetB8w0LQySC4Ly14vVKpBr0NOIX8gjLM9I9mo9JViFqlctX0dGWW2iyhA== - -ts-morph@~24.0.0: - version "24.0.0" - resolved "https://registry.npmjs.org/ts-morph/-/ts-morph-24.0.0.tgz#6249b526ade40cf99c8803e7abdae6c65882e58e" - integrity sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw== - dependencies: - "@ts-morph/common" "~0.25.0" - code-block-writer "^13.0.3" - -ts-node@^10.9.1, ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.10.1, tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2: - version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tuf-js@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" - integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== - dependencies: - "@tufjs/models" "1.0.4" - debug "^4.3.4" - make-fetch-happen "^11.1.1" - -tuf-js@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" - integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== - dependencies: - "@tufjs/models" "2.0.1" - debug "^4.3.4" - make-fetch-happen "^13.0.1" - -tunnel@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" - integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-detect@^4.0.8, type-detect@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" - integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-fest@^1.0.1: - version "1.4.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - -type-fest@^2.13.0: - version "2.19.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type-fest@^4.37.0: - version "4.38.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.38.0.tgz#659fa14d1a71c2811400aa3b5272627e0c1e6b96" - integrity sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg== - -type-fest@^4.38.0: - version "4.39.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e" - integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w== - -typed-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" - integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-typed-array "^1.1.14" - -typed-array-byte-length@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" - integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== - dependencies: - call-bind "^1.0.8" - for-each "^0.3.3" - gopd "^1.2.0" - has-proto "^1.2.0" - is-typed-array "^1.1.14" - -typed-array-byte-offset@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" - integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - for-each "^0.3.3" - gopd "^1.2.0" - has-proto "^1.2.0" - is-typed-array "^1.1.15" - reflect.getprototypeof "^1.0.9" - -typed-array-length@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" - integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== - dependencies: - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - is-typed-array "^1.1.13" - possible-typed-array-names "^1.0.0" - reflect.getprototypeof "^1.0.6" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript-json-schema@^0.65.1: - version "0.65.1" - resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.65.1.tgz#24840812f69b220b75d86ed87e220b3b3345db2c" - integrity sha512-tuGH7ff2jPaUYi6as3lHyHcKpSmXIqN7/mu50x3HlYn0EHzLpmt3nplZ7EuhUkO0eqDRc9GqWNkfjgBPIS9kxg== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/node" "^18.11.9" - glob "^7.1.7" - path-equal "^1.2.5" - safe-stable-stringify "^2.2.0" - ts-node "^10.9.1" - typescript "~5.5.0" - yargs "^17.1.1" - -"typescript@>=3 < 6": - version "5.8.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== - -typescript@^3.9.10, typescript@^3.9.5, typescript@^3.9.7: - version "3.9.10" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -typescript@next: - version "5.9.0-dev.20250326" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.0-dev.20250326.tgz#2173fea7121db6979e80fdbc239476c109ab0deb" - integrity sha512-v95UmcM97b/++aKo6u/0+SgRJP8qjKEHsAQBBXss+A6zEaUM5cZjVzGPpI5veXugK2dJKLWvLEjTT/ATgHMReQ== - -typescript@~5.4: - version "5.4.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -typescript@~5.5.0, typescript@~5.5.4: - version "5.5.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== - -typescript@~5.6.3: - version "5.6.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" - integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== - -typescript@~5.7: - version "5.7.3" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" - integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -uglify-js@^3.1.4: - version "3.19.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" - integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== - -unbox-primitive@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" - integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== - dependencies: - call-bound "^1.0.3" - has-bigints "^1.0.2" - has-symbols "^1.1.0" - which-boxed-primitive "^1.1.1" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== - -undici@^5.25.4: - version "5.29.0" - resolved "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" - integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== - dependencies: - "@fastify/busboy" "^2.0.0" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== - -unique-filename@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" - integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== - dependencies: - unique-slug "^3.0.0" - -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - -unique-slug@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" - integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== - dependencies: - imurmurhash "^0.1.4" - -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" - integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== - dependencies: - crypto-random-string "^4.0.0" - -universal-user-agent@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" - integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" - integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -upath@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -update-browserslist-db@^1.1.1: - version "1.1.3" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -update-notifier@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" - integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== - dependencies: - boxen "^7.0.0" - chalk "^5.0.1" - configstore "^6.0.0" - has-yarn "^3.0.0" - import-lazy "^4.0.0" - is-ci "^3.0.1" - is-installed-globally "^0.4.0" - is-npm "^6.0.0" - is-yarn-global "^0.4.0" - latest-version "^7.0.0" - pupa "^3.1.0" - semver "^7.3.7" - semver-diff "^4.0.0" - xdg-basedir "^5.1.0" - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url@0.10.3: - version "0.10.3" - resolved "https://registry.npmjs.org/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA== - -util@^0.12.4: - version "0.12.5" - resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -utility-types@^3.10.0: - version "3.11.0" - resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" - integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== - -uuid@8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" - integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== - -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^3.3.2, uuid@^3.3.3: - version "3.4.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@5.0.1, validate-npm-package-name@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== - dependencies: - builtins "^1.0.3" - -vandium-utils@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/vandium-utils/-/vandium-utils-1.2.0.tgz#44735de4b7641a05de59ebe945f174e582db4f59" - integrity sha512-yxYUDZz4BNo0CW/z5w4mvclitt5zolY7zjW97i6tTE+sU63cxYs1A6Bl9+jtIQa3+0hkeqY87k+7ptRvmeHe3g== - -vandium-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/vandium-utils/-/vandium-utils-2.0.0.tgz#87389bdcb85551aaaba1cc95937ba756589214fa" - integrity sha512-XWbQ/0H03TpYDXk8sLScBEZpE7TbA0CHDL6/Xjt37IBYKLsHUQuBlL44ttAUs9zoBOLFxsW7HehXcuWCNyqOxQ== - -walk-up-path@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" - integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== - -walkdir@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" - integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -wcwidth@^1.0.0, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" - integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== - dependencies: - is-bigint "^1.1.0" - is-boolean-object "^1.2.1" - is-number-object "^1.1.1" - is-string "^1.1.1" - is-symbol "^1.1.1" - -which-builtin-type@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" - integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== - dependencies: - call-bound "^1.0.2" - function.prototype.name "^1.1.6" - has-tostringtag "^1.0.2" - is-async-function "^2.0.0" - is-date-object "^1.1.0" - is-finalizationregistry "^1.1.0" - is-generator-function "^1.0.10" - is-regex "^1.2.1" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.1.0" - which-collection "^1.0.2" - which-typed-array "^1.1.16" - -which-collection@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" - integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== - dependencies: - is-map "^2.0.3" - is-set "^2.0.3" - is-weakmap "^2.0.2" - is-weakset "^2.0.3" - -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.2: - version "1.1.19" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" - integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== - dependencies: - isexe "^2.0.0" - -which@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" - integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== - dependencies: - isexe "^3.1.1" - -wide-align@1.1.5, wide-align@^1.1.0, wide-align@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -widest-line@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" - integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== - dependencies: - string-width "^5.0.1" - -winston-transport@^4.9.0: - version "4.9.0" - resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" - integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== - dependencies: - logform "^2.7.0" - readable-stream "^3.6.2" - triple-beam "^1.3.0" - -winston@^3.7.2: - version "3.17.0" - resolved "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423" - integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.7.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.9.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -workerpool@^6.5.1: - version "6.5.1" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" - integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@5.0.1, write-file-atomic@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - -write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@4.0.0, write-pkg@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" - integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== - -xml2js@0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" - integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - -xml@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== - -xmlbuilder@^15.1.1: - version "15.1.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" - integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== - -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@1.10.2, yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@2.7.0, yaml@^2.6.0: - version "2.7.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" - integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== - -yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@17.7.2, yargs@^17.1.1, yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.0.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From f91c1bc70d9910c1e82d5de3fb9436ad1194a77c Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 14 May 2025 15:47:12 -0400 Subject: [PATCH 20/39] fix(bedrockl2): implemented review comments --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 90 +- .../bedrock/agents/action-group.ts | 23 +- .../bedrock/agents/agent-alias.ts | 21 +- .../bedrock/agents/agent-collaboration.ts | 36 + .../bedrock/agents/agent-collaborator.ts | 26 +- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 277 ++---- .../bedrock/agents/api-executor.ts | 22 +- .../bedrock/agents/api-schema.ts | 70 +- .../bedrock/agents/memory.ts | 29 +- .../bedrock/agents/orchestration-executor.ts | 28 +- .../bedrock/agents/orchestration.ts | 26 - .../bedrock/agents/prompt-override.ts | 293 ++++-- .../aws-bedrock-alpha/bedrock/agents/utils.ts | 14 +- .../aws-bedrock-alpha/bedrock/index.ts | 3 +- .../bedrock/test/models.test.ts | 141 --- .../test/bedrock/agents/agent-alias.test.ts | 2 +- .../bedrock/agents/agent-collaborator.test.ts | 22 +- .../test/bedrock/agents/agent.test.ts | 54 +- .../test/bedrock/agents/api-executor.test.ts | 4 +- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 - ...aultTestDeployAssertE2AFA81B.template.json | 36 - ...aws-cdk-bedrock-action-group-1.assets.json | 20 - ...s-cdk-bedrock-action-group-1.template.json | 282 ------ .../integ.action-group.js.snapshot/cdk.out | 1 - .../integ.action-group.js.snapshot/integ.json | 12 - .../manifest.json | 264 ----- .../integ.action-group.js.snapshot/tree.json | 1 - .../test/bedrock/agents/integ.action-group.ts | 2 +- ...efaultTestDeployAssertB2859CB2.assets.json | 20 - ...aultTestDeployAssertB2859CB2.template.json | 36 - ...k-bedrock-agent-collaborator-1.assets.json | 20 - ...bedrock-agent-collaborator-1.template.json | 349 ------- .../cdk.out | 1 - .../integ.json | 12 - .../manifest.json | 326 ------- .../tree.json | 1 - .../agents/integ.agent-collaborator.ts | 25 +- ...efaultTestDeployAssertB292ADF7.assets.json | 20 - ...aultTestDeployAssertB292ADF7.template.json | 36 - .../aws-cdk-bedrock-agent-1.assets.json | 20 - .../aws-cdk-bedrock-agent-1.template.json | 173 ---- .../agents/integ.agent.js.snapshot/cdk.out | 1 - .../agents/integ.agent.js.snapshot/integ.json | 12 - .../integ.agent.js.snapshot/manifest.json | 198 ---- .../agents/integ.agent.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert1DDDDC57.assets.json | 20 - ...aultTestDeployAssert1DDDDC57.template.json | 36 - .../schema/s3-api-schema.json | 33 - ...f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip | 3 - .../index.js | 1 - .../index.py | 388 -------- .../aws-cdk-bedrock-api-schema-1.assets.json | 76 -- ...aws-cdk-bedrock-api-schema-1.template.json | 905 ------------------ .../integ.api-schema.js.snapshot/cdk.out | 1 - .../integ.api-schema.js.snapshot/integ.json | 12 - .../manifest.json | 634 ------------ .../integ.api-schema.js.snapshot/tree.json | 1 - .../test/bedrock/agents/integ.api-schema.ts | 4 +- ...efaultTestDeployAssert5AD90360.assets.json | 20 - ...aultTestDeployAssert5AD90360.template.json | 36 - .../aws-cdk-bedrock-memory-1.assets.json | 20 - .../aws-cdk-bedrock-memory-1.template.json | 544 ----------- .../agents/integ.memory.js.snapshot/cdk.out | 1 - .../integ.memory.js.snapshot/integ.json | 12 - .../integ.memory.js.snapshot/manifest.json | 420 -------- .../agents/integ.memory.js.snapshot/tree.json | 1 - .../test/bedrock/agents/integ.memory.ts | 4 +- ...efaultTestDeployAssertACFAFF30.assets.json | 20 - ...aultTestDeployAssertACFAFF30.template.json | 36 - ...ws-cdk-bedrock-orchestration-1.assets.json | 20 - ...-cdk-bedrock-orchestration-1.template.json | 282 ------ .../integ.orchestration.js.snapshot/cdk.out | 1 - .../integ.json | 12 - .../manifest.json | 264 ----- .../integ.orchestration.js.snapshot/tree.json | 1 - .../bedrock/agents/integ.orchestration.ts | 14 +- ...efaultTestDeployAssert7D38F1F4.assets.json | 20 - ...aultTestDeployAssert7D38F1F4.template.json | 36 - ...-cdk-bedrock-prompt-override-1.assets.json | 20 - ...dk-bedrock-prompt-override-1.template.json | 644 ------------- .../integ.prompt-override.js.snapshot/cdk.out | 1 - .../integ.json | 12 - .../manifest.json | 464 --------- .../tree.json | 1 - .../bedrock/agents/integ.prompt-override.ts | 54 +- .../test/bedrock/agents/models.test.ts | 271 ++++++ .../agents/orchestration-executor.test.ts | 26 +- .../bedrock/agents/prompt-override.test.ts | 134 ++- 88 files changed, 1037 insertions(+), 7538 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaboration.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/models.test.ts diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 30661621fc008..2422e5a19c3f5 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -71,6 +71,8 @@ The Bedrock Agent class supports the following properties. | userInputEnabled | boolean | No | Select whether the agent can prompt additional information from the user when it lacks enough information. Defaults to false | | codeInterpreterEnabled | boolean | No | Select whether the agent can generate, run, and troubleshoot code when trying to complete a task. Defaults to false | | forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to true | +| agentCollaboration | AgentCollaboration | No | Configuration for agent collaboration settings, including type and collaborators. This property allows you to define how the agent collaborates with other agents and what collaborators it can work with. Defaults to no agent collaboration configuration | +| customOrchestrationExecutor | CustomOrchestrationExecutor | No | The Lambda function to use for custom orchestration. If provided, orchestrationType is set to CUSTOM_ORCHESTRATION. If not provided, orchestrationType defaults to DEFAULT. Defaults to default orchestration | ### Action Groups @@ -88,7 +90,7 @@ const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { const actionGroup = new bedrock.AgentActionGroup({ name: 'query-library', description: 'Use these functions to get information about the books in the library.', - executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction), + executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), enabled: true, apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')), }); @@ -164,7 +166,7 @@ const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { const actionGroup = new bedrock.AgentActionGroup({ name: 'query-library', description: 'Use these functions to get information about the books in the library.', - executor: bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction), + executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), enabled: true, apiSchema: bedrock.ApiSchema.fromS3File(schemaBucket, 'inputschema/action-group.yaml'), }); @@ -184,16 +186,16 @@ Creating an agent alias will not prepare the agent, so if you create an alias us ### Prompt Override Configuration -Bedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. You can disable steps or create a new prompt template. The following steps can be configured: +Bedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. The implementation provides type-safe configurations for each step type, ensuring correct usage at compile time. The following steps can be configured: -- PRE_PROCESSING -- ORCHESTRATION -- POST_PROCESSING -- ROUTING_CLASSIFIER -- MEMORY_SUMMARIZATION -- KNOWLEDGE_BASE_RESPONSE_GENERATION +- PRE_PROCESSING: Prepares the user input for orchestration +- ORCHESTRATION: Main step that determines the agent's actions +- POST_PROCESSING: Refines the agent's response +- ROUTING_CLASSIFIER: Classifies and routes requests to appropriate collaborators +- MEMORY_SUMMARIZATION: Summarizes conversation history for memory retention +- KNOWLEDGE_BASE_RESPONSE_GENERATION: Generates responses using knowledge base content -Example: +Example with pre-processing configuration: ```ts fixture=default const agent = new bedrock.Agent(this, 'Agent', { @@ -216,7 +218,24 @@ const agent = new bedrock.Agent(this, 'Agent', { }); ``` -You can also use a custom Lambda parser to process the model's output: +Example with routing classifier and foundation model: + +```ts fixture=default +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, + instruction: 'You are a helpful assistant.', + promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.fromSteps([ + { + stepType: bedrock.AgentStepType.ROUTING_CLASSIFIER, + stepEnabled: true, + customPromptTemplate: 'Your routing template here', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_V2 + } as bedrock.PromptRoutingClassifierConfigCustomParser + ]) +}); +``` + +Using a custom Lambda parser: ```ts fixture=default const parserFunction = new lambda.Function(this, 'ParserFunction', { @@ -230,17 +249,16 @@ const agent = new bedrock.Agent(this, 'Agent', { instruction: 'You are a helpful assistant.', promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({ parser: parserFunction, - steps: [ - { - stepType: bedrock.AgentStepType.PRE_PROCESSING, - useCustomParser: true, - customPromptTemplate: 'Your custom prompt template here', - } - ] + preProcessingStep: { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + useCustomParser: true + } }) }); ``` +Foundation models can only be specified for the ROUTING_CLASSIFIER step. + ### Memory Configuration Agents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience. @@ -282,15 +300,17 @@ const customerSupportAlias = new bedrock.AgentAlias(this, 'CustomerSupportAlias' const mainAgent = new bedrock.Agent(this, 'MainAgent', { instruction: 'You route specialized questions to other agents.', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, - agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, - agentCollaborators: [ - new bedrock.AgentCollaborator(this, 'CustomerSupportCollaborator', { - agentAlias: customerSupportAlias, - collaborationInstruction: 'Route customer support questions to this agent.', - collaboratorName: 'CustomerSupport', - relayConversationHistory: true, - }), - ], + agentCollaboration: { + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [ + new bedrock.AgentCollaborator({ + agentAlias: customerSupportAlias, + collaborationInstruction: 'Route customer support questions to this agent.', + collaboratorName: 'CustomerSupport', + relayConversationHistory: true + }), + ], + }, }); ``` @@ -298,6 +318,8 @@ const mainAgent = new bedrock.Agent(this, 'MainAgent', { Custom Orchestration allows you to override the default agent orchestration flow with your own Lambda function. This enables more control over how the agent processes user inputs and invokes action groups. +When you provide a customOrchestrationExecutor, the agent's orchestrationType is automatically set to CUSTOM_ORCHESTRATION. If no customOrchestrationExecutor is provided, the orchestrationType defaults to DEFAULT, using Amazon Bedrock's built-in orchestration. + Example: ```ts fixture=default @@ -310,10 +332,7 @@ const orchestrationFunction = new lambda.Function(this, 'OrchestrationFunction', const agent = new bedrock.Agent(this, 'CustomOrchestrationAgent', { instruction: 'You are a helpful assistant with custom orchestration logic.', foundationModel: bedrock.BedrockFoundationModel.AMAZON_NOVA_LITE_V1, - orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, - customOrchestration: { - executor: bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction), - }, + customOrchestrationExecutor: bedrock.CustomOrchestrationExecutor.fromLambda(orchestrationFunction), }); ``` @@ -323,7 +342,9 @@ After you have sufficiently iterated on your working draft and are satisfied wit To deploy your agent, you need to create an alias. During alias creation, Amazon Bedrock automatically creates a version of your agent. The alias points to this newly created version. You can point the alias to a previously created version if necessary. You then configure your application to make API calls to that alias. -By default, the Agent resource does not create any aliases, and you can use the 'DRAFT' version. +By default, the Agent resource creates a test alias named 'AgentTestAlias' that points to the 'DRAFT' version. This test alias is accessible via the `testAlias` property of the agent. You can also create additional aliases for different environments using the AgentAlias construct. + +When redeploying an agent with changes, you must ensure the agent version is updated to avoid deployment failures with "agent already exists" errors. The recommended way to handle this is to include the `lastUpdated` property in the agent's description, which automatically updates whenever the agent is modified. This ensures a new version is created on each deployment. Example: @@ -333,10 +354,9 @@ const agent = new bedrock.Agent(this, 'Agent', { instruction: 'You are a helpful and friendly agent that answers questions about literature.', }); -const agentAlias = new bedrock.AgentAlias(this, 'myalias', { +const agentAlias = new bedrock.AgentAlias(this, 'myAlias', { agentAliasName: 'production', agent: agent, - agentVersion: '1', // optional - description: 'Production version of my agent' + description: `Production version of my agent. Created at ${agent.lastUpdated}` // ensure the version update }); ``` diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts index 0688e0ba5295f..543fbe98f9a34 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts @@ -1,16 +1,8 @@ import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import * as crypto from 'crypto'; import { ActionGroupExecutor } from './api-executor'; import { ApiSchema } from './api-schema'; - -/** - * Error thrown when action group validation fails. - */ -class ActionGroupValidationError extends Error { - constructor(message: string) { - super(message); - this.name = 'ActionGroupValidationError'; - } -} +import { ValidationError } from './validation-helpers'; /****************************************************************************** * Signatures @@ -28,10 +20,8 @@ export class ParentActionGroupSignature { */ public static readonly CODE_INTERPRETER = new ParentActionGroupSignature('AMAZON.CodeInterpreter'); /** - * Constructor should be used as a temporary solution when a new signature is supported - * but its implementation in CDK hasn't been added yet. + * Constructor should be used as a temporary solution when a new signature is supported but its implementation in CDK hasn't been added yet. */ - constructor( /** * The AWS-defined signature value for this action group capability. @@ -53,8 +43,9 @@ export class ParentActionGroupSignature { export interface AgentActionGroupProps { /** * The name of the action group. + * @default - A unique name is generated in the format 'action_group_quick_start_UUID' */ - readonly name: string; + readonly name?: string; /** * A description of the action group. @@ -187,7 +178,7 @@ export class AgentActionGroup { // ------------------------------------------------------ // Set attributes or defaults // ------------------------------------------------------ - this.name = props.name; + this.name = props.name ?? `action_group_quick_start_${crypto.randomUUID()}`; this.description = props.description; this.apiSchema = props.apiSchema; this.executor = props.executor; @@ -199,7 +190,7 @@ export class AgentActionGroup { private validateProps(props: AgentActionGroupProps) { if (props.parentActionGroupSignature && (props.description || props.apiSchema || props.executor)) { - throw new ActionGroupValidationError( + throw new ValidationError( 'When parentActionGroupSignature is specified, you must leave the description, ' + 'apiSchema, and actionGroupExecutor fields blank for this action group', ); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts index 33591a892bb96..a562f9223d3e6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-alias.ts @@ -1,7 +1,6 @@ import { ArnFormat, aws_bedrock as bedrock, IResource, Resource, Stack } from 'aws-cdk-lib'; import * as events from 'aws-cdk-lib/aws-events'; import * as iam from 'aws-cdk-lib/aws-iam'; -import { md5hash } from 'aws-cdk-lib/core/lib/helpers-internal'; import { Construct } from 'constructs'; import { IAgent } from './agent'; @@ -14,12 +13,12 @@ import { IAgent } from './agent'; export interface IAgentAlias extends IResource { /** * The unique identifier of the agent alias. - * @example `TCLCITFZTN` + * @attributes */ readonly aliasId: string; /** * The ARN of the agent alias. - * @example `arn:aws:bedrock:us-east-1:123456789012:agent-alias/DNCJJYQKSU/TCLCITFZTN` + * @attributes */ readonly aliasArn: string; /** @@ -68,6 +67,8 @@ export abstract class AgentAliasBase extends Resource implements IAgentAlias { /** * Grant the given principal identity permissions to perform actions on this agent alias. + * Note: This grant will only work when the grantee is in the same AWS account + * where the agent alias is defined. Cross-account grant is not supported. */ public grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant { return iam.Grant.addToPrincipal({ @@ -80,6 +81,8 @@ export abstract class AgentAliasBase extends Resource implements IAgentAlias { /** * Grant the given identity permissions to invoke the agent alias. + * Note: This grant will only work when the grantee is in the same AWS account + * where the agent alias is defined. Cross-account invocation is not supported. */ public grantInvoke(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'bedrock:InvokeAgent'); @@ -87,6 +90,8 @@ export abstract class AgentAliasBase extends Resource implements IAgentAlias { /** * Grant the given identity permissions to get the agent alias. + * Note: This grant will only work when the grantee is in the same AWS account + * where the agent alias is defined. Cross-account agent read is not supported. */ public grantGet(grantee: iam.IGrantable): iam.Grant { return this.grant(grantee, 'bedrock:GetAgentAlias'); @@ -128,7 +133,7 @@ export interface AgentAliasProps { * The name for the agent alias. * This will be used as the physical name of the agent alias. * - * @default - "latest-{hash}" + * @default - "latest" */ readonly agentAliasName?: string; /** @@ -225,14 +230,12 @@ export class AgentAlias extends AgentAliasBase { constructor(scope: Construct, id: string, props: AgentAliasProps) { super(scope, id); - // Compute hash from agent, to recreate the resource when agent has changed - const hash = md5hash(props.agent.agentId + props.agentVersion + props.agent.lastUpdated); - // ------------------------------------------------------ // Set properties or defaults // ------------------------------------------------------ - // see https://github.com/awslabs/generative-ai-cdk-constructs/issues/947 - this.aliasName = props.agentAliasName ?? `latest-${hash}`; + // see https://github.com/awslabs/generative-ai-cdk-constructs/issues/947 - The default name without any version update may result in this error. + // see https://github.com/awslabs/generative-ai-cdk-constructs/pull/1116 - If no agent version is provided then update the agent description for a new version. + this.aliasName = props.agentAliasName ?? 'latest'; this.agent = props.agent; // ------------------------------------------------------ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaboration.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaboration.ts new file mode 100644 index 0000000000000..7600c90d6697e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaboration.ts @@ -0,0 +1,36 @@ +import { AgentCollaborator, AgentCollaboratorType } from './agent-collaborator'; + +/** + * Configuration for agent collaboration settings. + */ +export interface AgentCollaborationConfig { + /** + * The collaboration type for the agent. + */ + readonly type: AgentCollaboratorType; + + /** + * Collaborators that this agent will work with. + */ + readonly collaborators: AgentCollaborator[]; +} + +/** + * Class to manage agent collaboration configuration. + */ +export class AgentCollaboration { + /** + * The collaboration type for the agent. + */ + public readonly type: AgentCollaboratorType; + + /** + * Collaborators that this agent will work with. + */ + public readonly collaborators: AgentCollaborator[]; + + constructor(config: AgentCollaborationConfig) { + this.type = config.type; + this.collaborators = config.collaborators; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts index 38254ad4164da..a1c3ee5796b7a 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -1,8 +1,7 @@ import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IGrantable, Grant } from 'aws-cdk-lib/aws-iam'; -import { Construct } from 'constructs'; -import { ValidationError } from 'aws-cdk-lib'; import { IAgentAlias } from './agent-alias'; +import { ValidationError } from './validation-helpers'; /** * Enum for collaborator's relay conversation history types. @@ -69,13 +68,10 @@ export interface AgentCollaboratorProps { } /****************************************************************************** - * DEF - Agent Collaborator Class + * Agent Collaborator Class *****************************************************************************/ -export class AgentCollaborator extends Construct { - // ------------------------------------------------------ - // Attributes - // ------------------------------------------------------ +export class AgentCollaborator { /** * The agent alias that this collaborator represents. * This is the agent that will be called upon for collaboration. @@ -99,8 +95,7 @@ export class AgentCollaborator extends Construct { */ public readonly relayConversationHistory?: boolean; - public constructor(scope: Construct, id: string, props: AgentCollaboratorProps) { - super(scope, id); + public constructor(props: AgentCollaboratorProps) { // Validate Props this.validateProps(props); @@ -116,18 +111,19 @@ export class AgentCollaborator extends Construct { private validateProps(props: AgentCollaboratorProps) { // Validate required properties if (!props.agentAlias) { - throw new ValidationError('agentAlias is required for AgentCollaborator', this); + throw new ValidationError('agentAlias is required for AgentCollaborator'); } + if (props.agentAlias.aliasId === 'TSTALIASID') { - throw new ValidationError('Agent cannot collaborate with TSTALIASID alias of another agent. Use a different alias to collaborate with.', this); + throw new ValidationError('Agent cannot collaborate with TSTALIASID alias of another agent'); } if (!props.collaborationInstruction || props.collaborationInstruction.trim() === '') { - throw new ValidationError('collaborationInstruction is required and cannot be empty for AgentCollaborator', this); + throw new ValidationError('collaborationInstruction is required and cannot be empty'); } if (!props.collaboratorName || props.collaboratorName.trim() === '') { - throw new ValidationError('collaboratorName is required and cannot be empty for AgentCollaborator', this); + throw new ValidationError('collaboratorName is required and cannot be empty'); } } @@ -148,9 +144,7 @@ export class AgentCollaborator extends Construct { } /** - * Grants the specified principal permissions to get the agent alias and invoke the agent - * from this collaborator. - * + * Grants the given identity permissions to collaborate with the agent * @param grantee The principal to grant permissions to * @returns The Grant object */ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 4a6ea1eb729c7..e5ec1a448efa7 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -1,20 +1,37 @@ import * as crypto from 'crypto'; -import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError, Aws } from 'aws-cdk-lib/core'; +import { Arn, ArnFormat, Duration, IResource, Lazy, Names, Resource, Stack, Token, ValidationError } from 'aws-cdk-lib/core'; import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as events from 'aws-cdk-lib/aws-events'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as kms from 'aws-cdk-lib/aws-kms'; +import * as s3 from 'aws-cdk-lib/aws-s3'; import { Construct, IConstruct } from 'constructs'; // Internal Libs import { AgentActionGroup } from './action-group'; import { AgentAlias, IAgentAlias } from './agent-alias'; -import { AgentCollaborator, AgentCollaboratorType } from './agent-collaborator'; +import { AgentCollaborator } from './agent-collaborator'; +import { AgentCollaboration } from './agent-collaboration'; import { PromptOverrideConfiguration } from './prompt-override'; import * as validation from './validation-helpers'; import { IInvokable } from '.././models'; import { Memory } from './memory'; -import { OrchestrationType, CustomOrchestration } from './orchestration'; +import { CustomOrchestrationExecutor, OrchestrationType } from './orchestration-executor'; + +/****************************************************************************** + * CONSTANTS + *****************************************************************************/ +/** + * The minimum number of characters required for an agent instruction. + * @internal + */ +const MIN_INSTRUCTION_LENGTH = 40; + +/** + * The maximum length for the node address in permission policy names. + * @internal + */ +const MAX_POLICY_NAME_NODE_LENGTH = 16; /****************************************************************************** * COMMON @@ -43,6 +60,7 @@ export interface IAgent extends IResource, iam.IGrantable { readonly kmsKey?: kms.IKey; /** * When this agent was last updated. + * @attribute */ readonly lastUpdated?: string; @@ -110,7 +128,7 @@ export abstract class AgentBase extends Resource implements IAgent { * - detail: { 'agent-id': [this.agentId] } * @returns An EventBridge Rule configured for agent events */ - public onEvent(id: string, options: events.OnEventOptions): events.Rule { + public onEvent(id: string, options: events.OnEventOptions= {}): events.Rule { const rule = new events.Rule(this, id, options); rule.addTarget(options.target); rule.addEventPattern({ @@ -149,13 +167,19 @@ export abstract class AgentBase extends Resource implements IAgent { *****************************************************************************/ /** * Properties for creating a CDK managed Bedrock Agent. + * TODO: Knowledge bases configuration will be added in a future update + * TODO: Guardrails configuration will be added in a future update + * TODO: Inference profile configuration will be added in a future update + * */ export interface AgentProps { + /** * The name of the agent. * This will be used as the physical name of the agent. * * @default - A name is generated by CDK. + * Supported pattern : ^([0-9a-zA-Z][_-]?){1,100}$ */ readonly agentName?: string; /** @@ -168,9 +192,9 @@ export interface AgentProps { */ readonly foundationModel: IInvokable; /** - * The existing IAM Role for the agent to use. - * Ensure the role has a trust policy that allows the Bedrock service to assume the role. - * + * An existing IAM Role to associate with this agent. + * Use this property when you want to reuse an existing IAM role rather than create a new one. + * The role must have a trust policy that allows the Bedrock service to assume it. * @default - A new role is created for you. */ readonly existingRole?: iam.IRole; @@ -187,7 +211,7 @@ export interface AgentProps { * during this time, the session expires and Amazon Bedrock deletes any data * provided before the timeout. * - * @default - 1 hour + * @default - 10 minutes */ readonly idleSessionTTL?: Duration; /** @@ -230,7 +254,7 @@ export interface AgentProps { /** * Whether to delete the resource even if it's in use. * - * @default - true + * @default - false */ readonly forceDelete?: boolean; /** @@ -243,29 +267,21 @@ export interface AgentProps { */ readonly memory?: Memory; /** - * The collaboration type for the agent. + * Configuration for agent collaboration settings, including AgentCollaboratorType and AgentCollaborators. + * This property allows you to define how the agent collaborates with other agents + * and what collaborators it can work with. * - * @default - No collaboration (AgentCollaboratorType.DISABLED). + * @default - No agent collaboration configuration. */ - readonly agentCollaboration?: AgentCollaboratorType; + readonly agentCollaboration?: AgentCollaboration; /** - * Collaborators that this agent will work with. + * The Lambda function to use for custom orchestration. + * If provided, custom orchestration will be used. + * If not provided, default orchestration will be used. * - * @default - No collaborators. + * @default - Default orchestration */ - readonly agentCollaborators?: AgentCollaborator[]; - /** - * Details of custom orchestration for the agent. - * - * @default - Standard orchestration. - */ - readonly customOrchestration?: CustomOrchestration; - /** - * The type of orchestration to use for the agent. - * - * @default - STANDARD - */ - readonly orchestrationType?: OrchestrationType; + readonly customOrchestrationExecutor?: CustomOrchestrationExecutor; } /****************************************************************************** * ATTRS FOR IMPORTED CONSTRUCT @@ -289,7 +305,6 @@ export interface AgentAttributes { * @default undefined - An AWS managed key is used */ readonly kmsKeyArn?: string; - /** * When this agent was last updated. * @default undefined - No last updated timestamp is provided @@ -371,101 +386,35 @@ export class Agent extends AgentBase implements IAgent { * The principal to grant permissions to */ public readonly grantPrincipal: iam.IPrincipal; - // ------------------------------------------------------ - // CDK-only attributes - // ------------------------------------------------------ - /** - * The name of the agent. - */ - public readonly name: string; - /** - * Whether the agent will automatically update the DRAFT version of the agent after - * making changes to the agent. - */ - public readonly shouldPrepareAgent: boolean; - /** - * How long sessions should be kept open for the agent. - */ - public readonly idleSessionTTL: Duration; - /** - * The foundation model used for orchestration by the agent. - */ - public readonly foundationModel: IInvokable; /** - * The default test alias for this agent. This corresponds to the test alias - * (`TSTALIASID`) that points to the working (`DRAFT`) version. + * Default alias of the agent */ public readonly testAlias: IAgentAlias; /** - * Whether the agent can prompt additional information from the user when it does not have - * enough information to respond to an utterance - */ - public readonly userInputEnabled: boolean; - /** - * Whether the agent can generate, run, and troubleshoot code when trying to complete a task. - */ - public readonly codeInterpreterEnabled: boolean; - /** - * Whether the resource will be deleted even if it's in use. - */ - public readonly forceDelete: boolean; - /** - * Agent collaboration type. - * @attribute - */ - public readonly agentCollaboration?: AgentCollaboratorType; - /** - * Agent collaborators. - * @attribute - */ - public readonly agentCollaborators?: AgentCollaborator[]; - /** - * Custom orchestration configuration. + * action groups associated with the ageny */ - public readonly customOrchestration?: CustomOrchestration; - /** - * The type of orchestration for the agent. - */ - public readonly orchestrationType?: OrchestrationType; - // ------------------------------------------------------ - // CDK-only attributes (optional) + public readonly actionGroups: AgentActionGroup[] = []; // ------------------------------------------------------ - /** - * The description for the agent. - */ - public readonly description?: string; - /** - * The instruction used by the agent. This determines how the agent will perform his task. - */ - public readonly instruction?: string; - /** - * Overrides some prompt templates in different parts of an agent sequence configuration. - * - * @default - No overrides are provided. - */ - readonly promptOverrideConfiguration?: PromptOverrideConfiguration; - /** - * The memory configuration for the agent. - */ - public readonly memory?: Memory; - // ------------------------------------------------------ - // Lazy Attributes + // CDK-only attributes // ------------------------------------------------------ /** - * The action groups associated with the agent. + * The name of the agent. */ - public actionGroups: AgentActionGroup[]; + public readonly name: string; + // ------------------------------------------------------ // Internal Only // ------------------------------------------------------ - /** - * The L1 representation of the agent - */ - private readonly __resource: bedrock.CfnAgent; - private readonly ROLE_NAME_SUFFIX = '-bedrockagent'; - private readonly MAXLENGTH_FOR_ROLE_NAME = 64; + private readonly idleSessionTTL: Duration; + private readonly foundationModel: IInvokable; + private readonly userInputEnabled: boolean; + private readonly codeInterpreterEnabled: boolean; + private readonly agentCollaboration?: AgentCollaboration; + private readonly customOrchestrationExecutor?: CustomOrchestrationExecutor; + private readonly promptOverrideConfiguration?: PromptOverrideConfiguration; + private readonly __resource: bedrock.CfnAgent; // ------------------------------------------------------ // CONSTRUCTOR @@ -478,17 +427,15 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ if (props.instruction !== undefined && !Token.isUnresolved(props.instruction) && - props.instruction.length < 40) { - throw new ValidationError('instruction must be at least 40 characters', this); - } - - // Validate orchestration configuration - if (props.orchestrationType === OrchestrationType.CUSTOM_ORCHESTRATION && !props.customOrchestration) { - throw new ValidationError('customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION', this); + props.instruction.length < MIN_INSTRUCTION_LENGTH) { + throw new ValidationError(`instruction must be at least ${MIN_INSTRUCTION_LENGTH} characters`, this); } - if (props.customOrchestration && props.orchestrationType !== OrchestrationType.CUSTOM_ORCHESTRATION) { - throw new ValidationError('customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION', this); + // Validate idleSessionTTL + if (props.idleSessionTTL !== undefined && + !Token.isUnresolved(props.idleSessionTTL) && + (props.idleSessionTTL.toMinutes() < 1 || props.idleSessionTTL.toMinutes() > 60)) { + throw new ValidationError('idleSessionTTL must be between 1 and 60 minutes', this); } // ------------------------------------------------------ @@ -496,22 +443,14 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ this.name = props.agentName ?? this.generatePhysicalName() + this.ROLE_NAME_SUFFIX; - this.idleSessionTTL = props.idleSessionTTL ?? Duration.hours(1); - this.shouldPrepareAgent = props.shouldPrepareAgent ?? false; + this.idleSessionTTL = props.idleSessionTTL ?? Duration.minutes(10); this.userInputEnabled = props.userInputEnabled ?? false; this.codeInterpreterEnabled = props.codeInterpreterEnabled ?? false; this.foundationModel = props.foundationModel; - this.forceDelete = props.forceDelete ?? false; - // Optional - this.description = props.description; - this.instruction = props.instruction; this.promptOverrideConfiguration = props.promptOverrideConfiguration; this.kmsKey = props.kmsKey; - this.memory = props.memory; - this.agentCollaboration = props.agentCollaboration; - this.customOrchestration = props.customOrchestration; - this.orchestrationType = props.orchestrationType; + this.customOrchestrationExecutor = props.customOrchestrationExecutor; // ------------------------------------------------------ // Role @@ -545,8 +484,6 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ // Set Lazy Props initial values // ------------------------------------------------------ - this.actionGroups = []; - this.agentCollaborators = []; // Add Default Action Groups this.addActionGroup(AgentActionGroup.userInput(this.userInputEnabled)); this.addActionGroup(AgentActionGroup.codeInterpreter(this.codeInterpreterEnabled)); @@ -556,24 +493,25 @@ export class Agent extends AgentBase implements IAgent { props.actionGroups?.forEach(ag => { this.addActionGroup(ag); }); - props.agentCollaborators?.forEach(ac => { - this.addAgentCollaborator(ac); - }); + + // Set agent collaboration configuration + this.agentCollaboration = props.agentCollaboration; + if (props.agentCollaboration) { + props.agentCollaboration.collaborators.forEach(ac => { + this.addAgentCollaborator(ac); + }); + } // Grant permissions for custom orchestration if provided - if (this.customOrchestration?.executor?.lambdaFunction) { - this.customOrchestration.executor.lambdaFunction.grantInvoke(this.role); - this.customOrchestration.executor.lambdaFunction.addPermission(`OrchestrationLambdaInvocationPolicy-${this.node.addr.slice(0, 16)}`, { + if (this.customOrchestrationExecutor?.lambdaFunction) { + this.customOrchestrationExecutor.lambdaFunction.grantInvoke(this.role); + this.customOrchestrationExecutor.lambdaFunction.addPermission(`OrchestrationLambdaInvocationPolicy-${this.node.addr.slice(0, MAX_POLICY_NAME_NODE_LENGTH)}`, { principal: new iam.ServicePrincipal('bedrock.amazonaws.com'), sourceArn: Lazy.string({ produce: () => this.agentArn }), - sourceAccount: Stack.of(this).account, + sourceAccount: { Ref: 'AWS::AccountId' } as any, }); } - // ------------------------------------------------------ - // Set Lazy Validations - // ------------------------------------------------------ - // ------------------------------------------------------ // CFN Props - With Lazy support // ------------------------------------------------------ @@ -581,19 +519,19 @@ export class Agent extends AgentBase implements IAgent { actionGroups: Lazy.any({ produce: () => this.renderActionGroups() }, { omitEmptyArray: true }), agentName: this.name, agentResourceRoleArn: this.role.roleArn, - autoPrepare: this.shouldPrepareAgent, + autoPrepare: props.shouldPrepareAgent ?? false, customerEncryptionKeyArn: props.kmsKey?.keyArn, description: props.description, foundationModel: this.foundationModel.invokableArn, idleSessionTtlInSeconds: this.idleSessionTTL.toSeconds(), instruction: props.instruction, - memoryConfiguration: props.memory, + memoryConfiguration: props.memory?._render(), promptOverrideConfiguration: this.promptOverrideConfiguration?._render(), - skipResourceInUseCheckOnDelete: this.forceDelete, - agentCollaboration: this.agentCollaboration, + skipResourceInUseCheckOnDelete: props.forceDelete ?? false, + agentCollaboration: props.agentCollaboration?.type, agentCollaborators: Lazy.any({ produce: () => this.renderAgentCollaborators() }, { omitEmptyArray: true }), customOrchestration: this.renderCustomOrchestration(), - orchestrationType: this.orchestrationType, + orchestrationType: this.customOrchestrationExecutor ? OrchestrationType.CUSTOM_ORCHESTRATION : OrchestrationType.DEFAULT, }; // ------------------------------------------------------ @@ -601,13 +539,8 @@ export class Agent extends AgentBase implements IAgent { // ------------------------------------------------------ this.__resource = new bedrock.CfnAgent(this, 'Resource', cfnProps); - this.agentId = this.getResourceNameAttribute(this.__resource.attrAgentId); - this.agentArn = this.getResourceArnAttribute(this.__resource.attrAgentArn, { - service: 'bedrock', - resource: 'agent', - resourceName: this.physicalName, - arnFormat: ArnFormat.SLASH_RESOURCE_NAME, - }); + this.agentId = this.__resource.attrAgentId; + this.agentArn = this.__resource.attrAgentArn; this.agentVersion = this.__resource.attrAgentVersion; this.lastUpdated = this.__resource.attrUpdatedAt; @@ -646,39 +579,31 @@ export class Agent extends AgentBase implements IAgent { this.actionGroups.push(actionGroup); // Handle permissions to invoke the lambda function actionGroup.executor?.lambdaFunction?.grantInvoke(this.role); - actionGroup.executor?.lambdaFunction?.addPermission(`LambdaInvocationPolicy-${this.node.addr.slice(0, 16)}`, { + actionGroup.executor?.lambdaFunction?.addPermission(`LambdaInvocationPolicy-${this.node.addr.slice(0, MAX_POLICY_NAME_NODE_LENGTH)}`, { principal: new iam.ServicePrincipal('bedrock.amazonaws.com'), sourceArn: this.agentArn, - sourceAccount: Stack.of(this).account, + sourceAccount: { Ref: 'AWS::AccountId' } as any, }); // Handle permissions to access the schema file from S3 if (actionGroup.apiSchema?.s3File) { - this.role.addToPrincipalPolicy(new iam.PolicyStatement({ - actions: ['s3:GetObject'], - resources: [`arn:${Aws.PARTITION}:s3:::${actionGroup.apiSchema.s3File.bucketName}/${actionGroup.apiSchema.s3File.objectKey}`], - conditions: { - StringEquals: { - 'aws:ResourceAccount': Stack.of(this).account, - }, - }, - })); + const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, actionGroup.apiSchema.s3File.bucketName); + bucket.grantRead(this.role, actionGroup.apiSchema.s3File.objectKey); } } /** * Adds a collaborator to the agent and grants necessary permissions. - * * @param agentCollaborator - The collaborator to add + * @internal This method is used internally by the constructor and should not be called directly. */ - public addAgentCollaborator(agentCollaborator: AgentCollaborator) { - this.agentCollaborators?.push(agentCollaborator); + private addAgentCollaborator(agentCollaborator: AgentCollaborator) { agentCollaborator.grant(this.role); } /** - * Adds multiple action groups to the agent. + * Configuration for agent collaboration. * - * @param actionGroups - The action groups to add + * @default - No collaboration configuration. */ public addActionGroups(...actionGroups: AgentActionGroup[]) { actionGroups.forEach(ag => this.addActionGroup(ag)); @@ -712,16 +637,11 @@ export class Agent extends AgentBase implements IAgent { * @internal This is an internal core function and should not be called directly. */ private renderAgentCollaborators(): bedrock.CfnAgent.AgentCollaboratorProperty[] | undefined { - if (!this.agentCollaborators || this.agentCollaborators.length === 0) { + if (!this.agentCollaboration) { return undefined; } - const agentCollaboratorsCfn: bedrock.CfnAgent.AgentCollaboratorProperty[] = []; - - this.agentCollaborators.forEach(ac => { - agentCollaboratorsCfn.push(ac._render()); - }); - return agentCollaboratorsCfn; + return this.agentCollaboration.collaborators.map(ac => ac._render()); } /** @@ -732,13 +652,13 @@ export class Agent extends AgentBase implements IAgent { * @internal This is an internal core function and should not be called directly. */ private renderCustomOrchestration(): bedrock.CfnAgent.CustomOrchestrationProperty | undefined { - if (!this.customOrchestration) { + if (!this.customOrchestrationExecutor) { return undefined; } return { executor: { - lambda: this.customOrchestration.executor.lambdaFunction.functionArn, + lambda: this.customOrchestrationExecutor.lambdaFunction.functionArn, }, }; } @@ -825,7 +745,6 @@ export class Agent extends AgentBase implements IAgent { /** * Generates a physical name for the agent. - * * @returns A unique name for the agent with appropriate length constraints * @default - Generated name format: 'agent-{hash}-{uniqueName}' with: * - maxLength: MAXLENGTH_FOR_ROLE_NAME - '-bedrockagent'.length diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts index e543bf5c2a799..fca764685c072 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-executor.ts @@ -1,5 +1,16 @@ import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; +import { ValidationError } from './validation-helpers'; + +/** + * The type of custom control for the action group executor. + */ +export enum CustomControl { + /** + * Returns the action group invocation results directly in the InvokeAgent response. + */ + RETURN_CONTROL = 'RETURN_CONTROL', +} /****************************************************************************** * Action Group Executor @@ -18,14 +29,14 @@ export class ActionGroupExecutor { * The information and parameters can be sent to your own systems to yield results. * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-returncontrol.html */ - public static readonly RETURN_CONTROL = new ActionGroupExecutor(undefined, 'RETURN_CONTROL'); + public static readonly RETURN_CONTROL = new ActionGroupExecutor(undefined, CustomControl.RETURN_CONTROL); /** * Defines an action group with a Lambda function containing the business logic. * @param lambdaFunction - Lambda function to be called by the action group. * @see https://docs.aws.amazon.com/bedrock/latest/userguide/agents-lambda.html */ - public static fromlambdaFunction(lambdaFunction: IFunction): ActionGroupExecutor { + public static fromLambda(lambdaFunction: IFunction): ActionGroupExecutor { return new ActionGroupExecutor(lambdaFunction, undefined); } @@ -39,9 +50,12 @@ export class ActionGroupExecutor { * The custom control type for the action group executor. * Currently only supports 'RETURN_CONTROL' which returns results directly in the InvokeAgent response. */ - public readonly customControl?: string; + public readonly customControl?: CustomControl; - private constructor(lambdaFunction?: IFunction, customControl?: string) { + private constructor(lambdaFunction?: IFunction, customControl?: CustomControl) { + if (lambdaFunction && customControl) { + throw new ValidationError('ActionGroupExecutor cannot have both lambdaFunction and customControl defined - they are mutually exclusive.'); + } this.lambdaFunction = lambdaFunction; this.customControl = customControl; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts index 29d584eeded62..dc24a6447ac1c 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -1,7 +1,18 @@ -import * as fs from 'fs'; +import { Construct } from 'constructs'; +import * as s3_assets from 'aws-cdk-lib/aws-s3-assets'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IBucket, Location } from 'aws-cdk-lib/aws-s3'; +/** + * Error thrown when an ApiSchema is not properly initialized. + */ +class ApiSchemaError extends Error { + constructor(message: string, public readonly cause?: string) { + super(message); + this.name = 'ApiSchemaError'; + } +} + /****************************************************************************** * API SCHEMA CLASS *****************************************************************************/ @@ -13,8 +24,8 @@ export abstract class ApiSchema { * Creates an API Schema from a local file. * @param path - the path to the local file containing the OpenAPI schema for the action group */ - public static fromLocalAsset(path: string): InlineApiSchema { - return new InlineApiSchema(fs.readFileSync(path, 'utf8')); + public static fromLocalAsset(path: string): AssetApiSchema { + return new AssetApiSchema(path); } /** @@ -49,9 +60,6 @@ export abstract class ApiSchema { */ public readonly inlineSchema?: string; - /** - * Constructor accessible only to extending classes. - */ protected constructor(s3File?: Location, inlineSchema?: string) { this.s3File = s3File; this.inlineSchema = inlineSchema; @@ -65,8 +73,54 @@ export abstract class ApiSchema { public abstract _render(): CfnAgent.APISchemaProperty; } -// ------------------------------------------------------ -// Inline Definition +/** + * API Schema from a local asset. + * + * The asset is uploaded to an S3 staging bucket, then moved to its final location + * by CloudFormation during deployment. + */ +export class AssetApiSchema extends ApiSchema { + private asset?: s3_assets.Asset; + + constructor(private readonly path: string, private readonly options: s3_assets.AssetOptions = {}) { + super(); + } + + /** + * Binds this API schema to a construct scope. + * This method initializes the S3 asset if it hasn't been initialized yet. + * Must be called before rendering the schema as CFN properties. + * + * @param scope - The construct scope to bind to + */ + public bind(scope: Construct): void { + // If the same AssetApiSchema is used multiple times, retain only the first instantiation + if (!this.asset) { + this.asset = new s3_assets.Asset(scope, 'Schema', { + path: this.path, + ...this.options, + }); + } + } + + /** + * Format as CFN properties + * @internal This is an internal core function and should not be called directly. + */ + public _render(): CfnAgent.APISchemaProperty { + if (!this.asset) { + throw new ApiSchemaError('ApiSchema must be bound to a scope before rendering. Call bind() first.', 'Asset not initialized'); + } + + return { + s3: { + s3BucketName: this.asset.s3BucketName, + s3ObjectKey: this.asset.s3ObjectKey, + }, + }; + } +} + // ------------------------------------------------------ /** * Class to define an API Schema from an inline string. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts index d02c8f5aecf76..e25822a1226a5 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/memory.ts @@ -1,6 +1,7 @@ import { Duration } from 'aws-cdk-lib/core'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import * as validation from './validation-helpers'; + /** * Memory options for agent conversational context retention. * Memory enables agents to maintain context across multiple sessions and recall past interactions. @@ -51,15 +52,22 @@ export class Memory { * Returns session summary memory with default configuration. * @default memoryDuration=Duration.days(30), maxRecentSessions=20 */ - public static readonly SESSION_SUMMARY = Memory.sessionSummary({ memoryDuration: Duration.days(30), maxRecentSessions: 20 }); + public static readonly SESSION_SUMMARY = new Memory({ memoryDuration: Duration.days(30), maxRecentSessions: 20 }); /** * Creates a session summary memory with custom configuration. * @param props Optional memory configuration properties - * @returns Memory configuration object + * @returns Memory instance */ - public static sessionSummary(props: SessionSummaryMemoryProps): CfnAgent.MemoryConfigurationProperty { - // Do some checks + public static sessionSummary(props: SessionSummaryMemoryProps): Memory { + return new Memory(props); + } + + private readonly memoryDuration?: Duration; + private readonly maxRecentSessions?: number; + + constructor(props: SessionSummaryMemoryProps) { + // Validate props validation.throwIfInvalid((config: SessionSummaryMemoryProps) => { let errors: string[] = []; @@ -79,11 +87,20 @@ export class Memory { return errors; }, props); + this.memoryDuration = props.memoryDuration; + this.maxRecentSessions = props.maxRecentSessions; + } + + /** + * Render the memory configuration to a CloudFormation property. + * @internal + */ + public _render(): CfnAgent.MemoryConfigurationProperty { return { enabledMemoryTypes: [MemoryType.SESSION_SUMMARY], - storageDays: props?.memoryDuration?.toDays() ?? 30, + storageDays: this.memoryDuration?.toDays() ?? 30, sessionSummaryConfiguration: { - maxRecentSessions: props?.maxRecentSessions ?? 20, + maxRecentSessions: this.maxRecentSessions ?? 20, }, }; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts index d4b005f4fd02e..6342fe37f39be 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration-executor.ts @@ -1,22 +1,42 @@ import * as bedrock from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; +/** + * Enum for orchestration types available for agents. + */ +export enum OrchestrationType { + /** + * Default orchestration by the agent. + */ + DEFAULT = 'DEFAULT', + + /** + * Custom orchestration using Lambda. + */ + CUSTOM_ORCHESTRATION = 'CUSTOM_ORCHESTRATION', +} + /****************************************************************************** - * Orchestration Executor + * Custom Orchestration Executor *****************************************************************************/ /** * Contains details about the Lambda function containing the orchestration logic carried * out upon invoking the custom orchestration. */ -export class OrchestrationExecutor { +export class CustomOrchestrationExecutor { /** * Defines an orchestration executor with a Lambda function containing the business logic. * @param lambdaFunction - Lambda function to be called by the orchestration. */ - public static fromlambdaFunction(lambdaFunction: IFunction): OrchestrationExecutor { - return new OrchestrationExecutor(lambdaFunction); + public static fromLambda(lambdaFunction: IFunction): CustomOrchestrationExecutor { + return new CustomOrchestrationExecutor(lambdaFunction); } + /** + * The type of orchestration this executor performs. + */ + public readonly type: OrchestrationType = OrchestrationType.CUSTOM_ORCHESTRATION; + /** * The Lambda function that contains the custom orchestration logic. * This function is called when the agent needs to make decisions about action execution. diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts deleted file mode 100644 index 780b741b6f4dc..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/orchestration.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { OrchestrationExecutor } from './orchestration-executor'; - -/** - * Configuration for custom orchestration of the agent. - */ -export interface CustomOrchestration { - /** - * The Lambda function to use for custom orchestration. - */ - readonly executor: OrchestrationExecutor; -} - -/** - * Enum for orchestration types available for agents. - */ -export enum OrchestrationType { - /** - * Default orchestration by the agent. - */ - DEFAULT = 'DEFAULT', - - /** - * Custom orchestration using Lambda. - */ - CUSTOM_ORCHESTRATION = 'CUSTOM_ORCHESTRATION', -} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts index 7575a9e178c65..4d06919c91d01 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -3,9 +3,6 @@ import { IFunction } from 'aws-cdk-lib/aws-lambda'; import * as validation from './validation-helpers'; import { IInvokable } from '../models'; -/** - * The step in the agent sequence that this prompt configuration applies to. - */ /** * The step in the agent sequence that this prompt configuration applies to. */ @@ -103,13 +100,14 @@ export interface InferenceConfiguration { } /** - * Contains configurations to override a prompt template in one part of an agent sequence. + * Base configuration interface for all prompt step types */ -export interface PromptStepConfiguration { +export interface PromptStepConfigBase { /** - * The step in the agent sequence where to set a specific prompt configuration. + * The type of step this configuration applies to. */ readonly stepType: AgentStepType; + /** * Whether to enable or skip this step in the agent sequence. * @default - The default state for each step type is as follows. @@ -120,6 +118,7 @@ export interface PromptStepConfiguration { * POST_PROCESSING – DISABLED */ readonly stepEnabled?: boolean; + /** * The custom prompt template to be used. * @@ -127,33 +126,57 @@ export interface PromptStepConfiguration { * @see https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-placeholders.html */ readonly customPromptTemplate?: string; + /** * The inference configuration parameters to use. * @default undefined - Default inference configuration will be used */ readonly inferenceConfig?: InferenceConfiguration; + /** - * The foundation model to use for this specific prompt step. - * This allows using different models for different steps in the agent sequence. + * Whether to use the custom Lambda parser defined for the sequence. * - * @default - The agent's default foundation model will be used. + * @default - false */ - readonly foundationModel?: IInvokable; + readonly useCustomParser?: boolean; } /** - * Configuration for a prompt step that can use a custom Lambda parser. - * Extends the base PromptStepConfiguration with custom parser options. + * Configuration for the pre-processing step */ -export interface PromptStepConfigurationCustomParser extends PromptStepConfiguration { +export interface PromptPreProcessingConfigCustomParser extends PromptStepConfigBase {} + +/** + * Configuration for the orchestration step + */ +export interface PromptOrchestrationConfigCustomParser extends PromptStepConfigBase {} + +/** + * Configuration for the post-processing step + */ +export interface PromptPostProcessingConfigCustomParser extends PromptStepConfigBase {} + +/** + * Configuration for the routing classifier step + */ +export interface PromptRoutingClassifierConfigCustomParser extends PromptStepConfigBase { /** - * Whether to use the custom Lambda parser defined for the sequence. - * - * @default - false + * The foundation model to use for the routing classifier step. + * This is required for the routing classifier step. */ - readonly useCustomParser?: boolean; + readonly foundationModel: IInvokable; } +/** + * Configuration for the memory summarization step + */ +export interface PromptMemorySummarizationConfigCustomParser extends PromptStepConfigBase {} + +/** + * Configuration for the knowledge base response generation step + */ +export interface PromptKnowledgeBaseResponseGenerationConfigCustomParser extends PromptStepConfigBase {} + /** * Properties for configuring a custom Lambda parser for prompt overrides. */ @@ -165,10 +188,40 @@ export interface CustomParserProps { readonly parser?: IFunction; /** - * Prompt step configurations. At least one of the steps must make use of the custom parser. - * @default undefined - No custom prompt step configurations + * Configuration for the pre-processing step. + * @default undefined - No pre-processing configuration + */ + readonly preProcessingStep?: PromptPreProcessingConfigCustomParser; + + /** + * Configuration for the orchestration step. + * @default undefined - No orchestration configuration + */ + readonly orchestrationStep?: PromptOrchestrationConfigCustomParser; + + /** + * Configuration for the post-processing step. + * @default undefined - No post-processing configuration + */ + readonly postProcessingStep?: PromptPostProcessingConfigCustomParser; + + /** + * Configuration for the routing classifier step. + * @default undefined - No routing classifier configuration */ - readonly steps?: PromptStepConfigurationCustomParser[]; + readonly routingClassifierStep?: PromptRoutingClassifierConfigCustomParser; + + /** + * Configuration for the memory summarization step. + * @default undefined - No memory summarization configuration + */ + readonly memorySummarizationStep?: PromptMemorySummarizationConfigCustomParser; + + /** + * Configuration for the knowledge base response generation step. + * @default undefined - No knowledge base response generation configuration + */ + readonly knowledgeBaseResponseGenerationStep?: PromptKnowledgeBaseResponseGenerationConfigCustomParser; } /** @@ -178,23 +231,46 @@ export interface CustomParserProps { */ export class PromptOverrideConfiguration { /** - * Creates a PromptOverrideConfiguration from a list of prompt step configurations. + * Creates a PromptOverrideConfiguration from individual step configurations. * Use this method when you want to override prompts without using a custom parser. - * @param steps The prompt step configurations to use + * @param steps The step configurations to use * @returns A new PromptOverrideConfiguration instance */ - public static fromSteps(steps?: PromptStepConfiguration[]): PromptOverrideConfiguration { - // Create new object - return new PromptOverrideConfiguration({ steps }); + public static fromSteps(steps: PromptStepConfigBase[]): PromptOverrideConfiguration { + if (!steps || steps.length === 0) { + throw new validation.ValidationError('Steps array cannot be empty'); + } + + // Convert steps array to props format + const stepMap = steps.reduce((acc, step) => { + switch (step.stepType) { + case AgentStepType.PRE_PROCESSING: + return { ...acc, preProcessingStep: step }; + case AgentStepType.ORCHESTRATION: + return { ...acc, orchestrationStep: step }; + case AgentStepType.POST_PROCESSING: + return { ...acc, postProcessingStep: step }; + case AgentStepType.ROUTING_CLASSIFIER: + return { ...acc, routingClassifierStep: step as PromptRoutingClassifierConfigCustomParser }; + case AgentStepType.MEMORY_SUMMARIZATION: + return { ...acc, memorySummarizationStep: step }; + case AgentStepType.KNOWLEDGE_BASE_RESPONSE_GENERATION: + return { ...acc, knowledgeBaseResponseGenerationStep: step }; + default: + return acc; + } + }, {} as CustomParserProps); + + return new PromptOverrideConfiguration(stepMap); } + /** * Creates a PromptOverrideConfiguration with a custom Lambda parser function. * @param props Configuration including: * - `parser`: Lambda function to use as custom parser - * - `steps`: prompt step configurations. At least one of the steps must make use of the custom parser. + * - Individual step configurations. At least one of the steps must make use of the custom parser. */ public static withCustomParser(props: CustomParserProps): PromptOverrideConfiguration { - // Create new object return new PromptOverrideConfiguration(props); } @@ -214,11 +290,34 @@ export class PromptOverrideConfiguration { readonly parser?: IFunction; /** - * The prompt configurations to override the prompt templates in the agent sequence. - * - * @default - No prompt configuration will be overridden. + * Configuration for the pre-processing step. + */ + readonly preProcessingStep?: PromptPreProcessingConfigCustomParser; + + /** + * Configuration for the orchestration step. + */ + readonly orchestrationStep?: PromptOrchestrationConfigCustomParser; + + /** + * Configuration for the post-processing step. */ - readonly steps?: PromptStepConfigurationCustomParser[]; + readonly postProcessingStep?: PromptPostProcessingConfigCustomParser; + + /** + * Configuration for the routing classifier step. + */ + readonly routingClassifierStep?: PromptRoutingClassifierConfigCustomParser; + + /** + * Configuration for the memory summarization step. + */ + readonly memorySummarizationStep?: PromptMemorySummarizationConfigCustomParser; + + /** + * Configuration for the knowledge base response generation step. + */ + readonly knowledgeBaseResponseGenerationStep?: PromptKnowledgeBaseResponseGenerationConfigCustomParser; /** * Create a new PromptOverrideConfiguration. @@ -227,12 +326,17 @@ export class PromptOverrideConfiguration { */ private constructor(props: CustomParserProps) { // Validate props - validation.throwIfInvalid(this.validateSteps, props.steps); + validation.throwIfInvalid(this.validateSteps, props); if (props.parser) { - validation.throwIfInvalid(this.validateCustomParser, props.steps); + validation.throwIfInvalid(this.validateCustomParser, props); } this.parser = props.parser; - this.steps = props.steps; + this.preProcessingStep = props.preProcessingStep; + this.orchestrationStep = props.orchestrationStep; + this.postProcessingStep = props.postProcessingStep; + this.routingClassifierStep = props.routingClassifierStep; + this.memorySummarizationStep = props.memorySummarizationStep; + this.knowledgeBaseResponseGenerationStep = props.knowledgeBaseResponseGenerationStep; } /** @@ -241,36 +345,42 @@ export class PromptOverrideConfiguration { * @internal This is an internal core function and should not be called directly. */ public _render(): CfnAgent.PromptOverrideConfigurationProperty { - return { - overrideLambda: this.parser?.functionArn, - promptConfigurations: - this.steps?.map(step => ({ - // prettier-ignore - promptType: step.stepType, - /** Maps stepEnabled (true → 'ENABLED', false → 'DISABLED', undefined → undefined (uses CFN DEFAULT)) */ - promptState: step?.stepEnabled === undefined ? undefined : step.stepEnabled ? 'ENABLED' : 'DISABLED', - /** Maps stepEnabled (true → 'OVERRIDDEN', false → 'DEFAULT', undefined → undefined (uses CFN DEFAULT)) */ - // prettier-ignore - parserMode: - step?.useCustomParser === undefined - ? undefined - : step?.useCustomParser ? 'OVERRIDDEN' : 'DEFAULT', - // Use custom prompt template if provided, otherwise use default - // prettier-ignore - promptCreationMode: step?.customPromptTemplate === undefined - ? undefined - : step?.customPromptTemplate ? 'OVERRIDDEN' : 'DEFAULT', + const configurations: CfnAgent.PromptConfigurationProperty[] = []; + + // Helper function to add configuration if step exists + const addConfiguration = (step: PromptStepConfigBase | undefined, type: AgentStepType) => { + if (step) { + configurations.push({ + promptType: type, + promptState: step.stepEnabled === undefined ? undefined : step.stepEnabled ? 'ENABLED' : 'DISABLED', + parserMode: step.useCustomParser === undefined ? undefined : step.useCustomParser ? 'OVERRIDDEN' : 'DEFAULT', + promptCreationMode: step.customPromptTemplate === undefined ? undefined : step.customPromptTemplate ? 'OVERRIDDEN' : 'DEFAULT', basePromptTemplate: step.customPromptTemplate, inferenceConfiguration: step.inferenceConfig, - // Include foundation model if provided - foundationModel: step.foundationModel?.invokableArn, - })) || [], + // Include foundation model if it's a routing classifier step + foundationModel: type === AgentStepType.ROUTING_CLASSIFIER + ? (step as PromptRoutingClassifierConfigCustomParser).foundationModel?.invokableArn + : undefined, + }); + } + }; + + // Add configurations for each step type if defined + addConfiguration(this.preProcessingStep, AgentStepType.PRE_PROCESSING); + addConfiguration(this.orchestrationStep, AgentStepType.ORCHESTRATION); + addConfiguration(this.postProcessingStep, AgentStepType.POST_PROCESSING); + addConfiguration(this.routingClassifierStep, AgentStepType.ROUTING_CLASSIFIER); + addConfiguration(this.memorySummarizationStep, AgentStepType.MEMORY_SUMMARIZATION); + addConfiguration(this.knowledgeBaseResponseGenerationStep, AgentStepType.KNOWLEDGE_BASE_RESPONSE_GENERATION); + + return { + overrideLambda: this.parser?.functionArn, + promptConfigurations: configurations, }; } private validateInferenceConfig = (config?: InferenceConfiguration): string[] => { const errors: string[] = []; - if (config) { if (config.temperature < 0 || config.temperature > 1) { errors.push('Temperature must be between 0 and 1'); @@ -288,43 +398,72 @@ export class PromptOverrideConfiguration { errors.push('MaximumLength must be between 0 and 4096'); } } - return errors; }; - private validateSteps = (steps?: PromptStepConfiguration[]): string[] => { + private validateSteps = (props: CustomParserProps): string[] => { const errors: string[] = []; - if (!steps || steps.length === 0) { + // Check if any steps are defined + const hasSteps = [ + props.preProcessingStep, + props.orchestrationStep, + props.postProcessingStep, + props.routingClassifierStep, + props.memorySummarizationStep, + props.knowledgeBaseResponseGenerationStep, + ].some(step => step !== undefined); + + if (!hasSteps) { errors.push('Steps array cannot be empty'); } - // Validate each step's inference config - steps?.forEach(step => { - const inferenceErrors = this.validateInferenceConfig(step.inferenceConfig); - if (inferenceErrors.length > 0) { - errors.push(`Step ${inferenceErrors.join(', ')}`); - } - - // Validate foundationModel if provided - if (step.foundationModel !== undefined) { - if (!step.foundationModel.invokableArn) { - errors.push('Step Foundation model must be a valid IInvokable with an invokableArn'); + // Helper function to validate a step's inference config + const validateStep = (step: PromptStepConfigBase | undefined, stepName: string) => { + if (step) { + // Check for foundation model in non-ROUTING_CLASSIFIER steps + if ('foundationModel' in step && step.stepType !== AgentStepType.ROUTING_CLASSIFIER) { + errors.push('Foundation model can only be specified for ROUTING_CLASSIFIER step type'); } - // Only allow foundation model override for ROUTING_CLASSIFIER - if (step.stepType !== AgentStepType.ROUTING_CLASSIFIER) { - errors.push('Step Foundation model can only be specified for ROUTING_CLASSIFIER step type'); + + const inferenceErrors = this.validateInferenceConfig(step.inferenceConfig); + if (inferenceErrors.length > 0) { + errors.push(`${stepName} step: ${inferenceErrors.join(', ')}`); } } - }); + }; + + // Validate each step's inference config + validateStep(props.preProcessingStep, 'Pre-processing'); + validateStep(props.orchestrationStep, 'Orchestration'); + validateStep(props.postProcessingStep, 'Post-processing'); + validateStep(props.routingClassifierStep, 'Routing classifier'); + validateStep(props.memorySummarizationStep, 'Memory summarization'); + validateStep(props.knowledgeBaseResponseGenerationStep, 'Knowledge base response generation'); + + // Validate routing classifier's foundation model if provided + if (props.routingClassifierStep?.foundationModel) { + if (!props.routingClassifierStep.foundationModel.invokableArn) { + errors.push('Foundation model must be a valid IInvokable with an invokableArn'); + } + } return errors; }; - private validateCustomParser = (steps?: PromptStepConfigurationCustomParser[]): string[] => { + private validateCustomParser = (props: CustomParserProps): string[] => { const errors: string[] = []; - const hasCustomParser = steps?.some(step => step.useCustomParser); + // Check if at least one step uses custom parser + const hasCustomParser = [ + props.preProcessingStep?.useCustomParser, + props.orchestrationStep?.useCustomParser, + props.postProcessingStep?.useCustomParser, + props.routingClassifierStep?.useCustomParser, + props.memorySummarizationStep?.useCustomParser, + props.knowledgeBaseResponseGenerationStep?.useCustomParser, + ].some(useCustomParser => useCustomParser === true); + if (!hasCustomParser) { errors.push('At least one step must use custom parser'); } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts index 51d8de34a247a..06216ed9a2eaa 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/utils.ts @@ -130,7 +130,7 @@ export function generatePhysicalNameV2( } = options ?? {}; const hash = objectToHash(destroyCreate); if (maxLength < (prefix + hash + separator).length) { - throw new ValidationError('The prefix is longer than the maximum length', scope); + throw new ValidationError(`The prefix length (${prefix.length}) plus hash length (${hash.length}) and separator length (${separator.length}) exceeds the maximum allowed length of ${maxLength}`, scope); } const uniqueName = cdk.Names.uniqueResourceName( scope, @@ -146,19 +146,19 @@ export function generatePhysicalNameV2( export const maximumLambdaMemorySizeContextItem = 'maximumLambdaMemorySize'; export const recommendedMaximumLambdaMemorySize = 7076; export function lambdaMemorySizeLimiter(construct: IConstruct, requestedMemorySizeInMegabytes: number) { - const maximumLambaMemorySize = construct.node.tryGetContext(maximumLambdaMemorySizeContextItem) === undefined ? + const maximumLambdaMemorySize = construct.node.tryGetContext(maximumLambdaMemorySizeContextItem) === undefined ? recommendedMaximumLambdaMemorySize : parseInt(construct.node.tryGetContext(maximumLambdaMemorySizeContextItem)); - if (maximumLambaMemorySize < recommendedMaximumLambdaMemorySize) { + if (maximumLambdaMemorySize < recommendedMaximumLambdaMemorySize) { cdk.Annotations.of(construct).addWarning( - `Maximum Lambda memorySize, ${maximumLambaMemorySize}, is less than the recommended ${recommendedMaximumLambdaMemorySize}.`, + `Maximum Lambda memorySize, ${maximumLambdaMemorySize}, is less than the recommended ${recommendedMaximumLambdaMemorySize}.`, ); } - if (requestedMemorySizeInMegabytes > maximumLambaMemorySize) { + if (requestedMemorySizeInMegabytes > maximumLambdaMemorySize) { cdk.Annotations.of(construct).addWarning( - `Reducing Lambda memorySize, ${requestedMemorySizeInMegabytes} to ${maximumLambaMemorySize} for ${construct.constructor.name}`, + `Reducing Lambda memorySize, ${requestedMemorySizeInMegabytes} to ${maximumLambdaMemorySize} for ${construct.constructor.name}`, ); - return maximumLambaMemorySize; + return maximumLambdaMemorySize; } else { return requestedMemorySizeInMegabytes; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts index 17a8e5e9e5752..58a373002c9a6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts @@ -9,7 +9,6 @@ export * from './agents/api-schema'; export * from './agents/prompt-override'; export * from './agents/memory'; export * from './agents/agent-collaborator'; -export * from './agents/orchestration'; +export * from './agents/agent-collaboration'; export * from './agents/orchestration-executor'; export * from './models'; - diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts deleted file mode 100644 index a5cdcd7a2778c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/test/models.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { Stack } from 'aws-cdk-lib'; -import { Template } from 'aws-cdk-lib/assertions'; -import { Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; -import { BedrockFoundationModel, VectorType } from '../models'; - -describe('BedrockFoundationModel', () => { - test('creates model with default properties', () => { - // GIVEN - const model = new BedrockFoundationModel('test.model-v1'); - - // THEN - expect(model.modelId).toBe('test.model-v1'); - expect(model.supportsAgents).toBe(false); - expect(model.supportsCrossRegion).toBe(false); - expect(model.supportsKnowledgeBase).toBe(false); - expect(model.vectorDimensions).toBeUndefined(); - expect(model.supportedVectorType).toBeUndefined(); - }); - - test('creates model with custom properties', () => { - // GIVEN - const model = new BedrockFoundationModel('test.model-v1', { - supportsAgents: true, - supportsCrossRegion: true, - supportsKnowledgeBase: true, - vectorDimensions: 1024, - supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], - }); - - // THEN - expect(model.modelId).toBe('test.model-v1'); - expect(model.supportsAgents).toBe(true); - expect(model.supportsCrossRegion).toBe(true); - expect(model.supportsKnowledgeBase).toBe(true); - expect(model.vectorDimensions).toBe(1024); - expect(model.supportedVectorType).toEqual([VectorType.FLOATING_POINT, VectorType.BINARY]); - }); - - test('formats model ARN correctly', () => { - // GIVEN - const model = new BedrockFoundationModel('test.model-v1'); - - // THEN - expect(model.asArn()).toMatch(/arn:aws:bedrock:\w+::foundation-model\/test\.model-v1/); - }); - - test('grants invoke permissions', () => { - // GIVEN - const stack = new Stack(); - const role = new Role(stack, 'TestRole', { - assumedBy: new ServicePrincipal('lambda.amazonaws.com'), - }); - const model = new BedrockFoundationModel('test.model-v1'); - - // WHEN - model.grantInvoke(role); - - // THEN - const template = Template.fromStack(stack); - template.hasResourceProperties('AWS::IAM::Policy', { - PolicyDocument: { - Statement: [ - { - Action: [ - 'bedrock:InvokeModel*', - 'bedrock:GetFoundationModel', - ], - Effect: 'Allow', - Resource: { - 'Fn::Join': [ - '', - [ - 'arn:', - { Ref: 'AWS::Partition' }, - ':bedrock:', - { Ref: 'AWS::Region' }, - '::foundation-model/test.model-v1', - ], - ], - }, - }, - ], - }, - }); - }); - - test('grants invoke permissions for all regions', () => { - // GIVEN - const stack = new Stack(); - const role = new Role(stack, 'TestRole', { - assumedBy: new ServicePrincipal('lambda.amazonaws.com'), - }); - const model = new BedrockFoundationModel('test.model-v1'); - - // WHEN - model.grantInvokeAllRegions(role); - - // THEN - const template = Template.fromStack(stack); - template.hasResourceProperties('AWS::IAM::Policy', { - PolicyDocument: { - Statement: [ - { - Action: [ - 'bedrock:InvokeModel*', - 'bedrock:GetFoundationModel', - ], - Effect: 'Allow', - Resource: { - 'Fn::Join': [ - '', - [ - 'arn:', - { Ref: 'AWS::Partition' }, - ':bedrock:*::foundation-model/test.model-v1', - ], - ], - }, - }, - ], - }, - }); - }); - - test('static model instances are configured correctly', () => { - // Test a few representative models - expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.modelId).toBe('amazon.titan-text-express-v1'); - expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.supportsAgents).toBe(true); - - expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.modelId).toBe('anthropic.claude-v2'); - expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.supportsAgents).toBe(true); - - expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.modelId).toBe('cohere.embed-english-v3'); - expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportsKnowledgeBase).toBe(true); - expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.vectorDimensions).toBe(1024); - expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportedVectorType).toEqual([ - VectorType.FLOATING_POINT, - VectorType.BINARY, - ]); - }); -}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts index 8ebb5d8ceaefa..702cabc62a87d 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-alias.test.ts @@ -42,7 +42,7 @@ describe('AgentAlias', () => { // THEN const template = assertions.Template.fromStack(stack); template.hasResourceProperties('AWS::Bedrock::AgentAlias', {}); - expect(alias.aliasName).toMatch(/^latest-[a-f0-9]+$/); + expect(alias.aliasName).toBe('latest'); }); test('creates with all properties', () => { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts index 42d4cc494b914..fd5a2754fb3ab 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts @@ -32,7 +32,7 @@ describe('AgentCollaborator', () => { test('creates with valid properties', () => { // WHEN - const collaborator = new AgentCollaborator(stack, 'TestCollaborator', { + const collaborator = new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -49,7 +49,7 @@ describe('AgentCollaborator', () => { test('throws error when agentAlias is missing', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator1', { + new AgentCollaborator({ agentAlias: undefined as any, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -66,7 +66,7 @@ describe('AgentCollaborator', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator2', { + new AgentCollaborator({ agentAlias: testAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -77,7 +77,7 @@ describe('AgentCollaborator', () => { test('throws error when collaborationInstruction is empty', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator3', { + new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: '', collaboratorName: 'Test collaborator', @@ -88,7 +88,7 @@ describe('AgentCollaborator', () => { test('throws error when collaborationInstruction is whitespace', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator4', { + new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: ' ', collaboratorName: 'Test collaborator', @@ -99,7 +99,7 @@ describe('AgentCollaborator', () => { test('throws error when collaboratorName is empty', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator5', { + new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: '', @@ -110,7 +110,7 @@ describe('AgentCollaborator', () => { test('throws error when collaboratorName is whitespace', () => { // THEN expect(() => { - new AgentCollaborator(stack, 'TestCollaborator6', { + new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: ' ', @@ -120,7 +120,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory true', () => { // GIVEN - const collaborator = new AgentCollaborator(stack, 'TestCollaborator7', { + const collaborator = new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -143,7 +143,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory false', () => { // GIVEN - const collaborator = new AgentCollaborator(stack, 'TestCollaborator8', { + const collaborator = new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -166,7 +166,7 @@ describe('AgentCollaborator', () => { test('renders with relayConversationHistory undefined', () => { // GIVEN - const collaborator = new AgentCollaborator(stack, 'TestCollaborator9', { + const collaborator = new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', @@ -188,7 +188,7 @@ describe('AgentCollaborator', () => { test('grants permissions to grantee', () => { // GIVEN - const collaborator = new AgentCollaborator(stack, 'TestCollaborator10', { + const collaborator = new AgentCollaborator({ agentAlias: mockAgentAlias, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts index bbaf37c3a3204..c511b67a813a6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -4,7 +4,7 @@ import * as iam from 'aws-cdk-lib/aws-iam'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as kms from 'aws-cdk-lib/aws-kms'; import { Template, Match } from 'aws-cdk-lib/assertions'; -import * as bedrock from '../../../lib'; +import * as bedrock from '../../../bedrock'; describe('Agent', () => { let stack: core.Stack; @@ -25,6 +25,17 @@ describe('Agent', () => { }; }); + test('creates agent with default name when agentName is not provided', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentName: Match.stringLikeRegexp('agent--teststack-testagent-8d92f3fe-bedrockagent'), + }); + }); + test('creates agent with basic properties', () => { new bedrock.Agent(stack, 'TestAgent', { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', @@ -34,7 +45,7 @@ describe('Agent', () => { Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), FoundationModel: foundationModel.invokableArn, - IdleSessionTTLInSeconds: 3600, + IdleSessionTTLInSeconds: 600, AutoPrepare: false, Description: Match.absent(), CustomerEncryptionKeyArn: Match.absent(), @@ -160,10 +171,7 @@ describe('Agent', () => { new bedrock.Agent(stack, 'TestAgent', { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel, - orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, - customOrchestration: { - executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), - }, + customOrchestrationExecutor: bedrock.CustomOrchestrationExecutor.fromLambda(fn), }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { @@ -191,35 +199,6 @@ describe('Agent', () => { }, }); }); - - test('throws error when CUSTOM_ORCHESTRATION type is set without customOrchestration', () => { - expect(() => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, - }); - }).toThrow(/customOrchestration must be provided when orchestrationType is CUSTOM_ORCHESTRATION/); - }); - - test('throws error when customOrchestration is provided without CUSTOM_ORCHESTRATION type', () => { - const fn = new lambda.Function(stack, 'TestFunction', { - runtime: lambda.Runtime.NODEJS_18_X, - handler: 'index.handler', - code: lambda.Code.fromInline('exports.handler = async () => {};'), - }); - - expect(() => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - orchestrationType: bedrock.OrchestrationType.DEFAULT, - customOrchestration: { - executor: bedrock.OrchestrationExecutor.fromlambdaFunction(fn), - }, - }); - }).toThrow(/customOrchestration can only be provided when orchestrationType is CUSTOM_ORCHESTRATION/); - }); }); test('sets KMS key correctly', () => { @@ -261,7 +240,10 @@ describe('Agent', () => { new bedrock.Agent(stack, 'TestAgent', { instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel, - agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, + agentCollaboration: new bedrock.AgentCollaboration({ + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [], + }), }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts index 6223105a185e3..d73ab18fdaede 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts @@ -34,7 +34,7 @@ describe('AgentActionGroupExecutor', () => { const actionGroup = new bedrock.AgentActionGroup({ name: 'CustomAction', enabled: true, - executor: bedrock.ActionGroupExecutor.fromlambdaFunction(fn), + executor: bedrock.ActionGroupExecutor.fromLambda(fn), }); const agent = new bedrock.Agent(stack, 'TestAgent', { @@ -84,7 +84,7 @@ describe('AgentActionGroupExecutor', () => { const actionGroup = new bedrock.AgentActionGroup({ name: 'CustomAction', enabled: true, - executor: bedrock.ActionGroupExecutor.fromlambdaFunction(fn), + executor: bedrock.ActionGroupExecutor.fromLambda(fn), }); const agent = new bedrock.Agent(stack, 'TestAgent', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json deleted file mode 100644 index aa619c2ef0040..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", - "source": { - "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json deleted file mode 100644 index 669fee998f900..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1": { - "displayName": "aws-cdk-bedrock-action-group-1 Template", - "source": { - "path": "aws-cdk-bedrock-action-group-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json deleted file mode 100644 index 751086f479575..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "Resources": { - "ActionGroupFunctionServiceRole77660D62": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ActionGroupFunctionFE14D1CB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ActionGroupFunctionServiceRole77660D62", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ActionGroupFunctionServiceRole77660D62" - ] - }, - "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "MyAgentRoleE8318EBB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" - } - }, - "MyAgentRoleDefaultPolicy30DBC7AC": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", - "Roles": [ - { - "Ref": "MyAgentRoleE8318EBB" - } - ] - } - }, - "MyAgent039CC8B3": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - } - }, - "ActionGroupName": "CustomActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" - }, - "Description": "A custom action group for testing", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "test-action-group-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "MyAgentRoleE8318EBB", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "MyAgentRoleDefaultPolicy30DBC7AC" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json deleted file mode 100644 index eafd360cbf954..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockActionGroup/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-action-group-1" - ], - "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", - "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json deleted file mode 100644 index dde03bcb338e1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-action-group-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-action-group-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-action-group-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-action-group-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/11ee29fec17e22cfde44267cafe77857a1efbdda8d3cee8302feec019df016a1.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionServiceRole77660D62" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionFE14D1CB" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleE8318EBB" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleDefaultPolicy30DBC7AC" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgent039CC8B3" - } - ], - "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-action-group-1" - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "metadata": { - "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json deleted file mode 100644 index 76a87bffd6ace..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts index fc399a34c9576..8f12f73047461 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.ts @@ -80,7 +80,7 @@ paths: `); // Create an action group executor -const actionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(actionGroupFunction); +const actionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction); // Create a Bedrock Agent with custom action groups new bedrock.Agent(stack, 'MyAgent', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json deleted file mode 100644 index 985571ebdee78..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2 Template", - "source": { - "path": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json deleted file mode 100644 index 6ac805111eef3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a": { - "displayName": "aws-cdk-bedrock-agent-collaborator-1 Template", - "source": { - "path": "aws-cdk-bedrock-agent-collaborator-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json deleted file mode 100644 index 6c50f7f42a5a1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json +++ /dev/null @@ -1,349 +0,0 @@ -{ - "Resources": { - "CollaboratorAgentRoleB40DB843": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent" - } - }, - "CollaboratorAgentRoleDefaultPolicy40D7F24F": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CollaboratorAgentRoleDefaultPolicy40D7F24F", - "Roles": [ - { - "Ref": "CollaboratorAgentRoleB40DB843" - } - ] - } - }, - "CollaboratorAgent1160D465": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "collaborator-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "CollaboratorAgentRoleB40DB843", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is a collaborator agent with at least 40 characters of instruction", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "CollaboratorAgentRoleDefaultPolicy40D7F24F" - ] - }, - "CollaboratorAliasDF4958C3": { - "Type": "AWS::Bedrock::AgentAlias", - "Properties": { - "AgentAliasName": "collaborator-alias", - "AgentId": { - "Fn::GetAtt": [ - "CollaboratorAgent1160D465", - "AgentId" - ] - } - } - }, - "CollaborativeAgentRole0E9B1104": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent" - } - }, - "CollaborativeAgentRoleDefaultPolicy94AAE53F": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "bedrock:GetAgentAlias", - "bedrock:InvokeAgent" - ], - "Effect": "Allow", - "Resource": { - "Fn::GetAtt": [ - "CollaboratorAliasDF4958C3", - "AgentAliasArn" - ] - } - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CollaborativeAgentRoleDefaultPolicy94AAE53F", - "Roles": [ - { - "Ref": "CollaborativeAgentRole0E9B1104" - } - ] - } - }, - "CollaborativeAgent97CD08C5": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentCollaboration": "SUPERVISOR", - "AgentCollaborators": [ - { - "AgentDescriptor": { - "AliasArn": { - "Fn::GetAtt": [ - "CollaboratorAliasDF4958C3", - "AgentAliasArn" - ] - } - }, - "CollaborationInstruction": "Help the primary agent with complex tasks and provide additional context", - "CollaboratorName": "HelperAgent", - "RelayConversationHistory": "TO_COLLABORATOR" - } - ], - "AgentName": "collaborative-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "CollaborativeAgentRole0E9B1104", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is a collaborative agent with at least 40 characters of instruction", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "CollaborativeAgentRoleDefaultPolicy94AAE53F" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json deleted file mode 100644 index e665fb42609dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockAgentCollaborator/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-agent-collaborator-1" - ], - "assertionStack": "BedrockAgentCollaborator/DefaultTest/DeployAssert", - "assertionStackName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json deleted file mode 100644 index 2062efb9b622c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json +++ /dev/null @@ -1,326 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-agent-collaborator-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-agent-collaborator-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-agent-collaborator-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-agent-collaborator-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/e2a9d317db1134080606d84886d83edce094cf1c7ea101c032066c364a35653a.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-agent-collaborator-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-agent-collaborator-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaboratorAgentRoleB40DB843" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaboratorAgentRoleDefaultPolicy40D7F24F" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaboratorAgent1160D465" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaboratorAliasDF4958C3" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaborativeAgentRole0E9B1104" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaborativeAgentRoleDefaultPolicy94AAE53F" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CollaborativeAgent97CD08C5" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-agent-collaborator-1" - }, - "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" - ], - "metadata": { - "/BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockAgentCollaborator/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json deleted file mode 100644 index 45a2285c4ae64..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-collaborator-1":{"id":"aws-cdk-bedrock-agent-collaborator-1","path":"aws-cdk-bedrock-agent-collaborator-1","children":{"CollaboratorAgent":{"id":"CollaboratorAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaboratorAgentRoleDefaultPolicy40D7F24F","roles":[{"Ref":"CollaboratorAgentRoleB40DB843"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"collaborator-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaboratorAgentRoleB40DB843","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a collaborator agent with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"CollaboratorAlias":{"id":"CollaboratorAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::AgentAlias","aws:cdk:cloudformation:props":{"agentAliasName":"collaborator-alias","agentId":{"Fn::GetAtt":["CollaboratorAgent1160D465","AgentId"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgentAlias","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAlias","version":"0.0.0","metadata":[]}},"AgentCollaborator":{"id":"AgentCollaborator","path":"aws-cdk-bedrock-agent-collaborator-1/AgentCollaborator","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentCollaborator","version":"0.0.0"}},"CollaborativeAgent":{"id":"CollaborativeAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetAgentAlias","bedrock:InvokeAgent"],"Effect":"Allow","Resource":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaborativeAgentRoleDefaultPolicy94AAE53F","roles":[{"Ref":"CollaborativeAgentRole0E9B1104"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentCollaboration":"SUPERVISOR","agentCollaborators":[{"agentDescriptor":{"aliasArn":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},"collaborationInstruction":"Help the primary agent with complex tasks and provide additional context","collaboratorName":"HelperAgent","relayConversationHistory":"TO_COLLABORATOR"}],"agentName":"collaborative-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaborativeAgentRole0E9B1104","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a collaborative agent with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentCollaborator":{"id":"BedrockAgentCollaborator","path":"BedrockAgentCollaborator","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentCollaborator/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentCollaborator/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts index 69baf363fd647..8215695464ed3 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.ts @@ -6,7 +6,7 @@ import * as cdk from 'aws-cdk-lib'; import * as integ from '@aws-cdk/integ-tests-alpha'; -import * as bedrock from '../../../lib'; +import * as bedrock from '../../../bedrock'; const app = new cdk.App(); @@ -32,17 +32,18 @@ new bedrock.Agent(stack, 'CollaborativeAgent', { instruction: 'This is a collaborative agent with at least 40 characters of instruction', foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, forceDelete: true, - // Enable collaboration - agentCollaboration: bedrock.AgentCollaboratorType.SUPERVISOR, - // Add collaborator - agentCollaborators: [ - new bedrock.AgentCollaborator(stack, 'AgentCollaborator', { - agentAlias: collaboratorAlias, - collaborationInstruction: 'Help the primary agent with complex tasks and provide additional context', - collaboratorName: 'HelperAgent', - relayConversationHistory: true, - }), - ], + // Configure collaboration + agentCollaboration: new bedrock.AgentCollaboration({ + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [ + new bedrock.AgentCollaborator({ + agentAlias: collaboratorAlias, + collaborationInstruction: 'Help the primary agent with complex tasks and provide additional context', + collaboratorName: 'HelperAgent', + relayConversationHistory: true, + }), + ], + }), }); new integ.IntegTest(app, 'BedrockAgentCollaborator', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json deleted file mode 100644 index 18f4f27a25ebc..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockAgentDefaultTestDeployAssertB292ADF7 Template", - "source": { - "path": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json deleted file mode 100644 index 1a201b412829d..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7": { - "displayName": "aws-cdk-bedrock-agent-1 Template", - "source": { - "path": "aws-cdk-bedrock-agent-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json deleted file mode 100644 index cbe44793b7bca..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "Resources": { - "MyAgentRoleE8318EBB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent" - } - }, - "MyAgentRoleDefaultPolicy30DBC7AC": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", - "Roles": [ - { - "Ref": "MyAgentRoleE8318EBB" - } - ] - } - }, - "MyAgent039CC8B3": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "test-agent-1", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "MyAgentRoleE8318EBB", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "MyAgentRoleDefaultPolicy30DBC7AC" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json deleted file mode 100644 index af0826e620a5c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockAgent/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-agent-1" - ], - "assertionStack": "BedrockAgent/DefaultTest/DeployAssert", - "assertionStackName": "BedrockAgentDefaultTestDeployAssertB292ADF7" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json deleted file mode 100644 index 32bcf072ced3f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-agent-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-agent-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-agent-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-agent-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/3932e4875a0d5aeef48b151c18c90ffab158eeea6504c751be7f0e141b1799a7.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-agent-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-agent-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-agent-1/MyAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - } - ], - "/aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-agent-1/MyAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleE8318EBB" - } - ], - "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleDefaultPolicy30DBC7AC" - } - ], - "/aws-cdk-bedrock-agent-1/MyAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgent039CC8B3" - } - ], - "/aws-cdk-bedrock-agent-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-agent-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-agent-1" - }, - "BedrockAgentDefaultTestDeployAssertB292ADF7.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockAgentDefaultTestDeployAssertB292ADF7": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" - ], - "metadata": { - "/BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockAgent/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json deleted file mode 100644 index 06a3b101fe6f2..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-1":{"id":"aws-cdk-bedrock-agent-1","path":"aws-cdk-bedrock-agent-1","children":{"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-agent-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgent":{"id":"BedrockAgent","path":"BedrockAgent","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgent/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgent/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgent/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json deleted file mode 100644 index 686fe01004943..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", - "source": { - "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json deleted file mode 100644 index a9d7497c0610b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "S3 API Schema", - "version": "1.0.0" - }, - "paths": { - "/s3hello": { - "get": { - "operationId": "s3HelloWorld", - "summary": "Say hello from S3", - "description": "Returns a greeting message from S3-stored schema", - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip deleted file mode 100644 index 2556546dd5f0d..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e6a0259ef5241250c705eb6909aa1cc1544f03e1d6fd1de5f5888cbbd2ffd34 -size 18707019 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js deleted file mode 100644 index 1002ba018e9fb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py deleted file mode 100644 index aeb2132fc67bb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py +++ /dev/null @@ -1,388 +0,0 @@ -import contextlib -import json -import logging -import os -import shutil -import subprocess -import tempfile -import urllib.parse -from urllib.request import Request, urlopen -from uuid import uuid4 -from zipfile import ZipFile - -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -cloudfront = boto3.client('cloudfront') -s3 = boto3.client('s3') - -CFN_SUCCESS = "SUCCESS" -CFN_FAILED = "FAILED" -ENV_KEY_MOUNT_PATH = "MOUNT_PATH" -ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" - -AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" -CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" - -os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) - -def handler(event, context): - - def cfn_error(message=None): - if message: - logger.error("| cfn_error: %s" % message.encode()) - cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) - - - try: - # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper - # with the response CloudFormation sees from this Custom Resource execution. - logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) - - # cloudformation request type (create/update/delete) - request_type = event['RequestType'] - - # extract resource properties - props = event['ResourceProperties'] - old_props = event.get('OldResourceProperties', {}) - physical_id = event.get('PhysicalResourceId', None) - - try: - source_bucket_names = props['SourceBucketNames'] - source_object_keys = props['SourceObjectKeys'] - source_markers = props.get('SourceMarkers', None) - source_markers_config = props.get('SourceMarkersConfig', None) - dest_bucket_name = props['DestinationBucketName'] - dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') - extract = props.get('Extract', 'true') == 'true' - retain_on_delete = props.get('RetainOnDelete', "true") == "true" - distribution_id = props.get('DistributionId', '') - user_metadata = props.get('UserMetadata', {}) - system_metadata = props.get('SystemMetadata', {}) - prune = props.get('Prune', 'true').lower() == 'true' - exclude = props.get('Exclude', []) - include = props.get('Include', []) - sign_content = props.get('SignContent', 'false').lower() == 'true' - output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' - - # backwards compatibility - if "SourceMarkers" is not specified, - # assume all sources have an empty market map - if source_markers is None: - source_markers = [{} for i in range(len(source_bucket_names))] - if source_markers_config is None: - source_markers_config = [{} for i in range(len(source_bucket_names))] - - default_distribution_path = dest_bucket_prefix - if not default_distribution_path.endswith("/"): - default_distribution_path += "/" - if not default_distribution_path.startswith("/"): - default_distribution_path = "/" + default_distribution_path - default_distribution_path += "*" - - distribution_paths = props.get('DistributionPaths', [default_distribution_path]) - except KeyError as e: - cfn_error("missing request resource property %s. props: %s" % (str(e), props)) - return - - # configure aws cli options after resetting back to the defaults for each request - if os.path.exists(AWS_CLI_CONFIG_FILE): - os.remove(AWS_CLI_CONFIG_FILE) - if sign_content: - aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") - - # treat "/" as if no prefix was specified - if dest_bucket_prefix == "/": - dest_bucket_prefix = "" - - s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) - s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) - old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) - - - # obviously this is not - if old_s3_dest == "s3:///": - old_s3_dest = None - - logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) - logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) - - # if we are creating a new resource, allocate a physical id for it - # otherwise, we expect physical id to be relayed by cloudformation - if request_type == "Create": - physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) - else: - if not physical_id: - cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) - return - - # delete or create/update (only if "retain_on_delete" is false) - if request_type == "Delete" and not retain_on_delete: - if not bucket_owned(dest_bucket_name, dest_bucket_prefix): - aws_command("s3", "rm", s3_dest, "--recursive") - - # if we are updating without retention and the destination changed, delete first - if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: - if not old_s3_dest: - logger.warn("cannot delete old resource without old resource properties") - return - - aws_command("s3", "rm", old_s3_dest, "--recursive") - - if request_type == "Update" or request_type == "Create": - s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) - - if distribution_id: - cloudfront_invalidate(distribution_id, distribution_paths) - - cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ - # Passing through the ARN sequences dependencees on the deployment - 'DestinationBucketArn': props.get('DestinationBucketArn'), - **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) - }) - except KeyError as e: - cfn_error("invalid request. Missing key %s" % str(e)) - except Exception as e: - logger.exception(e) - cfn_error(str(e)) - -#--------------------------------------------------------------------------------------------------- -# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities -def sanitize_message(message): - if not message: - return message - - # Sanitize the message to prevent log injection and HTTP response splitting - sanitized_message = message.replace('\n', '').replace('\r', '') - - # Encode the message to handle special characters - encoded_message = urllib.parse.quote(sanitized_message) - - return encoded_message - -#--------------------------------------------------------------------------------------------------- -# populate all files from s3_source_zips to a destination bucket -def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): - # list lengths are equal - if len(s3_source_zips) != len(source_markers): - raise Exception("'source_markers' and 's3_source_zips' must be the same length") - - # create a temporary working directory in /tmp or if enabled an attached efs volume - if ENV_KEY_MOUNT_PATH in os.environ: - workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) - os.mkdir(workdir) - else: - workdir = tempfile.mkdtemp() - - logger.info("| workdir: %s" % workdir) - - # create a directory into which we extract the contents of the zip file - contents_dir=os.path.join(workdir, 'contents') - os.mkdir(contents_dir) - - try: - # download the archive from the source and extract to "contents" - for i in range(len(s3_source_zips)): - s3_source_zip = s3_source_zips[i] - markers = source_markers[i] - markers_config = source_markers_config[i] - - if extract: - archive=os.path.join(workdir, str(uuid4())) - logger.info("archive: %s" % archive) - aws_command("s3", "cp", s3_source_zip, archive) - logger.info("| extracting archive to: %s\n" % contents_dir) - logger.info("| markers: %s" % markers) - extract_and_replace_markers(archive, contents_dir, markers, markers_config) - else: - logger.info("| copying archive to: %s\n" % contents_dir) - aws_command("s3", "cp", s3_source_zip, contents_dir) - - # sync from "contents" to destination - - s3_command = ["s3", "sync"] - - if prune: - s3_command.append("--delete") - - if exclude: - for filter in exclude: - s3_command.extend(["--exclude", filter]) - - if include: - for filter in include: - s3_command.extend(["--include", filter]) - - s3_command.extend([contents_dir, s3_dest]) - s3_command.extend(create_metadata_args(user_metadata, system_metadata)) - aws_command(*s3_command) - finally: - if not os.getenv(ENV_KEY_SKIP_CLEANUP): - shutil.rmtree(workdir) - -#--------------------------------------------------------------------------------------------------- -# invalidate files in the CloudFront distribution edge caches -def cloudfront_invalidate(distribution_id, distribution_paths): - invalidation_resp = cloudfront.create_invalidation( - DistributionId=distribution_id, - InvalidationBatch={ - 'Paths': { - 'Quantity': len(distribution_paths), - 'Items': distribution_paths - }, - 'CallerReference': str(uuid4()), - }) - # by default, will wait up to 10 minutes - cloudfront.get_waiter('invalidation_completed').wait( - DistributionId=distribution_id, - Id=invalidation_resp['Invalidation']['Id']) - -#--------------------------------------------------------------------------------------------------- -# set metadata -def create_metadata_args(raw_user_metadata, raw_system_metadata): - if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: - return [] - - format_system_metadata_key = lambda k: k.lower() - format_user_metadata_key = lambda k: k.lower() - - system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } - user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } - - flatten = lambda l: [item for sublist in l for item in sublist] - system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) - user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] - - return system_args + user_args + ["--metadata-directive", "REPLACE"] - -#--------------------------------------------------------------------------------------------------- -# executes an "aws" cli command -def aws_command(*args): - aws="/opt/awscli/aws" # from AwsCliLayer - logger.info("| aws %s" % ' '.join(args)) - subprocess.check_call([aws] + list(args)) - -#--------------------------------------------------------------------------------------------------- -# sends a response to cloudformation -def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): - - responseUrl = event['ResponseURL'] - - responseBody = {} - responseBody['Status'] = responseStatus - responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) - responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name - responseBody['StackId'] = event['StackId'] - responseBody['RequestId'] = event['RequestId'] - responseBody['LogicalResourceId'] = event['LogicalResourceId'] - responseBody['NoEcho'] = noEcho - responseBody['Data'] = responseData - - body = json.dumps(responseBody) - logger.info("| response body:\n" + body) - - headers = { - 'content-type' : '', - 'content-length' : str(len(body)) - } - - try: - request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) - with contextlib.closing(urlopen(request)) as response: - logger.info("| status code: " + response.reason) - except Exception as e: - logger.error("| unable to send response to CloudFormation") - logger.exception(e) - - -#--------------------------------------------------------------------------------------------------- -# check if bucket is owned by a custom resource -# if it is then we don't want to delete content -def bucket_owned(bucketName, keyPrefix): - tag = CUSTOM_RESOURCE_OWNER_TAG - if keyPrefix != "": - tag = tag + ':' + keyPrefix - try: - request = s3.get_bucket_tagging( - Bucket=bucketName, - ) - return any((x["Key"].startswith(tag)) for x in request["TagSet"]) - except Exception as e: - logger.info("| error getting tags from bucket") - logger.exception(e) - return False - -# extract archive and replace markers in output files -def extract_and_replace_markers(archive, contents_dir, markers, markers_config): - with ZipFile(archive, "r") as zip: - zip.extractall(contents_dir) - - # replace markers for this source - for file in zip.namelist(): - file_path = os.path.join(contents_dir, file) - if os.path.isdir(file_path): continue - replace_markers(file_path, markers, markers_config) - -def prepare_json_safe_markers(markers): - """Pre-process markers to ensure JSON-safe values""" - safe_markers = {} - for key, value in markers.items(): - # Serialize the value as JSON to handle escaping if the value is a string - serialized = json.dumps(value) - if serialized.startswith('"') and serialized.endswith('"'): - json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes - else: - json_safe_value = serialized - safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') - return safe_markers - -def replace_markers(filename, markers, markers_config): - """Replace markers in a file, with special handling for JSON files.""" - # if there are no markers, skip - if not markers: - return - - outfile = filename + '.new' - json_escape = markers_config.get('jsonEscape', 'false').lower() - if json_escape == 'true': - replace_tokens = prepare_json_safe_markers(markers) - else: - replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) - - # Handle content with line-by-line binary replacement - with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: - # Process line by line to handle large files - for line in fi: - for token, replacement in replace_tokens.items(): - line = line.replace(token, replacement) - fo.write(line) - - # Delete the original file and rename the new one to the original - os.remove(filename) - os.rename(outfile, filename) - -def replace_markers_in_json(json_object, replace_tokens): - """Replace markers in JSON content with proper escaping.""" - try: - def replace_in_structure(obj): - if isinstance(obj, str): - # Convert string to bytes for consistent replacement - result = obj.encode('utf-8') - for token, replacement in replace_tokens.items(): - result = result.replace(token, replacement) - # Convert back to string - return result.decode('utf-8') - elif isinstance(obj, dict): - return {k: replace_in_structure(v) for k, v in obj.items()} - elif isinstance(obj, list): - return [replace_in_structure(item) for item in obj] - return obj - - # Process the whole structure - processed = replace_in_structure(json_object) - return json.dumps(processed) - except Exception as e: - logger.error(f'Error processing JSON: {e}') - logger.exception(e) - return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json deleted file mode 100644 index a61ba62e71941..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { - "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", - "source": { - "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136": { - "displayName": "DeploySchema/AwsCliLayer/Code", - "source": { - "path": "asset.12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { - "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", - "source": { - "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { - "displayName": "DeploySchema/Asset1", - "source": { - "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01": { - "displayName": "aws-cdk-bedrock-api-schema-1 Template", - "source": { - "path": "aws-cdk-bedrock-api-schema-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json deleted file mode 100644 index 085134844274f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json +++ /dev/null @@ -1,905 +0,0 @@ -{ - "Resources": { - "InlineActionGroupFunctionServiceRole5543D9A3": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "InlineActionGroupFunction566CD00A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "InlineActionGroupFunctionServiceRole5543D9A3", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "InlineActionGroupFunctionServiceRole5543D9A3" - ] - }, - "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "S3ActionGroupFunctionServiceRole7E4C5A58": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "S3ActionGroupFunctionA4648C25": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionServiceRole7E4C5A58", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "S3ActionGroupFunctionServiceRole7E4C5A58" - ] - }, - "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "SchemaBucket79EE2269": { - "Type": "AWS::S3::Bucket", - "Properties": { - "Tags": [ - { - "Key": "aws-cdk:auto-delete-objects", - "Value": "true" - }, - { - "Key": "aws-cdk:cr-owned:911f5017", - "Value": "true" - } - ] - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "SchemaBucketPolicy557840E2": { - "Type": "AWS::S3::BucketPolicy", - "Properties": { - "Bucket": { - "Ref": "SchemaBucket79EE2269" - }, - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:List*", - "s3:PutBucketPolicy" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - } - }, - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - } - } - }, - "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { - "Type": "Custom::S3AutoDeleteObjects", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", - "Arn" - ] - }, - "BucketName": { - "Ref": "SchemaBucket79EE2269" - } - }, - "DependsOn": [ - "SchemaBucketPolicy557840E2" - ], - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ] - }, - "ManagedPolicyArns": [ - { - "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - } - ] - } - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" - }, - "Timeout": 900, - "MemorySize": 128, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - }, - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, - "Description": { - "Fn::Join": [ - "", - [ - "Lambda function for auto-deleting objects in ", - { - "Ref": "SchemaBucket79EE2269" - }, - " S3 bucket." - ] - ] - } - }, - "DependsOn": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - ] - }, - "DeploySchemaAwsCliLayerD0D0BA6E": { - "Type": "AWS::Lambda::LayerVersion", - "Properties": { - "Content": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip" - }, - "Description": "/opt/awscli/aws" - } - }, - "DeploySchemaCustomResource277E9836": { - "Type": "Custom::CDKBucketDeployment", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn" - ] - }, - "SourceBucketNames": [ - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ], - "SourceObjectKeys": [ - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" - ], - "SourceMarkers": [ - {} - ], - "DestinationBucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "Prune": true, - "OutputObjectKeys": true - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - } - ] - }, - { - "Action": [ - "s3:Abort*", - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*", - "s3:PutObject", - "s3:PutObjectLegalHold", - "s3:PutObjectRetention", - "s3:PutObjectTagging", - "s3:PutObjectVersionTagging" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "Roles": [ - { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" - }, - "Environment": { - "Variables": { - "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" - } - }, - "Handler": "index.handler", - "Layers": [ - { - "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "Role": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - "Arn" - ] - }, - "Runtime": "python3.11", - "Timeout": 900 - }, - "DependsOn": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - ] - }, - "ApiSchemaAgentRole636AC572": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": "s3:GetObject", - "Condition": { - "StringEquals": { - "aws:ResourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - }, - "/schema/s3-api-schema.json" - ] - ] - } - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "Roles": [ - { - "Ref": "ApiSchemaAgentRole636AC572" - } - ] - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgent8E965D9C": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - } - }, - "ActionGroupName": "InlineApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group using an inline API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - } - }, - "ActionGroupName": "S3ApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "S3ObjectKey": "schema/s3-api-schema.json" - } - }, - "Description": "An action group using an S3-based API schema", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "api-schema-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "ApiSchemaAgentRole636AC572", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - } - }, - "Mappings": { - "LatestNodeRuntimeMap": { - "af-south-1": { - "value": "nodejs20.x" - }, - "ap-east-1": { - "value": "nodejs20.x" - }, - "ap-northeast-1": { - "value": "nodejs20.x" - }, - "ap-northeast-2": { - "value": "nodejs20.x" - }, - "ap-northeast-3": { - "value": "nodejs20.x" - }, - "ap-south-1": { - "value": "nodejs20.x" - }, - "ap-south-2": { - "value": "nodejs20.x" - }, - "ap-southeast-1": { - "value": "nodejs20.x" - }, - "ap-southeast-2": { - "value": "nodejs20.x" - }, - "ap-southeast-3": { - "value": "nodejs20.x" - }, - "ap-southeast-4": { - "value": "nodejs20.x" - }, - "ap-southeast-5": { - "value": "nodejs20.x" - }, - "ap-southeast-7": { - "value": "nodejs20.x" - }, - "ca-central-1": { - "value": "nodejs20.x" - }, - "ca-west-1": { - "value": "nodejs20.x" - }, - "cn-north-1": { - "value": "nodejs20.x" - }, - "cn-northwest-1": { - "value": "nodejs20.x" - }, - "eu-central-1": { - "value": "nodejs20.x" - }, - "eu-central-2": { - "value": "nodejs20.x" - }, - "eu-isoe-west-1": { - "value": "nodejs18.x" - }, - "eu-north-1": { - "value": "nodejs20.x" - }, - "eu-south-1": { - "value": "nodejs20.x" - }, - "eu-south-2": { - "value": "nodejs20.x" - }, - "eu-west-1": { - "value": "nodejs20.x" - }, - "eu-west-2": { - "value": "nodejs20.x" - }, - "eu-west-3": { - "value": "nodejs20.x" - }, - "il-central-1": { - "value": "nodejs20.x" - }, - "me-central-1": { - "value": "nodejs20.x" - }, - "me-south-1": { - "value": "nodejs20.x" - }, - "mx-central-1": { - "value": "nodejs20.x" - }, - "sa-east-1": { - "value": "nodejs20.x" - }, - "us-east-1": { - "value": "nodejs20.x" - }, - "us-east-2": { - "value": "nodejs20.x" - }, - "us-gov-east-1": { - "value": "nodejs20.x" - }, - "us-gov-west-1": { - "value": "nodejs20.x" - }, - "us-iso-east-1": { - "value": "nodejs18.x" - }, - "us-iso-west-1": { - "value": "nodejs18.x" - }, - "us-isob-east-1": { - "value": "nodejs18.x" - }, - "us-west-1": { - "value": "nodejs20.x" - }, - "us-west-2": { - "value": "nodejs20.x" - } - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json deleted file mode 100644 index deb2c8dd595bb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockApiSchema/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-api-schema-1" - ], - "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", - "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json deleted file mode 100644 index 50612687a246d..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json +++ /dev/null @@ -1,634 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-api-schema-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-api-schema-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-api-schema-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1dcb6ee990a4eac39f0ddd0aff40daecfc67953d4dbda5116032c036739bdf01.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionServiceRole5543D9A3" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunction566CD00A" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionServiceRole7E4C5A58" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionA4648C25" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "removalPolicy": "destroy", - "autoDeleteObjects": true - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucket79EE2269" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "bucket": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketPolicy557840E2" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" - } - ], - "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ - { - "type": "aws:cdk:logicalId", - "data": "LatestNodeRuntimeMap" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ - { - "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", - "data": true - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ - { - "type": "aws:cdk:analytics:construct", - "data": {} - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "uuid": "*", - "layers": [ - "*" - ], - "environment": "*", - "lambdaPurpose": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - true - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - "*" - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaCustomResource277E9836" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "layers": [ - "*" - ], - "environment": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addEnvironment": [ - "*", - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addLayers": [ - "*" - ] - } - }, - { - "type": "aws:cdk:is-custom-resource-handler-singleton", - "data": true - }, - { - "type": "aws:cdk:is-custom-resource-handler-runtime-family", - "data": 2 - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRole636AC572" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgent8E965D9C" - } - ], - "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-api-schema-1" - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "metadata": { - "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json deleted file mode 100644 index 0667c7afa859d..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","children":{"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"12157b27d30ab71eb24ae65825f672ba5cc2c09dbb1703cd7adfcff3aeaca136.zip"},"description":"/opt/awscli/aws"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":"s3:GetObject","Condition":{"StringEquals":{"aws:ResourceAccount":{"Ref":"AWS::AccountId"}}},"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts index a184ddd7ed21b..c457779ef79fa 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts @@ -61,8 +61,8 @@ const s3ActionGroupFunction = new lambda.Function(stack, 'S3ActionGroupFunction' }); // Create action group executors -const inlineActionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(inlineActionGroupFunction); -const s3ActionGroupExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(s3ActionGroupFunction); +const inlineActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(inlineActionGroupFunction); +const s3ActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(s3ActionGroupFunction); // Create a simple inline API schema const inlineApiSchema = bedrock.ApiSchema.fromInline(` diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json deleted file mode 100644 index 1a10110ba1360..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", - "source": { - "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json deleted file mode 100644 index 321a1836d9c99..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0": { - "displayName": "aws-cdk-bedrock-memory-1 Template", - "source": { - "path": "aws-cdk-bedrock-memory-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json deleted file mode 100644 index b29d71684f6fa..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json +++ /dev/null @@ -1,544 +0,0 @@ -{ - "Resources": { - "DefaultMemoryFunctionServiceRoleD8C5CDAF": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "DefaultMemoryFunctionAC6D5374": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF" - ] - }, - "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomMemoryFunctionServiceRoleA64B0AD5": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomMemoryFunctionB4B5CB9A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomMemoryFunctionServiceRoleA64B0AD5", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomMemoryFunctionServiceRoleA64B0AD5" - ] - }, - "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "AgentWithDefaultMemoryRole0AEE1FD1": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" - } - }, - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", - "Roles": [ - { - "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ] - } - }, - "AgentWithDefaultMemoryA1F31830": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - } - }, - "ActionGroupName": "DefaultMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing default memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-default-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithDefaultMemoryRole0AEE1FD1", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 20 - }, - "StorageDays": 30 - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - ] - }, - "AgentWithCustomMemoryRole3B7BD09F": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" - } - }, - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", - "Roles": [ - { - "Ref": "AgentWithCustomMemoryRole3B7BD09F" - } - ] - } - }, - "AgentWithCustomMemoryD0BD498B": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomMemoryRole3B7BD09F", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 5 - }, - "StorageDays": 15 - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json deleted file mode 100644 index b3e7d637fe1c1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockMemory/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-memory-1" - ], - "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", - "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json deleted file mode 100644 index 1fc79b2a0da48..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json +++ /dev/null @@ -1,420 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-memory-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-memory-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-memory-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-memory-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/627e78e04fd37f260942cefbb2b108b87d15321f816f10eaad7f6b0b0a8439f0.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionAC6D5374" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionServiceRoleA64B0AD5" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionB4B5CB9A" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryA1F31830" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRole3B7BD09F" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryD0BD498B" - } - ], - "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-memory-1" - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "metadata": { - "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockMemory/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json deleted file mode 100644 index 7444f2020a8ce..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts index 590e0c18f3f72..8740062756aa6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.ts @@ -59,8 +59,8 @@ const customMemoryFunction = new lambda.Function(stack, 'CustomMemoryFunction', }); // Create action group executors -const defaultMemoryExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(defaultMemoryFunction); -const customMemoryExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(customMemoryFunction); +const defaultMemoryExecutor = bedrock.ActionGroupExecutor.fromLambda(defaultMemoryFunction); +const customMemoryExecutor = bedrock.ActionGroupExecutor.fromLambda(customMemoryFunction); // Create a simple API schema const apiSchema = bedrock.ApiSchema.fromInline(` diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json deleted file mode 100644 index 8a135a7ec895c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", - "source": { - "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json deleted file mode 100644 index 3b459332058e3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763": { - "displayName": "aws-cdk-bedrock-orchestration-1 Template", - "source": { - "path": "aws-cdk-bedrock-orchestration-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json deleted file mode 100644 index 8e36b064ec0d9..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "Resources": { - "OrchestrationFunctionServiceRole12D0673A": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "OrchestrationFunction2F3851C6": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "OrchestrationFunctionServiceRole12D0673A", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "OrchestrationFunctionServiceRole12D0673A" - ] - }, - "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - }, - "SourceArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentDC6CC131", - "AgentArn" - ] - } - } - }, - "CustomOrchestrationAgentRole85710213": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" - } - }, - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", - "Roles": [ - { - "Ref": "CustomOrchestrationAgentRole85710213" - } - ] - } - }, - "CustomOrchestrationAgentDC6CC131": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "custom-orchestration-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentRole85710213", - "Arn" - ] - }, - "AutoPrepare": false, - "CustomOrchestration": { - "Executor": { - "Lambda": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - } - } - }, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", - "OrchestrationType": "CUSTOM_ORCHESTRATION", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json deleted file mode 100644 index cbf458f1bfb67..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockOrchestration/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-orchestration-1" - ], - "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", - "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json deleted file mode 100644 index d4f4da666a158..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-orchestration-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-orchestration-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-orchestration-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/0433e6fe4af4999f922928a8c8a3bbefbda8164f9a67d4a0dc016acd3616f763.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionServiceRole12D0673A" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunction2F3851C6" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRole85710213" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentDC6CC131" - } - ], - "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-orchestration-1" - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "metadata": { - "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json deleted file mode 100644 index a127939f347c8..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts index 4ad7d8be61a3e..5465bab9f4311 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.ts @@ -7,7 +7,7 @@ import * as cdk from 'aws-cdk-lib'; import * as integ from '@aws-cdk/integ-tests-alpha'; import * as lambda from 'aws-cdk-lib/aws-lambda'; -import * as bedrock from '../../../lib'; +import * as bedrock from '../../../bedrock'; const app = new cdk.App(); @@ -44,12 +44,7 @@ const orchestrationFunction = new lambda.Function(stack, 'OrchestrationFunction' }); // Create an orchestration executor using the Lambda function -const orchestrationExecutor = bedrock.OrchestrationExecutor.fromlambdaFunction(orchestrationFunction); - -// Create a custom orchestration configuration -const customOrchestration = { - executor: orchestrationExecutor, -}; +const customOrchestrationExecutor = bedrock.CustomOrchestrationExecutor.fromLambda(orchestrationFunction); // Create a Bedrock Agent with custom orchestration new bedrock.Agent(stack, 'CustomOrchestrationAgent', { @@ -57,9 +52,8 @@ new bedrock.Agent(stack, 'CustomOrchestrationAgent', { instruction: 'This is an agent using custom orchestration with at least 40 characters of instruction', foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, forceDelete: true, - // Specify custom orchestration - orchestrationType: bedrock.OrchestrationType.CUSTOM_ORCHESTRATION, - customOrchestration: customOrchestration, + // Specify orchestration executor + customOrchestrationExecutor: customOrchestrationExecutor, }); new integ.IntegTest(app, 'BedrockOrchestration', { diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json deleted file mode 100644 index ad7678636bede..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", - "source": { - "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json deleted file mode 100644 index c6329a026ec57..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5": { - "displayName": "aws-cdk-bedrock-prompt-override-1 Template", - "source": { - "path": "aws-cdk-bedrock-prompt-override-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json deleted file mode 100644 index 58245a5db7251..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json +++ /dev/null @@ -1,644 +0,0 @@ -{ - "Resources": { - "PromptOverrideFunctionServiceRoleB1ACDEAD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "PromptOverrideFunctionD82AB437": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD" - ] - }, - "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomParserActionFunctionServiceRoleEE676A1C": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomParserActionFunction3DAF0C7A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomParserActionFunctionServiceRoleEE676A1C", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomParserActionFunctionServiceRoleEE676A1C" - ] - }, - "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "ParserFunctionServiceRole59DD83FB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ParserFunctionE8A187F2": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ParserFunctionServiceRole59DD83FB", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ParserFunctionServiceRole59DD83FB" - ] - }, - "AgentWithPromptOverrideRoleA0EB6013": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" - } - }, - "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", - "Roles": [ - { - "Ref": "AgentWithPromptOverrideRoleA0EB6013" - } - ] - } - }, - "AgentWithPromptOverride13B28AED": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - } - }, - "ActionGroupName": "PromptOverrideActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing prompt override configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-prompt-override", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithPromptOverrideRoleA0EB6013", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", - "PromptOverrideConfiguration": { - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 2048, - "StopSequences": [ - "\n\nHuman:" - ], - "Temperature": 0.2, - "TopK": 250, - "TopP": 0.9 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0.1, - "TopK": 100, - "TopP": 1 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "POST_PROCESSING" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - ] - }, - "AgentWithCustomParserRole29295FCD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent--awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" - } - }, - "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", - "Roles": [ - { - "Ref": "AgentWithCustomParserRole29295FCD" - } - ] - } - }, - "AgentWithCustomParser73E443B8": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomParserActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom parser configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-parser", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomParserRole29295FCD", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 3600, - "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", - "PromptOverrideConfiguration": { - "OverrideLambda": { - "Fn::GetAtt": [ - "ParserFunctionE8A187F2", - "Arn" - ] - }, - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0, - "TopK": 250, - "TopP": 1 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0, - "TopK": 250, - "TopP": 1 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "MEMORY_SUMMARIZATION" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json deleted file mode 100644 index e4d51fb6e558a..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockPromptOverride/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-prompt-override-1" - ], - "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", - "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json deleted file mode 100644 index bec2780a0587f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "version": "42.0.0", - "artifacts": { - "aws-cdk-bedrock-prompt-override-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-prompt-override-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-prompt-override-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/5e2f0ace26e57490fc3712b3ddc08b0ad8ec9f7263ae41f47db9277b564712d5.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionD82AB437" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionServiceRoleEE676A1C" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunction3DAF0C7A" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionServiceRole59DD83FB" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionE8A187F2" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleA0EB6013" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverride13B28AED" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRole29295FCD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParser73E443B8" - } - ], - "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-prompt-override-1" - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "metadata": { - "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1006.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json deleted file mode 100644 index 783dd764b7093..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":["\n\nHuman:"]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":1,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent--awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":3600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0,"topP":1,"topK":250,"maximumLength":1024,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0,"topP":1,"topK":250,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts index 5b0f375370b72..25b45799b7ebe 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.ts @@ -80,8 +80,8 @@ const parserFunction = new lambda.Function(stack, 'ParserFunction', { }); // Create action group executors -const promptOverrideExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(promptOverrideFunction); -const customParserExecutor = bedrock.ActionGroupExecutor.fromlambdaFunction(customParserActionFunction); +const promptOverrideExecutor = bedrock.ActionGroupExecutor.fromLambda(promptOverrideFunction); +const customParserExecutor = bedrock.ActionGroupExecutor.fromLambda(customParserActionFunction); // Create a simple API schema const apiSchema = bedrock.ApiSchema.fromInline(` @@ -139,7 +139,7 @@ new bedrock.Agent(stack, 'AgentWithPromptOverride', { topP: 0.9, topK: 250, maximumLength: 2048, - stopSequences: ['\n\nHuman:'], + stopSequences: [], }, }, { @@ -148,7 +148,7 @@ new bedrock.Agent(stack, 'AgentWithPromptOverride', { customPromptTemplate: '{"messages":[{"role":"user","content":"Refine this response to be more concise and helpful: {{response}}"}]}', inferenceConfig: { temperature: 0.1, - topP: 1.0, + topP: 0.95, topK: 100, maximumLength: 1024, stopSequences: [], @@ -166,32 +166,30 @@ new bedrock.Agent(stack, 'AgentWithCustomParser', { actionGroups: [customParserActionGroup], promptOverrideConfiguration: bedrock.PromptOverrideConfiguration.withCustomParser({ parser: parserFunction, - steps: [ - { - stepType: bedrock.AgentStepType.PRE_PROCESSING, - useCustomParser: true, - customPromptTemplate: '{"messages":[{"role":"user","content":"Process this user input and prepare it for orchestration: {{user_input}}"}]}', - inferenceConfig: { - temperature: 0.0, - topP: 1.0, - topK: 250, - maximumLength: 1024, - stopSequences: [], - }, + preProcessingStep: { + stepType: bedrock.AgentStepType.PRE_PROCESSING, + useCustomParser: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Process this user input and prepare it for orchestration: {{user_input}}"}]}', + inferenceConfig: { + temperature: 0.2, + topP: 0.9, + topK: 250, + maximumLength: 2048, + stopSequences: [], }, - { - stepType: bedrock.AgentStepType.MEMORY_SUMMARIZATION, - useCustomParser: true, - customPromptTemplate: '{"messages":[{"role":"user","content":"Summarize this conversation for memory: {{conversation_history}}"}]}', - inferenceConfig: { - temperature: 0.0, - topP: 1.0, - topK: 250, - maximumLength: 1024, - stopSequences: [], - }, + }, + memorySummarizationStep: { + stepType: bedrock.AgentStepType.MEMORY_SUMMARIZATION, + useCustomParser: true, + customPromptTemplate: '{"messages":[{"role":"user","content":"Summarize this conversation for memory: {{conversation_history}}"}]}', + inferenceConfig: { + temperature: 0.1, + topP: 0.95, + topK: 100, + maximumLength: 1024, + stopSequences: [], }, - ], + }, }), }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/models.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/models.test.ts new file mode 100644 index 0000000000000..0395ad37967ea --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/models.test.ts @@ -0,0 +1,271 @@ +import { Stack } from 'aws-cdk-lib'; +import { Template } from 'aws-cdk-lib/assertions'; +import { Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; +import { FoundationModel, FoundationModelIdentifier } from 'aws-cdk-lib/aws-bedrock'; +import { BedrockFoundationModel, VectorType } from '../../../bedrock/models'; + +describe('BedrockFoundationModel', () => { + test('creates model with default properties', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1'); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(false); + expect(model.supportsCrossRegion).toBe(false); + expect(model.supportsKnowledgeBase).toBe(false); + expect(model.vectorDimensions).toBeUndefined(); + expect(model.supportedVectorType).toBeUndefined(); + }); + + test('creates model with custom properties', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1', { + supportsAgents: true, + supportsCrossRegion: true, + supportsKnowledgeBase: true, + vectorDimensions: 1024, + supportedVectorType: [VectorType.FLOATING_POINT, VectorType.BINARY], + }); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(true); + expect(model.supportsCrossRegion).toBe(true); + expect(model.supportsKnowledgeBase).toBe(true); + expect(model.vectorDimensions).toBe(1024); + expect(model.supportedVectorType).toEqual([VectorType.FLOATING_POINT, VectorType.BINARY]); + }); + + test('grants invoke permissions', () => { + // GIVEN + const stack = new Stack(); + const role = new Role(stack, 'TestRole', { + assumedBy: new ServicePrincipal('lambda.amazonaws.com'), + }); + const model = new BedrockFoundationModel('test.model-v1'); + + // WHEN + model.grantInvoke(role); + + // THEN + const template = Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: [ + 'bedrock:InvokeModel*', + 'bedrock:GetFoundationModel', + ], + Effect: 'Allow', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':bedrock:', + { Ref: 'AWS::Region' }, + '::foundation-model/test.model-v1', + ], + ], + }, + }, + ], + }, + }); + }); + + test('grants invoke permissions for all regions', () => { + // GIVEN + const stack = new Stack(); + const role = new Role(stack, 'TestRole', { + assumedBy: new ServicePrincipal('lambda.amazonaws.com'), + }); + const model = new BedrockFoundationModel('test.model-v1'); + + // WHEN + model.grantInvokeAllRegions(role); + + // THEN + const template = Template.fromStack(stack); + template.hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: [ + { + Action: [ + 'bedrock:InvokeModel*', + 'bedrock:GetFoundationModel', + ], + Effect: 'Allow', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':bedrock:*::foundation-model/test.model-v1', + ], + ], + }, + }, + ], + }, + }); + }); + + test('toString returns modelId', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1'); + + // THEN + expect(model.toString()).toBe('test.model-v1'); + }); + + test('asIModel returns self', () => { + // GIVEN + const model = new BedrockFoundationModel('test.model-v1'); + + // THEN + expect(model.asIModel()).toBe(model); + }); + + test('fromCdkFoundationModelId creates model correctly', () => { + // GIVEN + const modelId = new FoundationModelIdentifier('test.model-v1'); + + // WHEN + const model = BedrockFoundationModel.fromCdkFoundationModelId(modelId, { + supportsAgents: true, + supportsCrossRegion: true, + }); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(true); + expect(model.supportsCrossRegion).toBe(true); + }); + + test('fromCdkFoundationModelId creates model with default properties', () => { + // GIVEN + const modelId = new FoundationModelIdentifier('test.model-v1'); + + // WHEN + const model = BedrockFoundationModel.fromCdkFoundationModelId(modelId); + + // THEN + expect(model.modelId).toBe('test.model-v1'); + expect(model.supportsAgents).toBe(false); + expect(model.supportsCrossRegion).toBe(false); + expect(model.supportsKnowledgeBase).toBe(false); + expect(model.vectorDimensions).toBeUndefined(); + expect(model.supportedVectorType).toBeUndefined(); + }); + + test('fromCdkFoundationModel creates model correctly', () => { + // GIVEN + const modelId = new FoundationModelIdentifier('test.model-v1'); + const stack = new Stack(); + const foundationModel = FoundationModel.fromFoundationModelId(stack, 'TestModel', modelId); + + // WHEN + const model = BedrockFoundationModel.fromCdkFoundationModel(foundationModel, { + supportsAgents: true, + supportsCrossRegion: true, + }); + + // THEN + expect(model.modelId).toBe(modelId.modelId); + expect(model.supportsAgents).toBe(true); + expect(model.supportsCrossRegion).toBe(true); + }); + + test('fromCdkFoundationModel creates model with default properties', () => { + // GIVEN + const modelId = new FoundationModelIdentifier('test.model-v1'); + const stack = new Stack(); + const foundationModel = FoundationModel.fromFoundationModelId(stack, 'TestModel', modelId); + + // WHEN + const model = BedrockFoundationModel.fromCdkFoundationModel(foundationModel); + + // THEN + expect(model.modelId).toBe(modelId.modelId); + expect(model.supportsAgents).toBe(false); + expect(model.supportsCrossRegion).toBe(false); + expect(model.supportsKnowledgeBase).toBe(false); + expect(model.vectorDimensions).toBeUndefined(); + expect(model.supportedVectorType).toBeUndefined(); + }); + + describe('static model instances', () => { + test('AI21 models are configured correctly', () => { + expect(BedrockFoundationModel.AI21_JAMBA_1_5_LARGE_V1.modelId).toBe('ai21.jamba-1-5-large-v1:0'); + expect(BedrockFoundationModel.AI21_JAMBA_1_5_LARGE_V1.supportsAgents).toBe(true); + + expect(BedrockFoundationModel.AI21_JAMBA_1_5_MINI_V1.modelId).toBe('ai21.jamba-1-5-mini-v1:0'); + expect(BedrockFoundationModel.AI21_JAMBA_1_5_MINI_V1.supportsAgents).toBe(true); + + expect(BedrockFoundationModel.AI21_JAMBA_INSTRUCT_V1.modelId).toBe('ai21.jamba-instruct-v1:0'); + expect(BedrockFoundationModel.AI21_JAMBA_INSTRUCT_V1.supportsAgents).toBe(true); + }); + + test('Amazon models are configured correctly', () => { + expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.modelId).toBe('amazon.titan-text-express-v1'); + expect(BedrockFoundationModel.AMAZON_TITAN_TEXT_EXPRESS_V1.supportsAgents).toBe(true); + + expect(BedrockFoundationModel.AMAZON_NOVA_MICRO_V1.modelId).toBe('amazon.nova-micro-v1:0'); + expect(BedrockFoundationModel.AMAZON_NOVA_MICRO_V1.supportsAgents).toBe(true); + expect(BedrockFoundationModel.AMAZON_NOVA_MICRO_V1.supportsCrossRegion).toBe(true); + + expect(BedrockFoundationModel.TITAN_EMBED_TEXT_V1.modelId).toBe('amazon.titan-embed-text-v1'); + expect(BedrockFoundationModel.TITAN_EMBED_TEXT_V1.supportsKnowledgeBase).toBe(true); + expect(BedrockFoundationModel.TITAN_EMBED_TEXT_V1.vectorDimensions).toBe(1536); + expect(BedrockFoundationModel.TITAN_EMBED_TEXT_V1.supportedVectorType).toEqual([VectorType.FLOATING_POINT]); + }); + + test('Anthropic models are configured correctly', () => { + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_3_7_SONNET_V1_0.modelId).toBe('anthropic.claude-3-7-sonnet-20250219-v1:0'); + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_3_7_SONNET_V1_0.supportsAgents).toBe(true); + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_3_7_SONNET_V1_0.supportsCrossRegion).toBe(true); + + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.modelId).toBe('anthropic.claude-v2'); + expect(BedrockFoundationModel.ANTHROPIC_CLAUDE_V2.supportsAgents).toBe(true); + }); + + test('Cohere models are configured correctly', () => { + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.modelId).toBe('cohere.embed-english-v3'); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportsKnowledgeBase).toBe(true); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.vectorDimensions).toBe(1024); + expect(BedrockFoundationModel.COHERE_EMBED_ENGLISH_V3.supportedVectorType).toEqual([ + VectorType.FLOATING_POINT, + VectorType.BINARY, + ]); + + expect(BedrockFoundationModel.COHERE_EMBED_MULTILINGUAL_V3.modelId).toBe('cohere.embed-multilingual-v3'); + expect(BedrockFoundationModel.COHERE_EMBED_MULTILINGUAL_V3.supportsKnowledgeBase).toBe(true); + expect(BedrockFoundationModel.COHERE_EMBED_MULTILINGUAL_V3.vectorDimensions).toBe(1024); + }); + + test('Meta models are configured correctly', () => { + expect(BedrockFoundationModel.META_LLAMA_3_1_8B_INSTRUCT_V1.modelId).toBe('meta.llama3-1-8b-instruct-v1:0'); + expect(BedrockFoundationModel.META_LLAMA_3_1_8B_INSTRUCT_V1.supportsAgents).toBe(true); + expect(BedrockFoundationModel.META_LLAMA_3_1_8B_INSTRUCT_V1.supportsCrossRegion).toBe(true); + + expect(BedrockFoundationModel.META_LLAMA_4_MAVERICK_17B_INSTRUCT_V1.modelId).toBe('meta.llama4-maverick-17b-instruct-v1:0'); + expect(BedrockFoundationModel.META_LLAMA_4_MAVERICK_17B_INSTRUCT_V1.supportsAgents).toBe(true); + expect(BedrockFoundationModel.META_LLAMA_4_MAVERICK_17B_INSTRUCT_V1.supportsCrossRegion).toBe(true); + }); + + test('Mistral models are configured correctly', () => { + expect(BedrockFoundationModel.MISTRAL_7B_INSTRUCT_V0.modelId).toBe('mistral.mistral-7b-instruct-v0:2'); + expect(BedrockFoundationModel.MISTRAL_7B_INSTRUCT_V0.supportsAgents).toBe(true); + expect(BedrockFoundationModel.MISTRAL_7B_INSTRUCT_V0.supportsCrossRegion).toBe(false); + + expect(BedrockFoundationModel.MISTRAL_LARGE_2402_V1.modelId).toBe('mistral.mistral-large-2402-v1:0'); + expect(BedrockFoundationModel.MISTRAL_LARGE_2402_V1.supportsAgents).toBe(true); + expect(BedrockFoundationModel.MISTRAL_LARGE_2402_V1.supportsCrossRegion).toBe(false); + }); + }); +}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts index 75cde0355afbc..e523d3924ebf6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/orchestration-executor.test.ts @@ -1,8 +1,8 @@ import { Stack } from 'aws-cdk-lib'; import * as lambda from 'aws-cdk-lib/aws-lambda'; -import { OrchestrationExecutor } from '../../../bedrock/agents/orchestration-executor'; +import { CustomOrchestrationExecutor } from '../../../bedrock/agents/orchestration-executor'; -describe('OrchestrationExecutor', () => { +describe('CustomOrchestrationExecutor', () => { let stack: Stack; let testFunction: lambda.Function; @@ -17,16 +17,16 @@ describe('OrchestrationExecutor', () => { test('can create from lambda function', () => { // WHEN - const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); + const executor = CustomOrchestrationExecutor.fromLambda(testFunction); // THEN - expect(executor).toBeInstanceOf(OrchestrationExecutor); + expect(executor).toBeInstanceOf(CustomOrchestrationExecutor); expect(executor.lambdaFunction).toBe(testFunction); }); test('renders CFN properties correctly', () => { // GIVEN - const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); + const executor = CustomOrchestrationExecutor.fromLambda(testFunction); // WHEN const rendered = executor._render(); @@ -39,7 +39,7 @@ describe('OrchestrationExecutor', () => { test('handles undefined lambda function gracefully', () => { // GIVEN - const executor = OrchestrationExecutor.fromlambdaFunction(undefined as any); + const executor = CustomOrchestrationExecutor.fromLambda(undefined as any); // WHEN const rendered = executor._render(); @@ -52,7 +52,7 @@ describe('OrchestrationExecutor', () => { test('handles null lambda function gracefully', () => { // GIVEN - const executor = OrchestrationExecutor.fromlambdaFunction(null as any); + const executor = CustomOrchestrationExecutor.fromLambda(null as any); // WHEN const rendered = executor._render(); @@ -66,7 +66,7 @@ describe('OrchestrationExecutor', () => { test('handles lambda function with undefined functionArn', () => { // GIVEN const mockFunction = {} as lambda.IFunction; - const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + const executor = CustomOrchestrationExecutor.fromLambda(mockFunction); // WHEN const rendered = executor._render(); @@ -83,7 +83,7 @@ describe('OrchestrationExecutor', () => { // THEN expect(() => { - OrchestrationExecutor.fromlambdaFunction(nonFunction as any); + CustomOrchestrationExecutor.fromLambda(nonFunction as any); }).not.toThrow(); }); @@ -92,7 +92,7 @@ describe('OrchestrationExecutor', () => { const mockFunction = { functionArn: null, } as any as lambda.IFunction; - const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + const executor = CustomOrchestrationExecutor.fromLambda(mockFunction); // WHEN const rendered = executor._render(); @@ -105,8 +105,8 @@ describe('OrchestrationExecutor', () => { test('preserves lambda function reference', () => { // GIVEN - const executor = OrchestrationExecutor.fromlambdaFunction(testFunction); - const anotherExecutor = OrchestrationExecutor.fromlambdaFunction(testFunction); + const executor = CustomOrchestrationExecutor.fromLambda(testFunction); + const anotherExecutor = CustomOrchestrationExecutor.fromLambda(testFunction); // THEN expect(executor.lambdaFunction).toBe(anotherExecutor.lambdaFunction); @@ -117,7 +117,7 @@ describe('OrchestrationExecutor', () => { const mockFunction = { functionArn: 'arn:aws:lambda:us-west-2:123456789012:function:test', } as lambda.IFunction; - const executor = OrchestrationExecutor.fromlambdaFunction(mockFunction); + const executor = CustomOrchestrationExecutor.fromLambda(mockFunction); // WHEN const rendered = executor._render(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts index 55705ff79a08a..e083a45eb8ad0 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts @@ -1,6 +1,13 @@ import { Stack } from 'aws-cdk-lib'; import * as lambda from 'aws-cdk-lib/aws-lambda'; -import { AgentStepType, PromptOverrideConfiguration } from '../../../bedrock/agents/prompt-override'; +import { + AgentStepType, + PromptOverrideConfiguration, + PromptRoutingClassifierConfigCustomParser, + PromptPreProcessingConfigCustomParser, + PromptOrchestrationConfigCustomParser, + PromptPostProcessingConfigCustomParser, +} from '../../../bedrock/agents/prompt-override'; import { IInvokable } from '../../../bedrock/models'; describe('PromptOverrideConfiguration', () => { @@ -54,6 +61,79 @@ describe('PromptOverrideConfiguration', () => { }); }); + test('creates with multiple steps', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + stepEnabled: true, + customPromptTemplate: 'pre template', + }, + { + stepType: AgentStepType.ORCHESTRATION, + stepEnabled: true, + customPromptTemplate: 'orchestration template', + }, + { + stepType: AgentStepType.POST_PROCESSING, + stepEnabled: false, + customPromptTemplate: 'post template', + }, + ]); + + // THEN + const rendered = config._render(); + expect(rendered.promptConfigurations).toHaveLength(3); + const configs = rendered.promptConfigurations as any[]; + expect(configs[0].promptType).toBe(AgentStepType.PRE_PROCESSING); + expect(configs[1].promptType).toBe(AgentStepType.ORCHESTRATION); + expect(configs[2].promptType).toBe(AgentStepType.POST_PROCESSING); + }); + + test('creates with all step types', () => { + // WHEN + const config = PromptOverrideConfiguration.fromSteps([ + { + stepType: AgentStepType.PRE_PROCESSING, + stepEnabled: true, + }, + { + stepType: AgentStepType.ORCHESTRATION, + stepEnabled: true, + }, + { + stepType: AgentStepType.POST_PROCESSING, + stepEnabled: true, + }, + { + stepType: AgentStepType.ROUTING_CLASSIFIER, + stepEnabled: true, + foundationModel: mockFoundationModel, + } as PromptRoutingClassifierConfigCustomParser, + { + stepType: AgentStepType.MEMORY_SUMMARIZATION, + stepEnabled: true, + }, + { + stepType: AgentStepType.KNOWLEDGE_BASE_RESPONSE_GENERATION, + stepEnabled: true, + }, + ]); + + // THEN + const rendered = config._render(); + expect(rendered.promptConfigurations).toHaveLength(6); + const configs = rendered.promptConfigurations as any[]; + expect(configs.map(c => c.promptType)).toEqual([ + AgentStepType.PRE_PROCESSING, + AgentStepType.ORCHESTRATION, + AgentStepType.POST_PROCESSING, + AgentStepType.ROUTING_CLASSIFIER, + AgentStepType.MEMORY_SUMMARIZATION, + AgentStepType.KNOWLEDGE_BASE_RESPONSE_GENERATION, + ]); + }); + test('throws error for empty steps', () => { // THEN expect(() => { @@ -74,12 +154,10 @@ describe('PromptOverrideConfiguration', () => { // WHEN const config = PromptOverrideConfiguration.withCustomParser({ parser, - steps: [ - { - stepType: AgentStepType.PRE_PROCESSING, - useCustomParser: true, - }, - ], + preProcessingStep: { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: true, + } as PromptPreProcessingConfigCustomParser, }); // THEN @@ -101,12 +179,10 @@ describe('PromptOverrideConfiguration', () => { expect(() => { PromptOverrideConfiguration.withCustomParser({ parser, - steps: [ - { - stepType: AgentStepType.PRE_PROCESSING, - useCustomParser: false, - }, - ], + preProcessingStep: { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: false, + } as PromptPreProcessingConfigCustomParser, }); }).toThrow('At least one step must use custom parser'); }); @@ -211,7 +287,7 @@ describe('PromptOverrideConfiguration', () => { { stepType: AgentStepType.ROUTING_CLASSIFIER, foundationModel: mockFoundationModel, - }, + } as PromptRoutingClassifierConfigCustomParser, ]); // THEN @@ -227,7 +303,7 @@ describe('PromptOverrideConfiguration', () => { { stepType: AgentStepType.PRE_PROCESSING, foundationModel: mockFoundationModel, - }, + } as PromptPreProcessingConfigCustomParser, ]); }).toThrow('Foundation model can only be specified for ROUTING_CLASSIFIER step type'); }); @@ -239,7 +315,7 @@ describe('PromptOverrideConfiguration', () => { { stepType: AgentStepType.ROUTING_CLASSIFIER, foundationModel: {} as IInvokable, - }, + } as PromptRoutingClassifierConfigCustomParser, ]); }).toThrow('Foundation model must be a valid IInvokable with an invokableArn'); }); @@ -304,20 +380,18 @@ describe('PromptOverrideConfiguration', () => { handler: 'index.handler', code: lambda.Code.fromInline('exports.handler = () => {}'), }), - steps: [ - { - stepType: AgentStepType.PRE_PROCESSING, - useCustomParser: true, - }, - { - stepType: AgentStepType.ORCHESTRATION, - useCustomParser: false, - }, - { - stepType: AgentStepType.POST_PROCESSING, - useCustomParser: undefined, - }, - ], + preProcessingStep: { + stepType: AgentStepType.PRE_PROCESSING, + useCustomParser: true, + } as PromptPreProcessingConfigCustomParser, + orchestrationStep: { + stepType: AgentStepType.ORCHESTRATION, + useCustomParser: false, + } as PromptOrchestrationConfigCustomParser, + postProcessingStep: { + stepType: AgentStepType.POST_PROCESSING, + useCustomParser: undefined, + } as PromptPostProcessingConfigCustomParser, }); // THEN From f8c910dc0a662aa2ca80b1f505cadf4bb3f5af1e Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 11:07:34 -0400 Subject: [PATCH 21/39] fix(bedrockl2): updated integ test and api schema for local assets --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 67 ++++++++++++++++++- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 27 ++++++-- .../bedrock/agents/api-schema.ts | 1 + .../@aws-cdk/aws-bedrock-alpha/lib/index.ts | 1 - .../test/bedrock/agents/agent.test.ts | 2 +- .../test/bedrock/agents/integ.agent.ts | 31 ++++++++- .../test/bedrock/agents/integ.api-schema.ts | 37 +++++++++- 7 files changed, 151 insertions(+), 15 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 2422e5a19c3f5..8c71cf669a7bd 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -78,7 +78,9 @@ The Bedrock Agent class supports the following properties. An action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them. -Example: +There are three ways to provide an API schema for your action group: + +From a local asset file (requires binding to scope): ```ts fixture=default const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { @@ -87,12 +89,16 @@ const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), }); +// When using ApiSchema.fromLocalAsset, you must bind the schema to a scope +const schema = bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')); +schema.bind(this); + const actionGroup = new bedrock.AgentActionGroup({ name: 'query-library', description: 'Use these functions to get information about the books in the library.', executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), enabled: true, - apiSchema: bedrock.ApiSchema.fromLocalAsset(path.join(__dirname, 'action-group.yaml')), + apiSchema: schema, }); const agent = new bedrock.Agent(this, 'Agent', { @@ -103,6 +109,63 @@ const agent = new bedrock.Agent(this, 'Agent', { agent.addActionGroup(actionGroup); ``` +From an inline OpenAPI schema: + +```ts fixture=default +const inlineSchema = bedrock.ApiSchema.fromInline(` +openapi: 3.0.3 +info: + title: Library API + version: 1.0.0 +paths: + /search: + get: + summary: Search for books + operationId: searchBooks + parameters: + - name: query + in: query + required: true + schema: + type: string +`); + +const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { + runtime: lambda.Runtime.PYTHON_3_12, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), +}); + +const actionGroup = new bedrock.AgentActionGroup({ + name: 'query-library', + description: 'Use these functions to get information about the books in the library.', + executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), + enabled: true, + apiSchema: inlineSchema, +}); +``` + +From an existing S3 file: + +```ts fixture=default +const bucket = s3.Bucket.fromBucketName(this, 'ExistingBucket', 'my-schema-bucket'); +const s3Schema = bedrock.ApiSchema.fromS3File(bucket, 'schemas/action-group.yaml'); + +const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { + runtime: lambda.Runtime.PYTHON_3_12, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), +}); + +const actionGroup = new bedrock.AgentActionGroup({ + name: 'query-library', + description: 'Use these functions to get information about the books in the library.', + executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), + enabled: true, + apiSchema: s3Schema, +}); +``` + If you chose to load your schema file from S3, the construct will provide the necessary permissions to your agent's execution role to access the schema file from the specific bucket. Similar to performing the operation through the console, the agent execution role will get a permission like: ```json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index e5ec1a448efa7..baaad379a7d77 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -13,6 +13,7 @@ import { AgentAlias, IAgentAlias } from './agent-alias'; import { AgentCollaborator } from './agent-collaborator'; import { AgentCollaboration } from './agent-collaboration'; import { PromptOverrideConfiguration } from './prompt-override'; +import { AssetApiSchema, S3ApiSchema } from './api-schema'; import * as validation from './validation-helpers'; import { IInvokable } from '.././models'; import { Memory } from './memory'; @@ -573,9 +574,7 @@ export class Agent extends AgentBase implements IAgent { * - S3 GetObject permissions if apiSchema.s3File is present */ public addActionGroup(actionGroup: AgentActionGroup) { - // Do some checks validation.throwIfInvalid(this.validateActionGroup, actionGroup); - // Add it to the array this.actionGroups.push(actionGroup); // Handle permissions to invoke the lambda function actionGroup.executor?.lambdaFunction?.grantInvoke(this.role); @@ -585,9 +584,25 @@ export class Agent extends AgentBase implements IAgent { sourceAccount: { Ref: 'AWS::AccountId' } as any, }); // Handle permissions to access the schema file from S3 - if (actionGroup.apiSchema?.s3File) { - const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, actionGroup.apiSchema.s3File.bucketName); - bucket.grantRead(this.role, actionGroup.apiSchema.s3File.objectKey); + if (actionGroup.apiSchema instanceof AssetApiSchema) { + const rendered = actionGroup.apiSchema._render(); + if ('s3' in rendered && rendered.s3) { + const s3Config = rendered.s3; + if ('s3BucketName' in s3Config && 's3ObjectKey' in s3Config) { + const bucketName = s3Config.s3BucketName; + const objectKey = s3Config.s3ObjectKey; + if (bucketName && objectKey) { + const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, bucketName); + bucket.grantRead(this.role, objectKey); + } + } + } + } else if (actionGroup.apiSchema instanceof S3ApiSchema) { + const s3File = actionGroup.apiSchema.s3File; + if (s3File && s3File.bucketName && s3File.objectKey) { + const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, s3File.bucketName); + bucket.grantRead(this.role, s3File.objectKey); + } } } @@ -754,7 +769,7 @@ export class Agent extends AgentBase implements IAgent { */ protected generatePhysicalName(): string { const maxLength = this.MAXLENGTH_FOR_ROLE_NAME - this.ROLE_NAME_SUFFIX.length; - return this.generatePhysicalNameHash(this, 'agent-', { + return this.generatePhysicalNameHash(this, 'agent', { maxLength, lower: true, separator: '-', diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts index dc24a6447ac1c..60d44adad2429 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -100,6 +100,7 @@ export class AssetApiSchema extends ApiSchema { path: this.path, ...this.options, }); + // Note: Permissions will be granted by the Agent construct when adding the action group } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts index a02fd8b44ba56..e99dcb121a515 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/lib/index.ts @@ -4,4 +4,3 @@ // while all files including only utility functions will be omitted from here. export * from '../bedrock'; - diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts index c511b67a813a6..2f7ee7bb88aa7 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -32,7 +32,7 @@ describe('Agent', () => { }); Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentName: Match.stringLikeRegexp('agent--teststack-testagent-8d92f3fe-bedrockagent'), + AgentName: Match.stringLikeRegexp('agent-teststack-testagent-8d92f3fe-bedrockagent'), }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts index 41fb2d78d4f56..5e02af1a83d4a 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.ts @@ -6,18 +6,44 @@ import * as cdk from 'aws-cdk-lib'; import * as integ from '@aws-cdk/integ-tests-alpha'; -import * as bedrock from '../../../lib'; +import * as bedrock from '../../../bedrock'; const app = new cdk.App(); const stack = new cdk.Stack(app, 'aws-cdk-bedrock-agent-1'); -// Create a Bedrock Agent with default values +// Create a collaborator agent +const collaboratorAgent = new bedrock.Agent(stack, 'CollaboratorAgent', { + agentName: 'collaborator-agent', + instruction: 'This is a collaborator agent with at least 40 characters of instruction', + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, + forceDelete: true, +}); + +// Create a custom alias for the collaborator agent +const collaboratorAlias = new bedrock.AgentAlias(stack, 'CollaboratorAlias', { + agentAliasName: 'collaborator-alias', + agent: collaboratorAgent, +}); + +// Create a Bedrock Agent with collaboration enabled new bedrock.Agent(stack, 'MyAgent', { agentName: 'test-agent-1', instruction: 'This is a test instruction that must be at least 40 characters long to be valid', foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, forceDelete: true, + // Configure collaboration + agentCollaboration: new bedrock.AgentCollaboration({ + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [ + new bedrock.AgentCollaborator({ + agentAlias: collaboratorAlias, + collaborationInstruction: 'Help the primary agent with complex tasks and provide additional context', + collaboratorName: 'HelperAgent', + relayConversationHistory: true, + }), + ], + }), }); new integ.IntegTest(app, 'BedrockAgent', { @@ -25,4 +51,3 @@ new integ.IntegTest(app, 'BedrockAgent', { }); app.synth(); - diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts index c457779ef79fa..25886b46130f5 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts @@ -9,13 +9,36 @@ import * as integ from '@aws-cdk/integ-tests-alpha'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as s3 from 'aws-cdk-lib/aws-s3'; import * as s3deploy from 'aws-cdk-lib/aws-s3-deployment'; -import * as bedrock from '../../../lib'; +import * as bedrock from '../../../bedrock'; const app = new cdk.App(); const stack = new cdk.Stack(app, 'aws-cdk-bedrock-api-schema-1'); // Create Lambda functions for the action group executors +// Create Lambda functions for the action group executors +const assetActionGroupFunction = new lambda.Function(stack, 'AssetActionGroupFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline(` + exports.handler = async (event) => { + console.log('Event:', JSON.stringify(event)); + return { + messageVersion: '1.0', + response: { + actionGroup: event.actionGroup, + apiPath: event.apiPath, + httpMethod: event.httpMethod, + httpStatusCode: 200, + responseBody: { + application_json: { result: 'Success from asset action group' } + } + } + }; + }; + `), +}); + const inlineActionGroupFunction = new lambda.Function(stack, 'InlineActionGroupFunction', { runtime: lambda.Runtime.NODEJS_18_X, handler: 'index.handler', @@ -61,9 +84,13 @@ const s3ActionGroupFunction = new lambda.Function(stack, 'S3ActionGroupFunction' }); // Create action group executors +const assetActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(assetActionGroupFunction); const inlineActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(inlineActionGroupFunction); const s3ActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(s3ActionGroupFunction); +// Create an API schema from a local asset file +const assetApiSchema = bedrock.ApiSchema.fromLocalAsset('test/bedrock/agents/test-schema.yaml'); + // Create a simple inline API schema const inlineApiSchema = bedrock.ApiSchema.fromInline(` openapi: 3.0.3 @@ -135,13 +162,19 @@ const schemaDeployment = new s3deploy.BucketDeployment(stack, 'DeploySchema', { // Create an API schema from the S3 file const s3ApiSchema = bedrock.ApiSchema.fromS3File(schemaBucket, 'schema/s3-api-schema.json'); -// Create a Bedrock Agent with action groups using both API schemas +// Create a Bedrock Agent with action groups using all three API schema types const agent = new bedrock.Agent(stack, 'ApiSchemaAgent', { agentName: 'api-schema-agent', instruction: 'This is an agent using an API schema with at least 40 characters of instruction', foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET_V2_0, forceDelete: true, actionGroups: [ + new bedrock.AgentActionGroup({ + name: 'AssetApiSchemaActionGroup', + description: 'An action group using a local asset API schema', + apiSchema: assetApiSchema, + executor: assetActionGroupExecutor, + }), new bedrock.AgentActionGroup({ name: 'InlineApiSchemaActionGroup', description: 'An action group using an inline API schema', From 7cc68c9ebfcb558faa032e224eaa18f31b379578 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 11:09:00 -0400 Subject: [PATCH 22/39] fix(bedrockl2): updated integ test for api schem --- .../test/bedrock/agents/test-schema.yaml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/test-schema.yaml diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/test-schema.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/test-schema.yaml new file mode 100644 index 0000000000000..4accd4cadb267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/test-schema.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.3 +info: + title: Asset API Schema + version: 1.0.0 +paths: + /asset: + get: + operationId: assetHelloWorld + summary: Say hello from asset + description: Returns a greeting message from asset-stored schema + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string From 8a04636d9573b48ef6f5e6820a709eda0348f82e Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 11:59:31 -0400 Subject: [PATCH 23/39] fix(bedrockl2): restore yarn.lock from main branch --- yarn.lock | 14640 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 14640 insertions(+) create mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000000..aa53795826c03 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,14640 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@actions/core@^1.11.1": + version "1.11.1" + resolved "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172" + integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A== + dependencies: + "@actions/exec" "^1.1.1" + "@actions/http-client" "^2.0.1" + +"@actions/exec@^1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" + integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== + dependencies: + "@actions/io" "^1.0.1" + +"@actions/github@^5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb" + integrity sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g== + dependencies: + "@actions/http-client" "^2.0.1" + "@octokit/core" "^3.6.0" + "@octokit/plugin-paginate-rest" "^2.17.0" + "@octokit/plugin-rest-endpoint-methods" "^5.13.0" + +"@actions/http-client@^2.0.1": + version "2.2.3" + resolved "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674" + integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA== + dependencies: + tunnel "^0.0.6" + undici "^5.25.4" + +"@actions/io@^1.0.1": + version "1.1.3" + resolved "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" + integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@aws-cdk/asset-awscli-v1@2.2.229": + version "2.2.229" + resolved "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.229.tgz#39bf5b70f1e1334031d1333ba42fe755cacbb441" + integrity sha512-apNt/Sfty7Jwi1+6hrZaQeVisqnJAW4+uQZI55VPKtBqjTFEsKPBc/KZDx9Tlw8Ii1yWrS3HNzLNGxpTXae8XQ== + +"@aws-cdk/asset-node-proxy-agent-v6@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" + integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== + +"@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": + version "0.0.0" + +"@aws-cdk/aws-service-spec@0.1.71", "@aws-cdk/aws-service-spec@^0.1.71": + version "0.1.71" + resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.71.tgz#8ebc0e428c588bd362bc46abd372c91a1e5e1370" + integrity sha512-tSDXj6tdy+k1whXJppJH3ireaP57H6ENYPyLscevT6EesdETzwm0kLJdzykcRGAUl0lDrEoIqRpylceN6wKSOQ== + dependencies: + "@aws-cdk/service-spec-types" "^0.0.137" + "@cdklabs/tskb" "^0.0.3" + +"@aws-cdk/cloud-assembly-schema@^41.2.0": + version "41.2.0" + resolved "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-41.2.0.tgz#c1ef513e1cc0528dbc05948ae39d5631306af423" + integrity sha512-JaulVS6z9y5+u4jNmoWbHZRs9uGOnmn/ktXygNWKNu1k6lF3ad4so3s18eRu15XCbUIomxN9WPYT6Ehh7hzONw== + dependencies: + jsonschema "~1.4.1" + semver "^7.7.1" + +"@aws-cdk/integ-runner@^2.186.6": + version "2.186.6" + resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.6.tgz#884dca050010b34cfd8bbfd34a9e164dbf24d36b" + integrity sha512-5Yf0qPFRTaMP/Anl+O78vlmh+pt+DI3pchiIQmSGKDG4jGCGFvthDegsEZjEFyYroItMTgmwCVDRdB7dDycN9A== + dependencies: + "@aws-cdk/aws-service-spec" "0.1.71" + aws-cdk "2.1014.0" + optionalDependencies: + fsevents "2.3.2" + +"@aws-cdk/lambda-layer-kubectl-v24@^2.0.242": + version "2.0.242" + resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v24/-/lambda-layer-kubectl-v24-2.0.242.tgz#4273a5ad7714f933a7eba155eb9280823086db71" + integrity sha512-7/wIOo685tmrEe4hh6zqDELhBZh5OQGf3Hd2FU2Vnwy2ZubW8qTmEw5gqJCsCrGKeYDoa1BcVhDRZ/nzjkaqyA== + +"@aws-cdk/lambda-layer-kubectl-v29@^2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v29/-/lambda-layer-kubectl-v29-2.1.1.tgz#8160f2a6658d3c6832f5bfa0d81184bfe9cd776b" + integrity sha512-6CChfYXbV8jDIEhUrF2oxXUJPYjXRjt4d6D3Tck9z9wd1jN17juOHTetompVJCDYWfqrXYWT2gK8PEc9pqJojg== + +"@aws-cdk/lambda-layer-kubectl-v30@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v30/-/lambda-layer-kubectl-v30-2.0.4.tgz#fdde8426a02d730b7d3a990a3a439e096370e179" + integrity sha512-zhi8pZA+NS+irgWdPOqK+O++qk3moOAoG4kv+VEVWC9G2p+dZX51VheKxawqPF9IwAZnQ2kmVGs7PgrsVIsDWQ== + +"@aws-cdk/lambda-layer-kubectl-v31@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v31/-/lambda-layer-kubectl-v31-2.0.3.tgz#6b457c9a8836e6b010a8aad9d9515089174c5bbd" + integrity sha512-nmpFLK3539UsZmXdO9Ni+e2samRCT6HIIOgPgIVgbiYy8etV+5w+oan4ZAcfwI53L9w1cINQLQZiCkXdh43CMw== + +"@aws-cdk/lambda-layer-kubectl-v32@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v32/-/lambda-layer-kubectl-v32-2.1.0.tgz#6b9beb4b6b09af74ec48f0c778e50732d7bbb54b" + integrity sha512-a+zvCLapTg8R0P/Nrecc8mKV+ZgAwvkndn4/zlb43e14zRlc4/ozvmeghUT2eoyyaWJv+PwqgWohEXXec3kpSw== + +"@aws-cdk/service-spec-importers@^0.0.78": + version "0.0.78" + resolved "https://registry.npmjs.org/@aws-cdk/service-spec-importers/-/service-spec-importers-0.0.78.tgz#344e7b10965d95c2793c15233fa6d2cf8d4456c9" + integrity sha512-mua9t4ZFzu9oeRA1UTu1bzGR9CHR4FazhM4Ik0HS7yUGz3rT43eL9VxkecMGqrU8e8gSLa44xzJn0m+DWyq+Sw== + dependencies: + "@aws-cdk/service-spec-types" "^0.0.137" + "@cdklabs/tskb" "^0.0.3" + ajv "^6" + canonicalize "^2.1.0" + chalk "^4" + commander "^11.1.0" + fast-json-patch "^3.1.1" + fs-extra "^11.3.0" + glob "^8" + sort-json "^2.0.1" + +"@aws-cdk/service-spec-types@^0.0.137": + version "0.0.137" + resolved "https://registry.npmjs.org/@aws-cdk/service-spec-types/-/service-spec-types-0.0.137.tgz#b953ac8d636d89c6986d94a0887c8e77c89981bd" + integrity sha512-hOCLfa4Gid4Gh3cl4Kgxe2tOqcMKJrhTRuOJ4XFfeKELGG6EYCdG3fVlCthP3WncvSls+X5gfoKolnLhH0SIIw== + dependencies: + "@cdklabs/tskb" "^0.0.3" + +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/crc32c@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" + integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/sha1-browser@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" + integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== + dependencies: + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== + dependencies: + tslib "^2.6.2" + +"@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-account@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-account/-/client-account-3.632.0.tgz#ca4abada7c0a9073a73512af96e19d54c99363f2" + integrity sha512-dnOw27v5Gz1MuIkv/0OKAOSUshYROACIlK94WibWo4mCEKxrc5bW1OeE00p1tcMm9l5Mhl6IYSoUwVaziUhTLA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-acm@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-acm/-/client-acm-3.632.0.tgz#a476d9964a2c06060e14f69e6afb0ba8a227ef54" + integrity sha512-uPsDoJFmFTJXTSJ8Dmi1u901Drss9CXsxRHX+kUp30A92HK4C7LbnmUh0gHaXM4OgFeRbklrGNbqQr6AxRRKBA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-amplify@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-amplify/-/client-amplify-3.632.0.tgz#9960f36c282de8f78e5582c57a7eaba54eccd975" + integrity sha512-ktlje4aC+R1ZgmJzITeGm17YkBEPPPOim+HnHpyu5+W5k55LaQ9q2uHM0wcNrNCu6BwN3jJ2s2+v+z7jT2GQuw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-cloudwatch-logs@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.632.0.tgz#53355665b04a2131a80bcaba7a3f88ecf6c7c929" + integrity sha512-QrG04Ss2/KDsvGmoBH9QHjaC/wx7Gf9U2F5o8gYbHVU5ZGDW+zMX2Sj/6jjSyZ4qLD4sxK7sRHwK+fYA21OQQA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/eventstream-serde-browser" "^3.0.6" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.5" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-cloudwatch@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.632.0.tgz#865a01e2eea926d80caeec7b461c126c5f51b7b5" + integrity sha512-RIItCf874T8aiE17yikJ6VcARvRv/sn86WMpyJCN0+aUMSOB8X86OHe7KCUN72EkvFKeWXim808RPpS8fZLXKw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-compression" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-codepipeline@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-codepipeline/-/client-codepipeline-3.632.0.tgz#c09564b38aea90001767aa3640e4456bdc7a28a0" + integrity sha512-5Cl8W/tG7k/sGmEEst2NY9o9ID2bTvdaPLT0ICpi8Ehq8K17Q79nMKgSzBGvgkQv6lvYxgsdFU3Cv0lkcXw75Q== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-cognito-identity-provider@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.632.0.tgz#076e0a62ee24c02d2bebbfef3f33e4ebcd1c2512" + integrity sha512-RP9L/LKu3qwXT6z+eq8tjOb4kpT2JiQYi483pVg85jf1PiIB+aoPA0Dbre7f+b7Wpo3FyPIlFqKuHzqhPWZvfQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-cognito-identity@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.632.0.tgz#9b8b95885e21eecce2593f7a8f45ec5828ddf0be" + integrity sha512-ciPZZ0jxMmXuaKCVdJthWogfqJ/4nb1zCxm7D/XkKcSbANjAiJ+1l+yiu7ZPTLGKKPRQQkPsWUknw5xb/5LxeQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-dynamodb@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.632.0.tgz#c1980d0ec06f8663b795043c5436e94060ac7b80" + integrity sha512-Y7u/B/lyLdLZBrBSXjYZviyck0e3dZLL/Va6HIShNlDG8FyWuArefWr57/bu9Q8smdqpEduldprSRSWI7MPykg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-endpoint-discovery" "3.620.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-ec2@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ec2/-/client-ec2-3.632.0.tgz#291c496fbef8b1f3e166470e7dffff8911e3e53b" + integrity sha512-hjXIfn5OEISL5rous2G5N3/YgcBMwsKgwKZgrHissJjH/HralJIqQVCjxcE7X6diopgsbX0Lj/EbxkX2eudH/A== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-sdk-ec2" "3.622.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-ecr@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.632.0.tgz#cf6d09e55e50c1a864c4b7fb34b9fc24e5b0b8cc" + integrity sha512-J5EvnmMz3JCoQbhNIwSX7H4Ojrwndoh/xd/3rzehSBMSONARfl6RM5tWCxlDDR9cObnL6I503aoCxbP1LRwILw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-ecs@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.632.0.tgz#1f346349cfadb88c473ce63a547bfb80d288adc8" + integrity sha512-g1euXlFQ99CScMb9Tn9baGoNxRoeJclm+cDv7jf//F/eZCUCQq7Iah2dlOR2nZkrjpWAY3dvQ3MwVEB1z662Sg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-eks@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-eks/-/client-eks-3.632.0.tgz#c9dff3f2d59ca1b46ea220937efb93ddc5cc389d" + integrity sha512-ax8XRTThlIYicCOxOZ0zViVpMJrR3XVN9/MtQUtO1thHxFiSdcw74qFXEYsB/rM4FpzWvFIWVx5lMLoBWmb1wQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-iam@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.632.0.tgz#43ee70a7957d4b77b68279205b64679146f81363" + integrity sha512-iwivASUliVxCEbT/mu5s03SCyqQKNXbJUpG17ywT4taA2xvLisGRI5iNV3OYT1qDmK9DOLMSJYpeX2GWCijPxw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-kinesis@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.632.0.tgz#c22b2e652409626c993d0fd1997a47d1709d7cb0" + integrity sha512-4CVhckeqvpWKATFwKdwysbnaJY9e9+zmJnnH8fQqqfOqijoH2KNkygPCFoiRKwYl+UHl99KDu1Vt8+/3M490Ug== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/eventstream-serde-browser" "^3.0.6" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.5" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-kms@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.632.0.tgz#c917414a017c83294f6ee27a51a2191dfa6bb1e0" + integrity sha512-uMm1fAIdImaBKwKXnpcD1cpRlTAbLisbRbNJqzJdH+snN0jAkukLNUMUheb0XKaczk7eQrp5w4inlWrRvEmjSA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-lambda@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.632.0.tgz#6e31acb2f4484d61ade5928eba329a1e45f27354" + integrity sha512-vF4KRuHGr6EfW+dssm56S6b+jAa8dKqdWduHNms1TQFah0iOkjc9Dpo4p4j6bobZcuricGko/OZy9ynb1Dwldg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/eventstream-serde-browser" "^3.0.6" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.5" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-stream" "^3.1.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-rds@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-rds/-/client-rds-3.632.0.tgz#ff8a78b81c8a58930c1f80db77ddfee4efdb5242" + integrity sha512-dKltgfhjPjeRQc3DLQQGFKUpW7Cnr/oyh8iDNP20EPQww6f7rif3KPmShiXBp/PAkYmXeaWqu6MSsoC3PTyMqA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-sdk-rds" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-redshift-data@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-redshift-data/-/client-redshift-data-3.632.0.tgz#0412f25f42eacd8986af3164603c1f8f52a8868b" + integrity sha512-Hphh1/OwlZhIRvrxjFX/6p+tRKlXSc2Uvkv6q/ekkHth9otZg5BUei/vLXzbixQiCKVhay60EYn4ecd/6jPAsA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-redshift@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-redshift/-/client-redshift-3.632.0.tgz#2671660fc7a3108eef97ddd189bb2ecccfef6cf5" + integrity sha512-+3/D4TvIHlFVyFbWey3a2eu1LUAtQFMHMSaKm37b+qWi8lM1ME2nocUC/4n8wKR0XRhHUF5sDFbXZVF0jk2GhA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-route-53@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.632.0.tgz#3c6a7eb2bac2701411f8a9b4bf56461d8a03471f" + integrity sha512-BEMRHWxmXBzWlnCuW1rTaqYHUSGPDMpQbZdsC7dCuVcYdIBwKfJrPe1HtvT0+6W/KkDQqxoEgKrl47+Jzl06qw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-sdk-route53" "3.609.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@aws-sdk/xml-builder" "3.609.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-s3@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.632.0.tgz#8a22b393f9fd469b1fbd006f60d18d4e039a6846" + integrity sha512-GlhLo/t/E9w3EG3ZhFsSeSM3op2lfhc1LrLMXHFsmH1xIPkjIoxV+aHYIenuF7b/MGgMQDOjf07QeQNXfAr1gg== + dependencies: + "@aws-crypto/sha1-browser" "5.2.0" + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-bucket-endpoint" "3.620.0" + "@aws-sdk/middleware-expect-continue" "3.620.0" + "@aws-sdk/middleware-flexible-checksums" "3.620.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-location-constraint" "3.609.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-sdk-s3" "3.629.0" + "@aws-sdk/middleware-ssec" "3.609.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/signature-v4-multi-region" "3.629.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@aws-sdk/xml-builder" "3.609.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/eventstream-serde-browser" "^3.0.6" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.5" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-blob-browser" "^3.1.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/hash-stream-node" "^3.1.2" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/md5-js" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-stream" "^3.1.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-secrets-manager@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.632.0.tgz#821b28489da90229a8718ba1d7bc3d9a7ba694e1" + integrity sha512-WsQhPHHK1yPfALcP1B7nBSGDzky6vFTUEXnUdfzb5Xy2cT+JTBTS6ChtQGqqOuGHDP/3t/9soqZ+L6rUCYBb/Q== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-sfn@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.632.0.tgz#6b4fd93ad9adb4619d322dbf73478ff90ff2f971" + integrity sha512-LPaMqALuArGX1Y5N3tHX4lNlZabsqgfGJZjwyLTHawqiGNDMlMqOUg4Dl0e2Ies8yvMjs//YXtMWz26x24cGkQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-ssm@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.632.0.tgz#4997995530e40dd45b8883ddd66e20dd4c6a3bf8" + integrity sha512-p9QZguhC6NB6CQTFgLcYhU1yhGF7SN9kDMtFwtFBxTPO/SQJ/PJcEyL40yXPbuPUXFtT/YRhT9mIwQagfkXzAA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-sso-oidc@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz#38d0b11980f0716c85e63acf2bce0ac1e6ccc9b5" + integrity sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz#cc7d7c7578ba34d3689574dc015a0a71b35872e1" + integrity sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sts@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz#dc0e9d9958752f620adbe9783fb8ba2f2f915463" + integrity sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-synthetics@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-synthetics/-/client-synthetics-3.632.0.tgz#a3abdd36e431952d6c1a26b2cdbe0c94d38277fd" + integrity sha512-Ce1CXIDuoa8x6EH3tmrSUtzGzyJaNF5mTb9OA1rnaBYBOS3ObIROSB/JIe+wvod7B92s4PTZ2wvCur3DzwQSaw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/core" "3.629.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.632.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.2" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.14" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.14" + "@smithy/util-defaults-mode-node" "^3.0.14" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.629.0": + version "3.629.0" + resolved "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz#1ed02c657edcd22ffdce9b3b5bdbd2a36fe899aa" + integrity sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ== + dependencies: + "@smithy/core" "^2.3.2" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/util-middleware" "^3.0.3" + fast-xml-parser "4.4.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-cognito-identity@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.632.0.tgz#f2db006faf4f81aed366b793845d036ac3054e09" + integrity sha512-fr+xCIqMYsUD67vwE/IpboIqHiEYMQMrpPjnvpbbvyjTKspFh0GS7Qn1LVFCd5oNeu1rzAdJei1On2HBOwIiZQ== + dependencies: + "@aws-sdk/client-cognito-identity" "3.632.0" + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.620.1": + version "3.620.1" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" + integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.622.0": + version "3.622.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz#db481fdef859849d07dd5870894f45df2debab3d" + integrity sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/util-stream" "^3.1.3" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz#55c2aa6e59fb9f19cf4e9c1e4ebf70235de32930" + integrity sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw== + dependencies: + "@aws-sdk/credential-provider-env" "3.620.1" + "@aws-sdk/credential-provider-http" "3.622.0" + "@aws-sdk/credential-provider-process" "3.620.1" + "@aws-sdk/credential-provider-sso" "3.632.0" + "@aws-sdk/credential-provider-web-identity" "3.621.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz#33a21d722b620c6a9cc43c38981cba69345e251f" + integrity sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q== + dependencies: + "@aws-sdk/credential-provider-env" "3.620.1" + "@aws-sdk/credential-provider-http" "3.622.0" + "@aws-sdk/credential-provider-ini" "3.632.0" + "@aws-sdk/credential-provider-process" "3.620.1" + "@aws-sdk/credential-provider-sso" "3.632.0" + "@aws-sdk/credential-provider-web-identity" "3.621.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.620.1": + version "3.620.1" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" + integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz#c217b853fd7d00511f3f14accdd3bf27ec4426a6" + integrity sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA== + dependencies: + "@aws-sdk/client-sso" "3.632.0" + "@aws-sdk/token-providers" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.621.0": + version "3.621.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" + integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-providers@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.632.0.tgz#5556914f3ffa6d01e312a2fc6410749bf2d50ac0" + integrity sha512-Q4x2ARdgncZKOJE/NXJHY5s8/YDRugVUR4lBEtibE764w5ezAhI1aMChzAzv4j3WMSDZ29KyxaymHHt2vJED9g== + dependencies: + "@aws-sdk/client-cognito-identity" "3.632.0" + "@aws-sdk/client-sso" "3.632.0" + "@aws-sdk/client-sts" "3.632.0" + "@aws-sdk/credential-provider-cognito-identity" "3.632.0" + "@aws-sdk/credential-provider-env" "3.620.1" + "@aws-sdk/credential-provider-http" "3.622.0" + "@aws-sdk/credential-provider-ini" "3.632.0" + "@aws-sdk/credential-provider-node" "3.632.0" + "@aws-sdk/credential-provider-process" "3.620.1" + "@aws-sdk/credential-provider-sso" "3.632.0" + "@aws-sdk/credential-provider-web-identity" "3.621.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/endpoint-cache@3.572.0": + version "3.572.0" + resolved "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz#414970b764db207eba4d93228363d61af33ea03b" + integrity sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q== + dependencies: + mnemonist "0.38.3" + tslib "^2.6.2" + +"@aws-sdk/middleware-bucket-endpoint@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" + integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-endpoint-discovery@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" + integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== + dependencies: + "@aws-sdk/endpoint-cache" "3.572.0" + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" + integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-flexible-checksums@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" + integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@aws-crypto/crc32c" "5.2.0" + "@aws-sdk/types" "3.609.0" + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" + integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" + integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" + integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" + integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-ec2@3.622.0": + version "3.622.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-ec2/-/middleware-sdk-ec2-3.622.0.tgz#dc25d26d404344ec0d94e6d897baf849ec9f0718" + integrity sha512-rVShV+eB1vovLuvlzUEFuxZB4yxSMFzyP+VNIoFxtSZh0LWh7+7bNLwp1I9Vq3SxHLMVYQevjm7nkiPM0DG+RQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-format-url" "3.609.0" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-rds@3.620.0": + version "3.620.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-rds/-/middleware-sdk-rds-3.620.0.tgz#6157eab60a7f015dac99f7bf8626dc15bb6f4185" + integrity sha512-pokuq3rMJfn8ZNUIhAKn0c1nQtvClPLzh5h1fOXAeRXmNjp+YPXQ4CIsGRcqDNO8lkUyyfV42WnPCdUZmR9zAA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-format-url" "3.609.0" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-route53@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.609.0.tgz#285fcd97c3d479b4f5d09a66bf3cde04465dfd8b" + integrity sha512-lw0WdzAJS8puQeJNeyOeEfRtG2C91yFBj8IXWmwm7r+QqnZtDork0uiZYFt1Br24dOxZiFefxLCehjSoyr8fVQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.629.0": + version "3.629.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.629.0.tgz#10ad7b8af945f915d31f00cec0198248be95291c" + integrity sha512-FRXLcnPWXBoq/T9mnGnrpqhrSKNSm22rqJ0L7P14KESmbGuwhF/7ELYYxXIpgnIpb/CIUVmIU5EE8lsW1VTe8A== + dependencies: + "@aws-sdk/core" "3.629.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/core" "^2.3.2" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-stream" "^3.1.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" + integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz#274bbf2789268f30c1ff2ef20c395c9dc4f91c96" + integrity sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.632.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.614.0": + version "3.614.0" + resolved "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" + integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@aws-sdk/s3-request-presigner@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.632.0.tgz#ee05b0844fafc6c5f8afb17e3d543a2c8c0c73ff" + integrity sha512-gvN37+14lOE9bX8hz2ztJa8W37FgkNQiMTH72Mzmkaw8qeILUkB74nzq9JdRKJxB9QIWeWs7PeUP+8zUapuMrQ== + dependencies: + "@aws-sdk/signature-v4-multi-region" "3.629.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-format-url" "3.609.0" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.12" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.629.0": + version "3.629.0" + resolved "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.629.0.tgz#ca75443f3324fd398d228c3cba0f4275e7bb4a3a" + integrity sha512-GPX6dnmuLGDFp7CsGqGCzleEoNyr9ekgOzSBtcL5nKX++NruxO7f1QzJAbcYvz0gdKvz958UO0EKsGM6hnkTSg== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.629.0" + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.614.0": + version "3.614.0" + resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" + integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/types@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" + integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/types@^3.222.0": + version "3.804.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz#b70a734fa721450cf8a513cec0c276001a5d154f" + integrity sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg== + dependencies: + "@smithy/types" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.568.0": + version "3.568.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" + integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.632.0": + version "3.632.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz#f8716bdc75fc322babc6a3faf943ee1d0e462124" + integrity sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + "@smithy/util-endpoints" "^2.0.5" + tslib "^2.6.2" + +"@aws-sdk/util-format-url@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz#f53907193bb636b52b61c81bbe6d7bd5ddc76c68" + integrity sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/querystring-builder" "^3.0.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.804.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz#a2ee8dc5d9c98276986e8e1ba03c0c84d9afb0f5" + integrity sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" + integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.614.0": + version "3.614.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" + integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@3.609.0": + version "3.609.0" + resolved "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" + integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" + integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.23.9", "@babel/core@^7.7.5": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6" + integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helpers" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.27.1", "@babel/generator@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" + integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== + dependencies: + "@babel/parser" "^7.27.1" + "@babel/types" "^7.27.1" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" + integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-compilation-targets@^7.27.1": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" + integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" + integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" + integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/plugin-proposal-class-properties@^7.13.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.21.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-flow@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz#6c83cf0d7d635b716827284b7ecd5aead9237662" + integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-flow-strip-types@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz#5def3e1e7730f008d683144fb79b724f92c5cdf9" + integrity sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-flow" "^7.27.1" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz#d3bb65598bece03f773111e88cc4e8e5070f1140" + integrity sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + +"@babel/preset-flow@^7.13.13": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz#3050ed7c619e8c4bfd0e0eeee87a2fa86a4bb1c6" + integrity sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-transform-flow-strip-types" "^7.27.1" + +"@babel/preset-typescript@^7.13.0": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" + integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.27.1" + +"@babel/register@^7.13.16": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.27.1.tgz#ea4d701649d788d7cb8a064b7540fd21083147f1" + integrity sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/template@^7.27.1", "@babel/template@^7.3.3": + version "7.27.2" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" + integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" + integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@balena/dockerignore@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" + integrity sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q== + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cdklabs/eslint-plugin@^1.3.2": + version "1.3.2" + resolved "https://registry.npmjs.org/@cdklabs/eslint-plugin/-/eslint-plugin-1.3.2.tgz#9a37485e0c94cd13a9becdd69791d4ff1dc1c515" + integrity sha512-PWh8MOKgPOYRGRdd/eiPS93F4B/pahhHsNAtLderZ2XtaxfipE55AfSeiXRde2B4OUIYoIRh02b+On+3HZurTQ== + dependencies: + fs-extra "^11.3.0" + +"@cdklabs/tskb@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@cdklabs/tskb/-/tskb-0.0.3.tgz#4b79846d9381eb1252ba85d5d20b7cd7d99b6ecb" + integrity sha512-JR+MuD4awAXvutu7HArephXfZm09GPTaSAQUqNcJB5+ZENRm4kV+L6vJL6Tn1xHjCcHksO+HAqj3gYtm5K94vA== + +"@cdklabs/typewriter@^0.0.5": + version "0.0.5" + resolved "https://registry.npmjs.org/@cdklabs/typewriter/-/typewriter-0.0.5.tgz#edbec5c2e6dd45c803154d7e521ca38746a08d89" + integrity sha512-gLp7s9bhHOIN9SN6jhdVi3cLp0YisMkvn4Ct3KeqySR7H1Q5nytKvV0NWUC1FrdNsPoKvulUFIGtqbwCFZt9NQ== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@emnapi/core@^1.1.0": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + dependencies: + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.1.0": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + +"@es-joy/jsdoccomment@~0.49.0": + version "0.49.0" + resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz#e5ec1eda837c802eca67d3b29e577197f14ba1db" + integrity sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q== + dependencies: + comment-parser "1.4.1" + esquery "^1.6.0" + jsdoc-type-pratt-parser "~4.1.0" + +"@esbuild/aix-ppc64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz#830d6476cbbca0c005136af07303646b419f1162" + integrity sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q== + +"@esbuild/android-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz#d11d4fc299224e729e2190cacadbcc00e7a9fd67" + integrity sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A== + +"@esbuild/android-arm@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz#5660bd25080553dd2a28438f2a401a29959bd9b1" + integrity sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ== + +"@esbuild/android-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz#18ddde705bf984e8cd9efec54e199ac18bc7bee1" + integrity sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ== + +"@esbuild/darwin-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz#b0b7fb55db8fc6f5de5a0207ae986eb9c4766e67" + integrity sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g== + +"@esbuild/darwin-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz#e6813fdeba0bba356cb350a4b80543fbe66bf26f" + integrity sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A== + +"@esbuild/freebsd-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz#dc11a73d3ccdc308567b908b43c6698e850759be" + integrity sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ== + +"@esbuild/freebsd-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz#91da08db8bd1bff5f31924c57a81dab26e93a143" + integrity sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ== + +"@esbuild/linux-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz#efc15e45c945a082708f9a9f73bfa8d4db49728a" + integrity sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ== + +"@esbuild/linux-arm@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz#9b93c3e54ac49a2ede6f906e705d5d906f6db9e8" + integrity sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ== + +"@esbuild/linux-ia32@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz#be8ef2c3e1d99fca2d25c416b297d00360623596" + integrity sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ== + +"@esbuild/linux-loong64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz#b0840a2707c3fc02eec288d3f9defa3827cd7a87" + integrity sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA== + +"@esbuild/linux-mips64el@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz#2a198e5a458c9f0e75881a4e63d26ba0cf9df39f" + integrity sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg== + +"@esbuild/linux-ppc64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz#64f4ae0b923d7dd72fb860b9b22edb42007cf8f5" + integrity sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag== + +"@esbuild/linux-riscv64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz#fb2844b11fdddd39e29d291c7cf80f99b0d5158d" + integrity sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA== + +"@esbuild/linux-s390x@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz#1466876e0aa3560c7673e63fdebc8278707bc750" + integrity sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g== + +"@esbuild/linux-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz#c10fde899455db7cba5f11b3bccfa0e41bf4d0cd" + integrity sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA== + +"@esbuild/netbsd-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz#02e483fbcbe3f18f0b02612a941b77be76c111a4" + integrity sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ== + +"@esbuild/netbsd-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz#ec401fb0b1ed0ac01d978564c5fc8634ed1dc2ed" + integrity sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw== + +"@esbuild/openbsd-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz#f272c2f41cfea1d91b93d487a51b5c5ca7a8c8c4" + integrity sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A== + +"@esbuild/openbsd-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz#2e25950bc10fa9db1e5c868e3d50c44f7c150fd7" + integrity sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw== + +"@esbuild/sunos-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz#cd596fa65a67b3b7adc5ecd52d9f5733832e1abd" + integrity sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q== + +"@esbuild/win32-arm64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz#b4dbcb57b21eeaf8331e424c3999b89d8951dc88" + integrity sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ== + +"@esbuild/win32-ia32@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz#410842e5d66d4ece1757634e297a87635eb82f7a" + integrity sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg== + +"@esbuild/win32-x64@0.25.4": + version "0.25.4" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz#0b17ec8a70b2385827d52314c1253160a0b9bacc" + integrity sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": + version "4.7.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@extra-number/significant-digits@^1.1.1": + version "1.3.9" + resolved "https://registry.npmjs.org/@extra-number/significant-digits/-/significant-digits-1.3.9.tgz#06f3acc4aa688af3ed76bf5f30bca6de9d60883f" + integrity sha512-E5PY/bCwrNqEHh4QS6AQBinLZ+sxM1lT8tsSVYk8VwhWIPp6fCU/BMRVq0V8iJ8LwS3FHmaA4vUzb78s4BIIyA== + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsii/check-node@1.106.0": + version "1.106.0" + resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.106.0.tgz#5deb20b0bbe0a506c4bd9edf60b17b0a93f83834" + integrity sha512-/T/TUsbHdEbZRFR4Rem9+UXVvgMYncEkrIeC52oIHJ8BDSgqlDsIARio/Eu5DOftF4avSLV/sshR6n19mpK1oA== + dependencies: + chalk "^4.1.2" + semver "^7.6.3" + +"@jsii/check-node@1.107.0": + version "1.107.0" + resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.107.0.tgz#359099573cf47e3d2f7be19172fbe49e3e2d11a7" + integrity sha512-ud21048xxEVbbzjFlE7GQSuypW7/8P6Dyu+jjTwp6wGFbnbpxZiupIMdp6eSVSqo9M3rC14SyjNq2liXoSYBZg== + dependencies: + chalk "^4.1.2" + semver "^7.6.3" + +"@jsii/check-node@1.111.0": + version "1.111.0" + resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.111.0.tgz#dfd6dce4f9d7a97924e51f152a5e5058039d7b4d" + integrity sha512-R3iLYH1gCixDFVhrltoeKuZvcLLx03fCDlQxl3sR0T5ko1fAWBn5zNaP6O6/d0vpXB3QevGcMJ78Xgll2gHvIA== + dependencies: + chalk "^4.1.2" + semver "^7.7.1" + +"@jsii/check-node@1.112.0": + version "1.112.0" + resolved "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.112.0.tgz#da8b4282206636aa09813da577f4c77a145a9f85" + integrity sha512-ySf6hMcWvWrMtMLKEiBN6QN46oWqKfJtOHCdy13iQXTI38SuI9Lp2PaYMLcsN10fTOvLjhbYm3jAu48xwrsKAQ== + dependencies: + chalk "^4.1.2" + semver "^7.7.1" + +"@jsii/spec@1.112.0", "@jsii/spec@^1.106.0", "@jsii/spec@^1.107.0", "@jsii/spec@^1.111.0", "@jsii/spec@^1.112.0": + version "1.112.0" + resolved "https://registry.npmjs.org/@jsii/spec/-/spec-1.112.0.tgz#9a70db6bbe3c78ede1095686a7cacda8b2d91f26" + integrity sha512-O6peIhjjGkIQpbKUMHTNJHMuyqd6EXqWlxnBKpoBoUwDz18HXxt/SwUvnovYCELjgxOUMCdO5Y4/YjeABvatUw== + dependencies: + ajv "^8.17.1" + +"@lerna/create@8.2.2": + version "8.2.2" + resolved "https://registry.npmjs.org/@lerna/create/-/create-8.2.2.tgz#4c62f57eb74d335f908132dcc01828e53e6515bd" + integrity sha512-1yn1MvWn2Yz0SFgTTQnef2m1YedF7KwqLLVIOrGkgQrkVHzsveAIk1A1RcRa2yyUh+siKI1YcJ7lUZIEt+qQ3Q== + dependencies: + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "20.1.2" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + execa "5.0.0" + fs-extra "^11.2.0" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + js-yaml "4.1.0" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-reduce "^2.1.0" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.4" + set-blocking "^2.0.0" + signal-exit "3.0.7" + slash "^3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + strong-log-transformer "2.1.0" + tar "6.2.1" + temp-dir "1.0.0" + upath "2.0.1" + uuid "^10.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" + +"@lerna/package@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" + integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== + dependencies: + load-json-file "^6.2.0" + npm-package-arg "^8.1.0" + write-pkg "^4.0.0" + +"@lerna/project@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" + integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== + dependencies: + "@lerna/package" "4.0.0" + "@lerna/validation-error" "4.0.0" + cosmiconfig "^7.0.0" + dedent "^0.7.0" + dot-prop "^6.0.1" + glob-parent "^5.1.1" + globby "^11.0.2" + load-json-file "^6.2.0" + npmlog "^4.1.2" + p-map "^4.0.0" + resolve-from "^5.0.0" + write-json-file "^4.3.0" + +"@lerna/validation-error@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" + integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== + dependencies: + npmlog "^4.1.2" + +"@napi-rs/wasm-runtime@0.2.4": + version "0.2.4" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz#d27788176f250d86e498081e3c5ff48a17606918" + integrity sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ== + dependencies: + "@emnapi/core" "^1.1.0" + "@emnapi/runtime" "^1.1.0" + "@tybys/wasm-util" "^0.9.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@7.5.4": + version "7.5.4" + resolved "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" + integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.1" + "@npmcli/installed-package-contents" "^2.1.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^7.1.1" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.1.0" + "@npmcli/query" "^3.1.0" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + bin-links "^4.0.4" + cacache "^18.0.3" + common-ancestor-path "^1.0.1" + hosted-git-info "^7.0.2" + json-parse-even-better-errors "^3.0.2" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^7.2.1" + npm-install-checks "^6.2.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-registry-fetch "^17.0.1" + pacote "^18.0.6" + parse-conflict-json "^3.0.0" + proc-log "^4.2.0" + proggy "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.6" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^4.0.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" + integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + lru-cache "^7.4.4" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^3.0.0" + +"@npmcli/git@^5.0.0": + version "5.0.8" + resolved "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" + integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + ini "^4.1.3" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^4.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + +"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^7.1.1": + version "7.1.1" + resolved "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" + integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== + dependencies: + cacache "^18.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^18.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz#a1429d3111c10044c7efbfb0fce9f2c501f4cfad" + integrity sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.2.1" + resolved "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" + integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== + dependencies: + which "^3.0.0" + +"@npmcli/promise-spawn@^7.0.0": + version "7.0.2" + resolved "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" + integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== + dependencies: + which "^4.0.0" + +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/redact@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" + integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== + +"@npmcli/run-script@8.1.0", "@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": + version "8.1.0" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" + integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + proc-log "^4.0.0" + which "^4.0.0" + +"@npmcli/run-script@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" + integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + +"@nx/devkit@20.8.1", "@nx/devkit@>=17.1.2 < 21": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-20.8.1.tgz#774f13d5af78f27306bb74391056f0fe6dda3eae" + integrity sha512-N3nwIg/7RIZeB76iuVo29q+l9WyTtvuBSgDFM2msiIK6Q928ilzoeNPZ/p7w/TE3Gqs5XVhq9ExMvDAOTxdmXA== + dependencies: + ejs "^3.1.7" + enquirer "~2.3.6" + ignore "^5.0.4" + minimatch "9.0.3" + semver "^7.5.3" + tmp "~0.2.1" + tslib "^2.3.0" + yargs-parser "21.1.1" + +"@nx/nx-darwin-arm64@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.8.1.tgz#ba095d216cef43f2e0e8fb2bced46cd020393a50" + integrity sha512-Gat4Io66cV70Oa1CjrMJPsEx5ICpAGayv9hejOtBUEDb6XjR12L2e4wV+4EHliF0UbEcuZAr8/lTROEPk0RGWQ== + +"@nx/nx-darwin-x64@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.8.1.tgz#45da64b919e2468190a9a0a06e12c1d38e247603" + integrity sha512-TB9mZk7neGFKgBr2wSBgY6c4kFF9vvChNSp3TrEeXR3FppFcYG5eK4AaKfzWCpYb0wMtseAm7NMX1Lu74utClQ== + +"@nx/nx-freebsd-x64@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.8.1.tgz#c503b5eb3c775b870442c4a32e6ab776b588897a" + integrity sha512-7UQu0/Afna5Af2GagEQ6rbKfUh75NfUn+g66wsoQoUGBvDW0U7B8P3Ph5Bk4Urub0BSfMVcNg2X7CgfypLFN/g== + +"@nx/nx-linux-arm-gnueabihf@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.8.1.tgz#42ba75149d235a75444a4e8554040874c10fcc5d" + integrity sha512-Tjh8JkTP+x1jSrzx+ofx1pKpkhIbXd7bi0bPdpYt6NI1lZz2HB/dv8vtdzP80jXEDztHf0AeGnEJVgJKsgI6yg== + +"@nx/nx-linux-arm64-gnu@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.8.1.tgz#c03a998a298dcf99d8a89cfd7b8b1c1c03bcc517" + integrity sha512-2+qPIwav2vrytH6pe7fukBe8+yN5JGbEDCnDO8wKQsHeeZMLAQJiZ7EJH/+vynRkI7oWf87mihIKNQME19+w6A== + +"@nx/nx-linux-arm64-musl@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.8.1.tgz#5df32db201a09ce9b8f9abc2827cb2708452d66d" + integrity sha512-DsKc+DiMsuHqpBWchUUUg6zv4OaexRqpFXys6auZlrpFpn80kSqLQ3S4zZ5AUu+26wxZqEVJs+uxHGwFbhEssQ== + +"@nx/nx-linux-x64-gnu@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.8.1.tgz#1aaac2d4fe567d2b8d542ded2e1e514fc5ea0f94" + integrity sha512-Kzru44beVKAmSG84ShuMIIfyu2Uu5r8gsHdtiQPBIOGkZa0Z/e6YtUxcN3w1UZ7yvvzoQ4pQLvqU6UZRSWZtEg== + +"@nx/nx-linux-x64-musl@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.8.1.tgz#5b68cc655048f8c7fa365d6eef7c0b3add96db1d" + integrity sha512-cSVVb7DVMhrxCaj/n55okBZS6lZoP5a5vynOBGIV4z3/OJLev+xI9A+3imn/aXnBl8iS69HogYyrW0YTXv4Xaw== + +"@nx/nx-win32-arm64-msvc@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.8.1.tgz#4644f1f1cbce83c0c23efa1c1d624d70f0fc1474" + integrity sha512-gte5HcvI24CN6b9I6IYTXh/A0CtRfnlAFaJomPpfT8Wcq637aOZzS0arAEZVoU8QZty1350hj6sfu+wSIjoP7A== + +"@nx/nx-win32-x64-msvc@20.8.1": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.8.1.tgz#e96da173984a5b28093b4b1b4c74568223f54e48" + integrity sha512-6c2fVEPdPwJdnRbckBatRDF/g6JAp6p3Mfl90DpuaEF2DZC5pmCXKOsXE0aSIZ+gODom2JIchM++2KmDZPJUoA== + +"@nx/workspace@^20": + version "20.8.1" + resolved "https://registry.npmjs.org/@nx/workspace/-/workspace-20.8.1.tgz#f14190e3588ce57d3320ceca40600b19d89382f1" + integrity sha512-Y6HlERFJbLHn1J9JHMsPDSRK5iBSH4hbw9TkqwkINeHBDX8bIilnO3tK6VVMIPTzTHJldxI+zQ1IrzVisZpJsA== + dependencies: + "@nx/devkit" "20.8.1" + "@zkochan/js-yaml" "0.0.7" + chalk "^4.1.0" + enquirer "~2.3.6" + nx "20.8.1" + picomatch "4.0.2" + tslib "^2.3.0" + yargs-parser "21.1.1" + +"@octokit/auth-token@^2.4.4": + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + dependencies: + "@octokit/types" "^6.0.3" + +"@octokit/auth-token@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" + integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== + +"@octokit/core@^3.5.1", "@octokit/core@^3.6.0": + version "3.6.0" + resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" + integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== + dependencies: + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.6.3" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.0.3" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/core@^5.0.2": + version "5.2.1" + resolved "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz#58c21a5f689ee81e0b883b5aa77573a7ff1b4ea1" + integrity sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ== + dependencies: + "@octokit/auth-token" "^4.0.0" + "@octokit/graphql" "^7.1.0" + "@octokit/request" "^8.4.1" + "@octokit/request-error" "^5.1.1" + "@octokit/types" "^13.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.12" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + dependencies: + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^9.0.6": + version "9.0.6" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz#114d912108fe692d8b139cfe7fc0846dfd11b6c0" + integrity sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw== + dependencies: + "@octokit/types" "^13.1.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^4.5.8": + version "4.8.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + dependencies: + "@octokit/request" "^5.6.0" + "@octokit/types" "^6.0.3" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^7.1.0": + version "7.1.1" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz#79d9f3d0c96a8fd13d64186fe5c33606d48b79cc" + integrity sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g== + dependencies: + "@octokit/request" "^8.4.1" + "@octokit/types" "^13.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + +"@octokit/openapi-types@^24.2.0": + version "24.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz#3d55c32eac0d38da1a7083a9c3b0cca77924f7d3" + integrity sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg== + +"@octokit/plugin-enterprise-rest@6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + +"@octokit/plugin-paginate-rest@11.4.4-cjs.2": + version "11.4.4-cjs.2" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz#979a10d577bce7a393e8e65953887e42b0a05000" + integrity sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw== + dependencies: + "@octokit/types" "^13.7.0" + +"@octokit/plugin-paginate-rest@^2.16.8", "@octokit/plugin-paginate-rest@^2.17.0": + version "2.21.3" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" + integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== + dependencies: + "@octokit/types" "^6.40.0" + +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-request-log@^4.0.0": + version "4.0.1" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz#98a3ca96e0b107380664708111864cb96551f958" + integrity sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA== + +"@octokit/plugin-rest-endpoint-methods@13.3.2-cjs.1": + version "13.3.2-cjs.1" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz#d0a142ff41d8f7892b6ccef45979049f51ecaa8d" + integrity sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ== + dependencies: + "@octokit/types" "^13.8.0" + +"@octokit/plugin-rest-endpoint-methods@^5.12.0", "@octokit/plugin-rest-endpoint-methods@^5.13.0": + version "5.16.2" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" + integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== + dependencies: + "@octokit/types" "^6.39.0" + deprecation "^2.3.1" + +"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + dependencies: + "@octokit/types" "^6.0.3" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request-error@^5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz#b9218f9c1166e68bb4d0c89b638edc62c9334805" + integrity sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g== + dependencies: + "@octokit/types" "^13.1.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": + version "5.6.3" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.1.0" + "@octokit/types" "^6.16.1" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/request@^8.4.1": + version "8.4.1" + resolved "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz#715a015ccf993087977ea4365c44791fc4572486" + integrity sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw== + dependencies: + "@octokit/endpoint" "^9.0.6" + "@octokit/request-error" "^5.1.1" + "@octokit/types" "^13.1.0" + universal-user-agent "^6.0.0" + +"@octokit/rest@20.1.2": + version "20.1.2" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz#1d74d0c72ade0d64f7c5416448d5c885f5e3ccc4" + integrity sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA== + dependencies: + "@octokit/core" "^5.0.2" + "@octokit/plugin-paginate-rest" "11.4.4-cjs.2" + "@octokit/plugin-request-log" "^4.0.0" + "@octokit/plugin-rest-endpoint-methods" "13.3.2-cjs.1" + +"@octokit/rest@^18", "@octokit/rest@^18.12.0": + version "18.12.0" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== + dependencies: + "@octokit/core" "^3.5.1" + "@octokit/plugin-paginate-rest" "^2.16.8" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" + +"@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.7.0", "@octokit/types@^13.8.0": + version "13.10.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz#3e7c6b19c0236c270656e4ea666148c2b51fd1a3" + integrity sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA== + dependencies: + "@octokit/openapi-types" "^24.2.0" + +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": + version "6.41.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + +"@octokit/webhooks-definitions@^3.68.1": + version "3.68.1" + resolved "https://registry.npmjs.org/@octokit/webhooks-definitions/-/webhooks-definitions-3.68.1.tgz#8e7ff2f10303b4602587e767f5baa3a70a74b4cf" + integrity sha512-wa8koFift24mUsMarWP/wfl9kIwqL5TK9smsCRIyJYfs9iYQEoJsQjcmhyKCmevPA8Ja/K1ZTE4W8ABA0yMM8g== + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz#2ab05e09c1af0cdf2fcf5035bea1484e222f7983" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.3.1" + resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz#bb375a571a0bd63ab0a23bece33033c683e9b6b0" + integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@sigstore/bundle@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" + integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.1" + resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.3" + resolved "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz#7dd46d68b76c322873a2ef7581ed955af6f4dcde" + integrity sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ== + +"@sigstore/sign@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" + integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + make-fetch-happen "^11.0.1" + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" + promise-retry "^2.0.1" + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + tuf-js "^1.1.7" + +"@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" + +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": + version "1.8.6" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@11.2.2": + version "11.2.2" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.1": + version "13.0.5" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/samsam@^5.3.1": + version "5.3.1" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" + integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== + dependencies: + "@sinonjs/commons" "^1.6.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/samsam@^8.0.0": + version "8.0.2" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" + integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== + dependencies: + "@sinonjs/commons" "^3.0.1" + lodash.get "^4.4.2" + type-detect "^4.1.0" + +"@sinonjs/text-encoding@^0.7.1", "@sinonjs/text-encoding@^0.7.3": + version "0.7.3" + resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" + integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== + +"@smithy/abort-controller@^3.1.9": + version "3.1.9" + resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz#47d323f754136a489e972d7fd465d534d72fcbff" + integrity sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29" + integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ== + dependencies: + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d" + integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.13", "@smithy/config-resolver@^3.0.5": + version "3.0.13" + resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.13.tgz#653643a77a33d0f5907a5e7582353886b07ba752" + integrity sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg== + dependencies: + "@smithy/node-config-provider" "^3.1.12" + "@smithy/types" "^3.7.2" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.11" + tslib "^2.6.2" + +"@smithy/core@^2.3.2", "@smithy/core@^2.5.7": + version "2.5.7" + resolved "https://registry.npmjs.org/@smithy/core/-/core-2.5.7.tgz#b545649071905f064cb0407102f3b9159246f8d9" + integrity sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg== + dependencies: + "@smithy/middleware-serde" "^3.0.11" + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.11" + "@smithy/util-stream" "^3.3.4" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.2.0", "@smithy/credential-provider-imds@^3.2.8": + version "3.2.8" + resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz#27ed2747074c86a7d627a98e56f324a65cba88de" + integrity sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw== + dependencies: + "@smithy/node-config-provider" "^3.1.12" + "@smithy/property-provider" "^3.1.11" + "@smithy/types" "^3.7.2" + "@smithy/url-parser" "^3.0.11" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.1.10": + version "3.1.10" + resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz#0c1a3457e7a23b71cd71525ceb668f8569a84dad" + integrity sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^3.7.2" + "@smithy/util-hex-encoding" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^3.0.6": + version "3.0.14" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz#0c3584c7cde2e210aacdfbbd2b57c1d7e2ca3b95" + integrity sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.13" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz#5edceba836debea165ea93145231036f6286d67c" + integrity sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^3.0.5": + version "3.0.13" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz#5aebd7b553becee277e411a2b69f6af8c9d7b3a6" + integrity sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.13" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^3.0.13": + version "3.0.13" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz#609c922ea14a0a3eed23a28ac110344c935704eb" + integrity sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw== + dependencies: + "@smithy/eventstream-codec" "^3.1.10" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^3.2.4": + version "3.2.9" + resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== + dependencies: + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^4.1.3": + version "4.1.3" + resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz#fc590dea2470d32559ae298306f1277729d24aa9" + integrity sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA== + dependencies: + "@smithy/protocol-http" "^4.1.8" + "@smithy/querystring-builder" "^3.0.11" + "@smithy/types" "^3.7.2" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^3.1.2": + version "3.1.10" + resolved "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz#985e308189c2687a15004152b97506882ffb2b13" + integrity sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA== + dependencies: + "@smithy/chunked-blob-reader" "^4.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.1" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.11.tgz#99e09ead3fc99c8cd7ca0f254ea0e35714f2a0d3" + integrity sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA== + dependencies: + "@smithy/types" "^3.7.2" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^3.1.2": + version "3.1.10" + resolved "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz#94716b4556f4ccf2807e605f47bb5b018ed7dfb0" + integrity sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q== + dependencies: + "@smithy/types" "^3.7.2" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz#8144d7b0af9d34ab5f672e1f674f97f8740bb9ae" + integrity sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a" + integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.11.tgz#27e4dab616348ff94aed24dc75e4017c582df40f" + integrity sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ== + dependencies: + "@smithy/types" "^3.7.2" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-compression@^3.0.7": + version "3.1.7" + resolved "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.1.7.tgz#db8f3c8feb1fbbf58d10dd1f0881fd05b0addbc4" + integrity sha512-MCv7lz4PRArQ8vjhg6GocI/ARLP/EinzMs7RfVvgXYCEnpg8LULd6fDC3FbIxPpm2qTX7GMttcD98yFEZy7yXg== + dependencies: + "@smithy/core" "^2.5.7" + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/node-config-provider" "^3.1.12" + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.11" + "@smithy/util-utf8" "^3.0.0" + fflate "0.8.1" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^3.0.5": + version "3.0.13" + resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz#6e08fe52739ac8fb3996088e0f8837e4b2ea187f" + integrity sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw== + dependencies: + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^3.1.0", "@smithy/middleware-endpoint@^3.2.8": + version "3.2.8" + resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz#6ca5de80543ba0f0d40e15dc3f9d0f14d192e06e" + integrity sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ== + dependencies: + "@smithy/core" "^2.5.7" + "@smithy/middleware-serde" "^3.0.11" + "@smithy/node-config-provider" "^3.1.12" + "@smithy/shared-ini-file-loader" "^3.1.12" + "@smithy/types" "^3.7.2" + "@smithy/url-parser" "^3.0.11" + "@smithy/util-middleware" "^3.0.11" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.14": + version "3.0.34" + resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.34.tgz#136c89fc22d70819fdefc51b0d24952cf98883f1" + integrity sha512-yVRr/AAtPZlUvwEkrq7S3x7Z8/xCd97m2hLDaqdz6ucP2RKHsBjEqaUA2ebNv2SsZoPEi+ZD0dZbOB1u37tGCA== + dependencies: + "@smithy/node-config-provider" "^3.1.12" + "@smithy/protocol-http" "^4.1.8" + "@smithy/service-error-classification" "^3.0.11" + "@smithy/smithy-client" "^3.7.0" + "@smithy/types" "^3.7.2" + "@smithy/util-middleware" "^3.0.11" + "@smithy/util-retry" "^3.0.11" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^3.0.11", "@smithy/middleware-serde@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz#c7d54e0add4f83e05c6878a011fc664e21022f12" + integrity sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/middleware-stack@^3.0.11", "@smithy/middleware-stack@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz#453af2096924e4064d9da4e053cfdf65d9a36acc" + integrity sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.1.12", "@smithy/node-config-provider@^3.1.4": + version "3.1.12" + resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz#1b1d674fc83f943dc7b3017e37f16f374e878a6c" + integrity sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ== + dependencies: + "@smithy/property-provider" "^3.1.11" + "@smithy/shared-ini-file-loader" "^3.1.12" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/node-http-handler@3.3.3", "@smithy/node-http-handler@^3.1.4", "@smithy/node-http-handler@^3.3.3": + version "3.3.3" + resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz#94dbb3f15342b656ceba2b26e14aa741cace8919" + integrity sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ== + dependencies: + "@smithy/abort-controller" "^3.1.9" + "@smithy/protocol-http" "^4.1.8" + "@smithy/querystring-builder" "^3.0.11" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/property-provider@^3.1.11", "@smithy/property-provider@^3.1.3": + version "3.1.11" + resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz#161cf1c2a2ada361e417382c57f5ba6fbca8acad" + integrity sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.1.0", "@smithy/protocol-http@^4.1.4", "@smithy/protocol-http@^4.1.8": + version "4.1.8" + resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz#0461758671335f65e8ff3fc0885ab7ed253819c9" + integrity sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/querystring-builder@^3.0.11", "@smithy/querystring-builder@^3.0.3", "@smithy/querystring-builder@^3.0.7": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz#2ed04adbe725671824c5613d0d6f9376d791a909" + integrity sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg== + dependencies: + "@smithy/types" "^3.7.2" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.11": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz#9d3177ea19ce8462f18d9712b395239e1ca1f969" + integrity sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/service-error-classification@^3.0.11": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz#d3d7fc0aacd2e60d022507367e55c7939e5bcb8a" + integrity sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog== + dependencies: + "@smithy/types" "^3.7.2" + +"@smithy/shared-ini-file-loader@^3.1.12", "@smithy/shared-ini-file-loader@^3.1.4": + version "3.1.12" + resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz#d98b1b663eb18935ce2cbc79024631d34f54042a" + integrity sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/signature-v4@^4.1.0": + version "4.2.4" + resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.4.tgz#3501d3d09fd82768867bfc00a7be4bad62f62f4d" + integrity sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.11" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^3.1.12", "@smithy/smithy-client@^3.7.0": + version "3.7.0" + resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.7.0.tgz#8cfaa7b68b7af15e588b96aa14e5dce393f85839" + integrity sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA== + dependencies: + "@smithy/core" "^2.5.7" + "@smithy/middleware-endpoint" "^3.2.8" + "@smithy/middleware-stack" "^3.0.11" + "@smithy/protocol-http" "^4.1.8" + "@smithy/types" "^3.7.2" + "@smithy/util-stream" "^3.3.4" + tslib "^2.6.2" + +"@smithy/types@3.5.0", "@smithy/types@3.7.2", "@smithy/types@^3.3.0", "@smithy/types@^3.5.0", "@smithy/types@^3.7.2", "@smithy/types@^4.2.0": + version "3.5.0" + resolved "https://registry.npmjs.org/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.11", "@smithy/url-parser@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz#e5f5ffabfb6230159167cf4cc970705fca6b8b2d" + integrity sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw== + dependencies: + "@smithy/querystring-parser" "^3.0.11" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-base64@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" + integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded" + integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d" + integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3" + integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe" + integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^3.0.14": + version "3.0.34" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.34.tgz#885312529599cf24b09335cb20439c838e452f9f" + integrity sha512-FumjjF631lR521cX+svMLBj3SwSDh9VdtyynTYDAiBDEf8YPP5xORNXKQ9j0105o5+ARAGnOOP/RqSl40uXddA== + dependencies: + "@smithy/property-provider" "^3.1.11" + "@smithy/smithy-client" "^3.7.0" + "@smithy/types" "^3.7.2" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^3.0.14": + version "3.0.34" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.34.tgz#5eb0d97231a34e137980abfb08ea5e3a8f2156f7" + integrity sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw== + dependencies: + "@smithy/config-resolver" "^3.0.13" + "@smithy/credential-provider-imds" "^3.2.8" + "@smithy/node-config-provider" "^3.1.12" + "@smithy/property-provider" "^3.1.11" + "@smithy/smithy-client" "^3.7.0" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-endpoints@^2.0.5": + version "2.1.7" + resolved "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz#a088ebfab946a7219dd4763bfced82709894b82d" + integrity sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw== + dependencies: + "@smithy/node-config-provider" "^3.1.12" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" + integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.11", "@smithy/util-middleware@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz#2ab5c17266b42c225e62befcffb048afa682b5bf" + integrity sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow== + dependencies: + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-retry@^3.0.11", "@smithy/util-retry@^3.0.3": + version "3.0.11" + resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.11.tgz#d267e5ccb290165cee69732547fea17b695a7425" + integrity sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ== + dependencies: + "@smithy/service-error-classification" "^3.0.11" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@smithy/util-stream@3.3.4", "@smithy/util-stream@^3.1.3", "@smithy/util-stream@^3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz#c506ac41310ebcceb0c3f0ba20755e4fe0a90b8d" + integrity sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ== + dependencies: + "@smithy/fetch-http-handler" "^4.1.3" + "@smithy/node-http-handler" "^3.3.3" + "@smithy/types" "^3.7.2" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" + integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a" + integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^3.1.2": + version "3.2.0" + resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.2.0.tgz#1e52f870e77d2e5572025f7606053e6ff00df93d" + integrity sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg== + dependencies: + "@smithy/abort-controller" "^3.1.9" + "@smithy/types" "^3.7.2" + tslib "^2.6.2" + +"@stylistic/eslint-plugin@^2": + version "2.13.0" + resolved "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz#53bf175dac8c1ec055b370a6ff77d491cae9a70d" + integrity sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ== + dependencies: + "@typescript-eslint/utils" "^8.13.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" + estraverse "^5.3.0" + picomatch "^4.0.2" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + +"@ts-morph/common@~0.25.0": + version "0.25.0" + resolved "https://registry.npmjs.org/@ts-morph/common/-/common-0.25.0.tgz#b76cbd517118acc8eadaf12b2fc2d47f42923452" + integrity sha512-kMnZz+vGGHi4GoHnLmMhGNjm44kGtKUXGnOvrKmMwAuvNjM/PgKVGfUnL7IDvK7Jb2QQ82jq3Zmp04Gy+r3Dkg== + dependencies: + minimatch "^9.0.4" + path-browserify "^1.0.1" + tinyglobby "^0.2.9" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" + integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^9.0.0" + +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" + +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + +"@types/aws-lambda@^8.10.149": + version "8.10.149" + resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" + integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@7.18.2", "@types/babel__traverse@^7.0.6": + version "7.18.2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309" + integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/changelog-parser@^2.8.4": + version "2.8.4" + resolved "https://registry.npmjs.org/@types/changelog-parser/-/changelog-parser-2.8.4.tgz#45d70417e742ac3bc6bef3786aa453e1f1d63ecc" + integrity sha512-lCjy5pdZr+PmGMUSnn/z1BPWb3ADiGXjwbKdLa6EnvZ+dY6815Ak65VWstOIq/x3mqEwdvmv+/2ExRElEEcXMw== + +"@types/conventional-commits-parser@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-3.0.2.tgz#144b208c7344838bb045860fe1ddd10d4ae68f7c" + integrity sha512-1kVPUHFaart1iGRFxKn8WNXYEDVAgMb+DLatgql2dGg9jTGf3bNxWtN//C/tDG3ckOLg4u7SSx+qcn8VjzI5zg== + dependencies: + "@types/node" "*" + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/glob@^7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/http-cache-semantics@^4.0.2": + version "4.0.4" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/katex@^0.16.0": + version "0.16.7" + resolved "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868" + integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ== + +"@types/license-checker@^25.0.6": + version "25.0.6" + resolved "https://registry.npmjs.org/@types/license-checker/-/license-checker-25.0.6.tgz#c346285ee7e42bac58a4922059453f50a5d4175d" + integrity sha512-ju/75+YPkNE5vX1iPer+qtI1eI/LqJVYZgOsmSHI1iiEM1bQL5Gh1lEvyjR9T7ZXVE1FwJa2doWJEEmPNwbZkw== + +"@types/lodash@^4.17.16": + version "4.17.16" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a" + integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g== + +"@types/madge@^5.0.3": + version "5.0.3" + resolved "https://registry.npmjs.org/@types/madge/-/madge-5.0.3.tgz#e6adeb1b9e8c8b41e36341c598c051c6e5cd5464" + integrity sha512-NlQJd0qRAoyu+pawTDhLxkW940QT2dqASfwd2g/xEZu2F4Xjwa7TVRSPdbmZwUF1ygvAh0/nepeN7JjwEuOXCA== + dependencies: + "@types/node" "*" + +"@types/mime-types@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz#93a1933e24fed4fb9e4adc5963a63efcbb3317a2" + integrity sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + +"@types/mock-fs@^4.13.4": + version "4.13.4" + resolved "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.4.tgz#e73edb4b4889d44d23f1ea02d6eebe50aa30b09a" + integrity sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg== + dependencies: + "@types/node" "*" + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/node-fetch@^2.6.12": + version "2.6.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" + integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + +"@types/node@*": + version "22.15.17" + resolved "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" + integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== + dependencies: + undici-types "~6.21.0" + +"@types/node@18.11.19": + version "18.11.19" + resolved "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d" + integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw== + +"@types/node@^16": + version "16.18.126" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz#27875faa2926c0f475b39a8bb1e546c0176f8d4b" + integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== + +"@types/node@^18", "@types/node@^18.11.9": + version "18.19.100" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.100.tgz#7f3aefbb6911099ab7e0902a1f373b1a4d2c1947" + integrity sha512-ojmMP8SZBKprc3qGrGk8Ujpo80AXkrP7G2tOT4VWr5jlr5DHjsJF+emXJz+Wm0glmy4Js62oKMdZZ6B9Y+tEcA== + dependencies: + undici-types "~5.26.4" + +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prettier@2.6.0": + version "2.6.0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" + integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== + +"@types/punycode@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@types/punycode/-/punycode-2.1.4.tgz#96f8a47f1ee9fb0d0def5557fe80fac532f966fa" + integrity sha512-trzh6NzBnq8yw5e35f8xe8VTYjqM3NE7bohBtvDVf/dtUer3zYTLK1Ka3DG3p7bdtoaOHZucma6FfVKlQ134pQ== + +"@types/semver-utils@^1.1.1": + version "1.1.3" + resolved "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz#f78233e6613e53626844112422845f0f13b573fb" + integrity sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww== + +"@types/semver@^7.7.0": + version "7.7.0" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + +"@types/sinon@^17.0.3": + version "17.0.4" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz#fd9a3e8e07eea1a3f4a6f82a972c899e5778f369" + integrity sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.5" + resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + +"@types/unist@^2.0.0": + version "2.0.11" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" + integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^15.0.19": + version "15.0.19" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz#328fb89e46109ecbdb70c295d96ff2f46dfd01b9" + integrity sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17", "@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yarnpkg__lockfile@^1.1.9": + version "1.1.9" + resolved "https://registry.npmjs.org/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.9.tgz#b3c8e8d66dc8ce79827f422a660a557cda9ded14" + integrity sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q== + +"@typescript-eslint/eslint-plugin@^8": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz#86630dd3084f9d6c4239bbcd6a7ee1a7ee844f7f" + integrity sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/type-utils" "8.32.0" + "@typescript-eslint/utils" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/parser@^8": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz#fe840ecb2726a82fa9f5562837ec40503ae71caf" + integrity sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A== + dependencies: + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/typescript-estree" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.32.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz#6be89f652780f0d3d19d58dc0ee107b1a9e3282c" + integrity sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ== + dependencies: + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" + +"@typescript-eslint/type-utils@8.32.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz#5e0882393e801963f749bea38888e716045fe895" + integrity sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg== + dependencies: + "@typescript-eslint/typescript-estree" "8.32.0" + "@typescript-eslint/utils" "8.32.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/types@8.32.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz#a4a66b8876b8391970cf069b49572e43f1fc957a" + integrity sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA== + +"@typescript-eslint/typescript-estree@8.32.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz#11d45f47bfabb141206a3da6c7b91a9d869ff32d" + integrity sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ== + dependencies: + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/visitor-keys" "8.32.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/typescript-estree@^4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@8.32.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz#24570f68cf845d198b73a7f94ca88d8c2505ba47" + integrity sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.32.0" + "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/typescript-estree" "8.32.0" + +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + dependencies: + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" + +"@typescript-eslint/visitor-keys@8.32.0": + version "8.32.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz#0cca2cac046bc71cc40ce8214bac2850d6ecf4a6" + integrity sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w== + dependencies: + "@typescript-eslint/types" "8.32.0" + eslint-visitor-keys "^4.2.0" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@vitest/expect@>1.6.0": + version "3.1.3" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.3.tgz#bbca175cd2f23d7de9448a215baed8f3d7abd7b7" + integrity sha512-7FTQQuuLKmN1Ig/h+h/GO+44Q1IlglPlR2es4ab7Yvfx+Uk5xsv+Ykk+MEt/M2Yn/xGmzaLKxGw2lgy2bwuYqg== + dependencies: + "@vitest/spy" "3.1.3" + "@vitest/utils" "3.1.3" + chai "^5.2.0" + tinyrainbow "^2.0.0" + +"@vitest/pretty-format@3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.3.tgz#760b9eab5f253d7d2e7dcd28ef34570f584023d4" + integrity sha512-i6FDiBeJUGLDKADw2Gb01UtUNb12yyXAqC/mmRWuYl+m/U9GS7s8us5ONmGkGpUUo7/iAYzI2ePVfOZTYvUifA== + dependencies: + tinyrainbow "^2.0.0" + +"@vitest/spy@3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.3.tgz#ca81e2b4f0c3d6c75f35defa77c3336f39c8f605" + integrity sha512-x6w+ctOEmEXdWaa6TO4ilb7l9DxPR5bwEb6hILKuxfU1NqWT2mpJD9NJN7t3OTfxmVlOMrvtoFJGdgyzZ605lQ== + dependencies: + tinyspy "^3.0.2" + +"@vitest/utils@3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.3.tgz#4f31bdfd646cd82d30bfa730d7410cb59d529669" + integrity sha512-2Ltrpht4OmHO9+c/nmHtF09HWiyWdworqnHIwjfvDyWjuwKbdkcS9AnhsDn+8E2RM4x++foD1/tNuLPVvWG1Rg== + dependencies: + "@vitest/pretty-format" "3.1.3" + loupe "^3.1.3" + tinyrainbow "^2.0.0" + +"@xmldom/xmldom@^0.9.7": + version "0.9.8" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz#1471e82bdff9e8f20ee8bbe60d4ffa8a516e78d8" + integrity sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A== + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz#48a1517a0f49124827f4c37c284a689c607b2f32" + integrity sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.7": + version "0.0.7" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz#4b0cb785220d7c28ce0ec4d0804deb5d821eae89" + integrity sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ== + dependencies: + argparse "^2.0.1" + +JSONStream@^1.0.4, JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1, abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.14.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + +agentkeepalive@^4.2.1: + version "4.6.0" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1, ajv@^8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + +app-root-path@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== + dependencies: + default-require-extensions "^3.0.0" + +aproba@2.0.0, "aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + +array-find-index@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + +array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlastindex@^1.2.5: + version "1.2.6" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" + +array.prototype.flat@^1.3.2: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.flatmap@^1.3.2: + version "1.3.3" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + +ast-module-types@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.7.1.tgz#3f7989ef8dfa1fdb82dfe0ab02bdfc7c77a57dd3" + integrity sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw== + +ast-module-types@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz#9a6d8a80f438b6b8fe4995699d700297f398bf81" + integrity sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ== + +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + +ast-types@^0.16.1: + version "0.16.1" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" + integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== + dependencies: + tslib "^2.0.1" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +aws-cdk@2.1014.0: + version "2.1014.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1014.0.tgz#bd27af4060df15a05836a7ed3d19861e10740fd7" + integrity sha512-es101rtRAClix9BncNL54iW90MiOyRv4iCC5tv/firGDnidS6pPinuK0IIFt0RO6w0+3heRxWBXg8HY+f9877w== + optionalDependencies: + fsevents "2.3.2" + +aws-sdk-client-mock-jest@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-4.1.0.tgz#40a3bdedd8d551cf2a836b77239038c0ca10e25c" + integrity sha512-+g4a5Hp+MmPqqNnvwfLitByggrqf+xSbk1pm6fBYHNcon6+aQjL5iB+3YB6HuGPemY+/mUKN34iP62S14R61bA== + dependencies: + "@vitest/expect" ">1.6.0" + expect ">28.1.3" + tslib "^2.1.0" + +aws-sdk-client-mock@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.1.0.tgz#ae1950b2277f8e65f9a039975d79ff9fffab39e3" + integrity sha512-h/tOYTkXEsAcV3//6C1/7U4ifSpKyJvb6auveAepqqNJl6TdZaPFEtKjBQNf8UxQdDP850knB2i/whq4zlsxJw== + dependencies: + "@types/sinon" "^17.0.3" + sinon "^18.0.1" + tslib "^2.1.0" + +aws-sdk-js-codemod@^0.28.2: + version "0.28.2" + resolved "https://registry.npmjs.org/aws-sdk-js-codemod/-/aws-sdk-js-codemod-0.28.2.tgz#26a331ce0073cb0910c6aa0163075fe3bebdf3f3" + integrity sha512-ZWGvBbnWBlxMy1++ac9ytIf9dBeEtXxIuhYBkJLFPVbygHCk4gzZs/LepVsTslPjPlyVtGuoEZwRxVW1g7J62w== + dependencies: + jscodeshift "0.15.0" + +aws-sdk@^2.1692.0: + version "2.1692.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1692.0.tgz#9dac5f7bfcc5ab45825cc8591b12753aa7d2902c" + integrity sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw== + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.16.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + util "^0.12.4" + uuid "8.0.0" + xml2js "0.6.2" + +axios@1.9.0, axios@^1.8.3: + version "1.9.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" + integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +backport@8.5.0: + version "8.5.0" + resolved "https://registry.npmjs.org/backport/-/backport-8.5.0.tgz#f37459eaa4272d47efe050b06a22b10209f16d49" + integrity sha512-gX8v+l+BTue2lmmqD/yQiR6JUUY+5OWNZTI1qyusViqC9R2iv4YFPqT23IcJfpYqlYb3DOiwunfVjKLickdQ6g== + dependencies: + "@octokit/rest" "^18.12.0" + axios "^0.27.2" + dedent "^0.7.0" + del "^6.1.1" + dotenv "^16.0.1" + find-up "^5.0.0" + graphql "^16.5.0" + graphql-tag "^2.12.6" + inquirer "^8.2.3" + lodash "^4.17.21" + make-dir "^3.1.0" + ora "^5.4.1" + safe-json-stringify "^1.2.0" + strip-json-comments "^3.1.1" + terminal-link "^2.1.1" + utility-types "^3.10.0" + winston "^3.7.2" + yargs "^17.5.1" + yargs-parser "^21.0.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +basic-ftp@^5.0.2: + version "5.0.5" + resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== + +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + +bin-links@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +boxen@^7.0.0: + version "7.1.1" + resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0: + version "4.24.5" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" + integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== + dependencies: + caniuse-lite "^1.0.30001716" + electron-to-chromium "^1.5.149" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +byte-size@8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" + integrity sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg== + +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + +cacache@^17.0.0: + version "17.1.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacache@^18.0.0, cacache@^18.0.3: + version "18.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== + dependencies: + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + +caniuse-lite@^1.0.30001716: + version "1.0.30001717" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129" + integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw== + +canonicalize@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/canonicalize/-/canonicalize-2.1.0.tgz#92a20ecfb94e96591badf4977dc2fb1bfbc31dc5" + integrity sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +case@1.6.3, case@^1.6.3: + version "1.6.3" + resolved "https://registry.npmjs.org/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + +cdk-generate-synthetic-examples@^0.2.26: + version "0.2.26" + resolved "https://registry.npmjs.org/cdk-generate-synthetic-examples/-/cdk-generate-synthetic-examples-0.2.26.tgz#7f4fa506dd6be1efd8d145e47c46ab4f13eaa85a" + integrity sha512-e6RKkYMrxbjyFYz6YF2UsBH4MgQadPsBjhhp4t75islUpFJAYUSQ72eeyPeBPDm5Ux5T/dXI0wewNxtzldK7dQ== + dependencies: + "@jsii/spec" "^1.112.0" + jsii-reflect "^1.112.0" + yargs "^17.7.2" + +cdk8s-plus-27@2.9.5: + version "2.9.5" + resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" + integrity sha512-vZtq6BHIi3wFdzxd8LFmKiWIb3sFjV9kFpJ3bN2sOZiQYHoirN0UUlB04n2YMA7u97wJZPc521ZJGUyDBUhupQ== + dependencies: + minimatch "^3.1.2" + optionalDependencies: + backport "8.5.0" + +cdk8s@2.69.67: + version "2.69.67" + resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.69.67.tgz#662fdcdbd170d3c2ec15d573018020f8e8c5c2cd" + integrity sha512-nODVEYkSUrfig6pCyfrb/bdxP81ujopzL1AjDazeseS3CuwklhC+dFeO4QoHN5Xqs0hBsr9+mRDz/MpR9u96dA== + dependencies: + fast-json-patch "^3.1.1" + follow-redirects "^1.15.9" + yaml "2.7.1" + +chai@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz#1358ee106763624114addf84ab02697e411c9c05" + integrity sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" + +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.0.1, chalk@^5.2.0, chalk@^5.3.0: + version "5.4.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" + integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + +changelog-parser@^2.8.1: + version "2.8.1" + resolved "https://registry.npmjs.org/changelog-parser/-/changelog-parser-2.8.1.tgz#1428998c275e4f7c0a855026dc60c66cde36bb87" + integrity sha512-tNUYFRCEeWTXmwLqoNtOEzx9wcytg72MmGQqsEs14ClYwIDln7sbQw7FJj/dulXgSlsxkemc9gpPQhZYZx1TPw== + dependencies: + line-reader "^0.2.4" + remove-markdown "^0.2.2" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +ci-info@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== + +cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-cursor@3.1.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-table3@^0.6.3: + version "0.6.5" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@4.0.1, clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +cmd-shim@6.0.3, cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +code-block-writer@^13.0.3: + version "13.0.3" + resolved "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz#90f8a84763a5012da7af61319dd638655ae90b5b" + integrity sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg== + +codemaker@^1.112.0: + version "1.112.0" + resolved "https://registry.npmjs.org/codemaker/-/codemaker-1.112.0.tgz#09ee7a309bde98d9a90d27311459d7906895ef4f" + integrity sha512-9dOcSOPEDAB5y4oimdsjzi9Za6vHi7wsUeLdH2NQpP1q88D2Oo8fj6YXqM7c/97tUFqX4OaanNjQCI3K6uyn4A== + dependencies: + camelcase "^6.3.0" + decamelize "^5.0.1" + fs-extra "^10.1.0" + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0, color-convert@^1.9.3: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@1.1.3, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +columnify@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + +commander@^2.16.0, commander@^2.20.3, commander@^2.8.1: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@~13.1.0: + version "13.1.0" + resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" + integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== + +comment-parser@1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +commonmark@^0.31.2: + version "0.31.2" + resolved "https://registry.npmjs.org/commonmark/-/commonmark-0.31.2.tgz#9d8d5439c82c9a235154d858a53e1a7965d573a5" + integrity sha512-2fRLTyb9r/2835k5cwcAwOj0DEc44FARnMp5veGsJ+mEAZdi52sNopLu07ZyElQUz058H43whzlERDIaaSw4rg== + dependencies: + entities "~3.0.1" + mdurl "~1.0.1" + minimist "~1.2.8" + +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + +constructs@^10.0.0: + version "10.4.2" + resolved "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz#e875a78bef932cca12ea63965969873a25c1c132" + integrity sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA== + +conventional-changelog-angular@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== + dependencies: + compare-func "^2.0.0" + +conventional-changelog-angular@^5.0.12: + version "5.0.13" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-atom@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" + integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== + dependencies: + q "^1.5.1" + +conventional-changelog-cli@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz#9a7746cede92c6a8f27dc46692efaadfbed60daa" + integrity sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA== + dependencies: + add-stream "^1.0.0" + conventional-changelog "^3.1.24" + lodash "^4.17.15" + meow "^8.0.0" + tempfile "^3.0.0" + +conventional-changelog-codemirror@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" + integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== + dependencies: + q "^1.5.1" + +conventional-changelog-config-spec@2.1.0, conventional-changelog-config-spec@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz#874a635287ef8b581fd8558532bf655d4fb59f2d" + integrity sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ== + +conventional-changelog-conventionalcommits@4.6.3, conventional-changelog-conventionalcommits@^4.5.0: + version "4.6.3" + resolved "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz#0765490f56424b46f6cb4db9135902d6e5a36dc2" + integrity sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g== + dependencies: + compare-func "^2.0.0" + lodash "^4.17.15" + q "^1.5.1" + +conventional-changelog-core@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz#3c331b155d5b9850f47b4760aeddfc983a92ad49" + integrity sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^6.0.0" + conventional-commits-parser "^4.0.0" + dateformat "^3.0.3" + get-pkg-repo "^4.2.1" + git-raw-commits "^3.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^5.0.0" + normalize-package-data "^3.0.3" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + +conventional-changelog-core@^4.2.1: + version "4.2.4" + resolved "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + +conventional-changelog-ember@^2.0.9: + version "2.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" + integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^3.0.9: + version "3.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" + integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== + dependencies: + q "^1.5.1" + +conventional-changelog-express@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" + integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== + dependencies: + q "^1.5.1" + +conventional-changelog-jquery@^3.0.11: + version "3.0.11" + resolved "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" + integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== + dependencies: + q "^1.5.1" + +conventional-changelog-jshint@^2.0.9: + version "2.0.9" + resolved "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" + integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-preset-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz#14975ef759d22515d6eabae6396c2ae721d4c105" + integrity sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA== + +conventional-changelog-writer@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" + integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== + dependencies: + compare-func "^2.0.0" + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-changelog-writer@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz#d8d3bb5e1f6230caed969dcc762b1c368a8f7b01" + integrity sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ== + dependencies: + conventional-commits-filter "^3.0.0" + dateformat "^3.0.3" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + meow "^8.1.2" + semver "^7.0.0" + split "^1.0.1" + +conventional-changelog@3.1.25, conventional-changelog@^3.1.24, conventional-changelog@^3.1.25: + version "3.1.25" + resolved "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz#3e227a37d15684f5aa1fb52222a6e9e2536ccaff" + integrity sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ== + dependencies: + conventional-changelog-angular "^5.0.12" + conventional-changelog-atom "^2.0.8" + conventional-changelog-codemirror "^2.0.8" + conventional-changelog-conventionalcommits "^4.5.0" + conventional-changelog-core "^4.2.1" + conventional-changelog-ember "^2.0.9" + conventional-changelog-eslint "^3.0.9" + conventional-changelog-express "^2.0.6" + conventional-changelog-jquery "^3.0.11" + conventional-changelog-jshint "^2.0.9" + conventional-changelog-preset-loader "^2.3.4" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz#bf1113266151dd64c49cd269e3eb7d71d7015ee2" + integrity sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.1" + +conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +conventional-commits-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz#02ae1178a381304839bce7cea9da5f1b549ae505" + integrity sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg== + dependencies: + JSONStream "^1.3.5" + is-text-path "^1.0.1" + meow "^8.1.2" + split2 "^3.2.2" + +conventional-recommended-bump@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + +conventional-recommended-bump@7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz#ec01f6c7f5d0e2491c2d89488b0d757393392424" + integrity sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^3.0.0" + conventional-commits-filter "^3.0.0" + conventional-commits-parser "^4.0.0" + git-raw-commits "^3.0.0" + git-semver-tags "^5.0.0" + meow "^8.1.2" + +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== + +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +date-format@^4.0.14: + version "4.0.14" + resolved "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" + integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== + +dateformat@^3.0.0, dateformat@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6: + version "4.4.0" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw== + +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz#db11a92e58c741ef339fb0a2868d8a06a9a7b1e9" + integrity sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA== + +decode-named-character-reference@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz#5d6ce68792808901210dac42a8e9853511e2b8bf" + integrity sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w== + dependencies: + character-entities "^2.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +dedent@1.5.3: + version "1.5.3" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +dedent@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" + integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== + +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-require-extensions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" + integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== + dependencies: + strip-bom "^4.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + +del@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delay@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +dependency-tree@^8.1.1: + version "8.1.2" + resolved "https://registry.npmjs.org/dependency-tree/-/dependency-tree-8.1.2.tgz#c9e652984f53bd0239bc8a3e50cbd52f05b2e770" + integrity sha512-c4CL1IKxkKng0oT5xrg4uNiiMVFqTGOXqHSFx7XEFdgSsp6nw3AGGruICppzJUrfad/r7GLqt26rmWU4h4j39A== + dependencies: + commander "^2.20.3" + debug "^4.3.1" + filing-cabinet "^3.0.1" + precinct "^8.0.0" + typescript "^3.9.7" + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +detect-indent@^6.0.0, detect-indent@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== + +detect-newline@^3.0.0, detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detective-amd@^3.1.0: + version "3.1.2" + resolved "https://registry.npmjs.org/detective-amd/-/detective-amd-3.1.2.tgz#bf55eb5291c218b76d6224a3d07932ef13a9a357" + integrity sha512-jffU26dyqJ37JHR/o44La6CxtrDf3Rt9tvd2IbImJYxWKTMdBjctp37qoZ6ZcY80RHg+kzWz4bXn39e4P7cctQ== + dependencies: + ast-module-types "^3.0.0" + escodegen "^2.0.0" + get-amd-module-type "^3.0.0" + node-source-walk "^4.2.0" + +detective-cjs@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/detective-cjs/-/detective-cjs-3.1.3.tgz#50e107d67b37f459b0ec02966ceb7e20a73f268b" + integrity sha512-ljs7P0Yj9MK64B7G0eNl0ThWSYjhAaSYy+fQcpzaKalYl/UoQBOzOeLCSFEY1qEBhziZ3w7l46KG/nH+s+L7BQ== + dependencies: + ast-module-types "^3.0.0" + node-source-walk "^4.0.0" + +detective-es6@^2.2.0, detective-es6@^2.2.1: + version "2.2.2" + resolved "https://registry.npmjs.org/detective-es6/-/detective-es6-2.2.2.tgz#ee5f880981d9fecae9a694007029a2f6f26d8d28" + integrity sha512-eZUKCUsbHm8xoeoCM0z6JFwvDfJ5Ww5HANo+jPR7AzkFpW9Mun3t/TqIF2jjeWa2TFbAiGaWESykf2OQp3oeMw== + dependencies: + node-source-walk "^4.0.0" + +detective-less@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/detective-less/-/detective-less-1.0.2.tgz#a68af9ca5f69d74b7d0aa190218b211d83b4f7e3" + integrity sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA== + dependencies: + debug "^4.0.0" + gonzales-pe "^4.2.3" + node-source-walk "^4.0.0" + +detective-postcss@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detective-postcss/-/detective-postcss-4.0.0.tgz#24e69b465e5fefe7a6afd05f7e894e34595dbf51" + integrity sha512-Fwc/g9VcrowODIAeKRWZfVA/EufxYL7XfuqJQFroBKGikKX83d2G7NFw6kDlSYGG3LNQIyVa+eWv1mqre+v4+A== + dependencies: + debug "^4.1.1" + is-url "^1.2.4" + postcss "^8.1.7" + postcss-values-parser "^2.0.1" + +detective-postcss@^5.0.0: + version "5.1.3" + resolved "https://registry.npmjs.org/detective-postcss/-/detective-postcss-5.1.3.tgz#773314cd017621b7d382be81331eb0c7abbe8cc3" + integrity sha512-Wo7PUpF6wqeT1aRgajdyIdDRjFFJVxlXPRAlT1aankH/RVOgrJuEZFZ4ABxYXdzaRPO5Lkg8rHxsxpLnxdJIYA== + dependencies: + is-url "^1.2.4" + postcss "^8.4.6" + postcss-values-parser "^5.0.0" + +detective-sass@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/detective-sass/-/detective-sass-3.0.2.tgz#e0f35aac79a4d2f6409c284d95b8f7ecd5973afd" + integrity sha512-DNVYbaSlmti/eztFGSfBw4nZvwsTaVXEQ4NsT/uFckxhJrNRFUh24d76KzoCC3aarvpZP9m8sC2L1XbLej4F7g== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^4.0.0" + +detective-scss@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/detective-scss/-/detective-scss-2.0.2.tgz#7d2a642616d44bf677963484fa8754d9558b8235" + integrity sha512-hDWnWh/l0tht/7JQltumpVea/inmkBaanJUcXRB9kEEXVwVUMuZd6z7eusQ6GcBFrfifu3pX/XPyD7StjbAiBg== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^4.0.0" + +detective-stylus@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.3.tgz#20a702936c9fd7d4203fd7a903314b5dd43ac713" + integrity sha512-4/bfIU5kqjwugymoxLXXLltzQNeQfxGoLm2eIaqtnkWxqbhap9puDVpJPVDx96hnptdERzS5Cy6p9N8/08A69Q== + +detective-typescript@^7.0.0: + version "7.0.2" + resolved "https://registry.npmjs.org/detective-typescript/-/detective-typescript-7.0.2.tgz#c6e00b4c28764741ef719662250e6b014a5f3c8e" + integrity sha512-unqovnhxzvkCz3m1/W4QW4qGsvXCU06aU2BAm8tkza+xLnp9SOFnob2QsTxUv5PdnQKfDvWcv9YeOeFckWejwA== + dependencies: + "@typescript-eslint/typescript-estree" "^4.33.0" + ast-module-types "^2.7.1" + node-source-walk "^4.2.0" + typescript "^3.9.10" + +devlop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + +dezalgo@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1, diff@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@~11.0.6: + version "11.0.7" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== + dependencies: + dotenv "^16.4.5" + +dotenv-json@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dotenv-json/-/dotenv-json-1.0.0.tgz#fc7f672aafea04bed33818733b9f94662332815c" + integrity sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ== + +dotenv@^16.0.1, dotenv@^16.4.5: + version "16.5.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" + integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== + +dotenv@^8.0.0: + version "8.6.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +dotenv@~16.4.5: + version "16.4.7" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dotgitignore@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" + integrity sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA== + dependencies: + find-up "^3.0.0" + minimatch "^3.0.4" + +downlevel-dts@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/downlevel-dts/-/downlevel-dts-0.11.0.tgz#514a2d723009c5845730c1db6c994484c596ed9c" + integrity sha512-vo835pntK7kzYStk7xUHDifiYJvXxVhUapt85uk2AI94gUUAQX9HNRtrcMHNSc3YHJUEHGbYIGsM99uIbgAtxw== + dependencies: + semver "^7.3.2" + shelljs "^0.8.3" + typescript next + +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ejs@^3.1.10, ejs@^3.1.7: + version "3.1.10" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.149: + version "1.5.151" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz#5edd6c17e1b2f14b4662c41b9379f96cc8c2bb7c" + integrity sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.8.3: + version "5.18.1" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" + integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +env-paths@^2.2.0, env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@7.13.0: + version "7.13.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9: + version "1.23.9" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz#5b45994b7de78dada5c1bebf1379646b32b9d606" + integrity sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.2.7" + get-proto "^1.0.0" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-regex "^1.2.1" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.0" + math-intrinsics "^1.1.0" + object-inspect "^1.13.3" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.3" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.18" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +esbuild@^0.25.4: + version "0.25.4" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz#bb9a16334d4ef2c33c7301a924b8b863351a0854" + integrity sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.4" + "@esbuild/android-arm" "0.25.4" + "@esbuild/android-arm64" "0.25.4" + "@esbuild/android-x64" "0.25.4" + "@esbuild/darwin-arm64" "0.25.4" + "@esbuild/darwin-x64" "0.25.4" + "@esbuild/freebsd-arm64" "0.25.4" + "@esbuild/freebsd-x64" "0.25.4" + "@esbuild/linux-arm" "0.25.4" + "@esbuild/linux-arm64" "0.25.4" + "@esbuild/linux-ia32" "0.25.4" + "@esbuild/linux-loong64" "0.25.4" + "@esbuild/linux-mips64el" "0.25.4" + "@esbuild/linux-ppc64" "0.25.4" + "@esbuild/linux-riscv64" "0.25.4" + "@esbuild/linux-s390x" "0.25.4" + "@esbuild/linux-x64" "0.25.4" + "@esbuild/netbsd-arm64" "0.25.4" + "@esbuild/netbsd-x64" "0.25.4" + "@esbuild/openbsd-arm64" "0.25.4" + "@esbuild/openbsd-x64" "0.25.4" + "@esbuild/sunos-x64" "0.25.4" + "@esbuild/win32-arm64" "0.25.4" + "@esbuild/win32-ia32" "0.25.4" + "@esbuild/win32-x64" "0.25.4" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0, escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" + integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== + dependencies: + debug "^4.3.4" + glob "^7.2.0" + is-glob "^4.0.3" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" + semver "^6.3.1" + string.prototype.trimend "^1.0.8" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@^28: + version "28.11.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz#2641ecb4411941bbddb3d7cf8a8ff1163fbb510e" + integrity sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig== + dependencies: + "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" + +eslint-plugin-jsdoc@^50.6.11: + version "50.6.11" + resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz#36733620dafe03e8666df4cff449c7e9a8e1b1da" + integrity sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg== + dependencies: + "@es-joy/jsdoccomment" "~0.49.0" + are-docs-informative "^0.0.2" + comment-parser "1.4.1" + debug "^4.3.6" + escape-string-regexp "^4.0.0" + espree "^10.1.0" + esquery "^1.6.0" + parse-imports-exports "^0.2.4" + semver "^7.6.3" + spdx-expression-parse "^4.0.0" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^8: + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.1.0, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== + dependencies: + acorn "^8.14.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2, esquery@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== + +execa@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@>28.1.3, expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +exponential-backoff@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" + integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-check@^3.23.2: + version "3.23.2" + resolved "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz#0129f1eb7e4f500f58e8290edc83c670e4a574a2" + integrity sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A== + dependencies: + pure-rand "^6.1.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-patch@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-memoize@^2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" + integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fast-xml-parser@4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" + integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== + dependencies: + strnum "^1.0.5" + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fdir@^6.4.4: + version "6.4.4" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz#1cfcf86f875a883e19a8fab53622cfe992e8d2f9" + integrity sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg== + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +fflate@0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9" + integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ== + +figures@3.2.0, figures@^3.0.0, figures@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filing-cabinet@^3.0.1: + version "3.3.1" + resolved "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-3.3.1.tgz#45d87bb273a0e0a7dd6ac6bac9111059186e2e9c" + integrity sha512-renEK4Hh6DUl9Vl22Y3cxBq1yh8oNvbAdXnhih0wVpmea+uyKjC9K4QeRjUaybIiIewdzfum+Fg15ZqJ/GyCaA== + dependencies: + app-module-path "^2.2.0" + commander "^2.20.3" + debug "^4.3.3" + enhanced-resolve "^5.8.3" + is-relative-path "^1.0.2" + module-definition "^3.3.1" + module-lookup-amd "^7.0.1" + resolve "^1.21.0" + resolve-dependency-path "^2.0.0" + sass-lookup "^3.0.0" + stylus-lookup "^3.0.1" + tsconfig-paths "^3.10.1" + typescript "^3.9.7" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.7, flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flow-parser@0.*: + version "0.269.1" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.269.1.tgz#92067f8100d89a84433c656eb59c5b92e4036eb9" + integrity sha512-2Yr0kqvT7RwaGL192nT78O5AWJeECQjl0NEzBkMsx8OJt63BvNl5yvSIbE4qZ1VDSjEkhbUgaWYdwX354bVNjw== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +follow-redirects@^1.14.9, follow-redirects@^1.15.6, follow-redirects@^1.15.9: + version "1.15.9" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +for-each@^0.3.3, for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== + +form-data@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" + integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + mime-types "^2.1.12" + +fp-and-or@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz#0268c800c359ede259cdcbc352654e698b7ea299" + integrity sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw== + +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== + +front-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" + integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg== + dependencies: + js-yaml "^3.13.1" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.2.0, fs-extra@^11.3.0: + version "11.3.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-amd-module-type@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-3.0.2.tgz#46550cee2b8e1fa4c3f2c8a5753c36990aa49ab0" + integrity sha512-PcuKwB8ouJnKuAPn6Hk3UtdfKoUV3zXRqVEvj8XGIXqjWfgd1j7QGdXy5Z9OdQfzVt1Sk29HVe/P+X74ccOuqw== + dependencies: + ast-module-types "^3.0.0" + node-source-walk "^4.2.2" + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-pkg-repo@^4.0.0, get-pkg-repo@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + +get-port@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + +get-uri@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7" + integrity sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + +git-raw-commits@^2.0.11, git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +git-raw-commits@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz#5432f053a9744f67e8db03dbc48add81252cfdeb" + integrity sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw== + dependencies: + dargs "^7.0.0" + meow "^8.1.2" + split2 "^3.2.2" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.0.0, git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + +git-semver-tags@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz#db748aa0e43d313bf38dcd68624d8443234e1c15" + integrity sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA== + dependencies: + meow "^8.1.2" + semver "^7.0.0" + +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + +git-url-parse@14.0.0: + version "14.0.0" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz#18ce834726d5fbca0c25a4555101aa277017418f" + integrity sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ== + dependencies: + git-up "^7.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + +glob-parent@6.0.2, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@^5.1.1, glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@~10.4.5: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.0.0, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0, glob@^7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8, glob@^8.0.1: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@11.1.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +got@^12.1.0: + version "12.6.1" + resolved "https://registry.npmjs.org/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^16.5.0: + version "16.11.0" + resolved "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" + integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== + +graphviz@0.0.9: + version "0.0.9" + resolved "https://registry.npmjs.org/graphviz/-/graphviz-0.0.9.tgz#0bbf1df588c6a92259282da35323622528c4bbc4" + integrity sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg== + dependencies: + temp "~0.4.0" + +handlebars@^4.7.6, handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-bigints@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" + integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +has-unicode@2.0.1, has-unicode@^2.0.0, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has-yarn@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" + integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== + +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^6.0.0: + version "6.1.3" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz#2ee1a14a097a1236bddf8672c35b613c46c55946" + integrity sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: + version "7.0.2" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^6.0.0, ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +ignore@^5.0.4, ignore@^5.2.0, ignore@^5.3.1, ignore@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@~7.0.3: + version "7.0.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078" + integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A== + +import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-local@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^1.3.2, ini@^1.3.4, ini@^1.3.8, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +ini@^4.1.1, ini@^4.1.3, ini@~4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== + +init-package-json@6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-6.0.3.tgz#2552fba75b6eed2495dc97f44183e2e5a5bcf8b0" + integrity sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w== + dependencies: + "@npmcli/package-json" "^5.0.0" + npm-package-arg "^11.0.0" + promzard "^1.0.0" + read "^3.0.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^5.0.0" + +inquirer@^8.2.3, inquirer@^8.2.4: + version "8.2.6" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-async-function@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== + dependencies: + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-ci@3.0.1, is-ci@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + +is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10, is-generator-function@^1.0.7: + version "1.1.0" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-relative-path@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" + integrity sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA== + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + +is-ssh@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz#76de1cdbe8f92a8b905d1a172b6bc09704c20396" + integrity sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg== + dependencies: + protocols "^2.0.1" + +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.7, is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15, is-typed-array@^1.1.3: + version "1.1.15" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-url-superb@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" + integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2, is-weakref@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" + integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-processinfo@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.3" + istanbul-lib-coverage "^3.2.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^8.3.2" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-junit@^13.2.0: + version "13.2.0" + resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-13.2.0.tgz#66eeb86429aafac8c1745a70f44ace185aacb943" + integrity sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^6.0.1" + uuid "^8.3.2" + xml "^1.0.1" + +jest-junit@^15: + version "15.0.0" + resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-15.0.0.tgz#a47544ab42e9f8fe7ada56306c218e09e52bd690" + integrity sha512-Z5sVX0Ag3HZdMUnD5DFlG+1gciIFSy7yIVPhOdGUi8YJaI9iLvvBb530gtQL2CHmv0JJeiwRZenr0VrSR7frvg== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^6.0.1" + uuid "^8.3.2" + xml "^1.0.1" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29, jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +jju@^1.1.0: + version "1.4.0" + resolved "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== + +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0, js-yaml@^4.1.0, js-yaml@~4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.10.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +jscodeshift@0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.0.tgz#32fc8d90193d17cdf1b34604496922838500b51f" + integrity sha512-t337Wx7Vy1ffhas7E1KZUHaR9YPdeCfxPvxz9k6DKwYW88pcs1piR1eR9d+7GQZGSQIZd6a+cfIM3XpMe9rFKQ== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.23.1" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsdoc-type-pratt-parser@~4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz#ff6b4a3f339c34a6c188cbf50a16087858d22113" + integrity sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg== + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jsii-diff@1.112.0: + version "1.112.0" + resolved "https://registry.npmjs.org/jsii-diff/-/jsii-diff-1.112.0.tgz#bacc198befb4456016f79d548fc374d9afd7b0da" + integrity sha512-DvHpQdi+WDThH0VCKoNkglh33KtP+UKcQvikQ/QasEwLsn2hLtihcPLzK/wC1OZFkIBSZQluGE+c8XiVzwS/Gg== + dependencies: + "@jsii/check-node" "1.112.0" + "@jsii/spec" "^1.112.0" + fs-extra "^10.1.0" + jsii-reflect "^1.112.0" + log4js "^6.9.1" + yargs "^16.2.0" + +jsii-pacmak@1.112.0: + version "1.112.0" + resolved "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.112.0.tgz#5002e788f584c2155e11d2b40fcff43ff8040380" + integrity sha512-awdZ4Hb9pc8cKp2RVhJntoppgo5KnqP8f9YCmoHPPpPCS1hB3joxpVbNS6t2PYdGt1R+j7EcO7TJdah95cxE3w== + dependencies: + "@jsii/check-node" "1.112.0" + "@jsii/spec" "^1.112.0" + clone "^2.1.2" + codemaker "^1.112.0" + commonmark "^0.31.2" + escape-string-regexp "^4.0.0" + fs-extra "^10.1.0" + jsii-reflect "^1.112.0" + semver "^7.7.1" + spdx-license-list "^6.10.0" + xmlbuilder "^15.1.1" + yargs "^16.2.0" + +jsii-reflect@1.112.0, jsii-reflect@^1.112.0: + version "1.112.0" + resolved "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.112.0.tgz#8dafcd56ffbbba27e21d089e89a7f8e7203a6217" + integrity sha512-B7agb4kmmtW9KHk1KJyB0AHaAs28pOt3FF/yKuDSfJyFZnqh26pbd5ok6Y5jx0qVYcaTydil7FkTF7gRwBz7nQ== + dependencies: + "@jsii/check-node" "1.112.0" + "@jsii/spec" "^1.112.0" + chalk "^4" + fs-extra "^10.1.0" + oo-ascii-tree "^1.112.0" + yargs "^16.2.0" + +jsii-rosetta@~5.4.59: + version "5.4.59" + resolved "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-5.4.59.tgz#45b00a5c8ad8f036155a9a7ad3ab2796c2621d33" + integrity sha512-B5Ew/GAMGItzbuFyrmGyLSz/BTLk96VKiC7iZUOSSPkO+WBoKvgiP5s8nCbA3fD8KV9jJfmYVmLAELa4zsA2Cw== + dependencies: + "@jsii/check-node" "1.107.0" + "@jsii/spec" "^1.107.0" + "@xmldom/xmldom" "^0.9.7" + chalk "^4" + commonmark "^0.31.2" + fast-glob "^3.3.3" + jsii "~5.4.0" + semver "^7.7.1" + semver-intersect "^1.5.0" + stream-json "^1.9.1" + typescript "~5.4" + workerpool "^6.5.1" + yargs "^17.7.2" + +jsii@~5.4.0: + version "5.4.51" + resolved "https://registry.npmjs.org/jsii/-/jsii-5.4.51.tgz#4f22f6669a9bac8b6729b12d659e9b4656691129" + integrity sha512-Hc9H7DoxiUPchNCyTk68HvKIZ+Q1EBO1W8mVJmcxCyx9/ZjmE2jmENuwR1vC7HgSTJa+maLrZRVOJ90aIhsQKQ== + dependencies: + "@jsii/check-node" "1.106.0" + "@jsii/spec" "^1.106.0" + case "^1.6.3" + chalk "^4" + downlevel-dts "^0.11.0" + fast-deep-equal "^3.1.3" + log4js "^6.9.1" + semver "^7.7.1" + semver-intersect "^1.5.0" + sort-json "^2.0.1" + spdx-license-list "^6.9.0" + typescript "~5.4" + yargs "^17.7.2" + +jsii@~5.7.15: + version "5.7.15" + resolved "https://registry.npmjs.org/jsii/-/jsii-5.7.15.tgz#f856ae7350f2ed79616aeb9121152b00a71bea80" + integrity sha512-GRzC3VW4aol0oqMHv0Li1JnFXUM043KIxQZ9B0CHV/m7qMpiDxUplFiHNHh3bcLbYXPwuKHcqkPlO6nzmndtjQ== + dependencies: + "@jsii/check-node" "1.111.0" + "@jsii/spec" "^1.111.0" + case "^1.6.3" + chalk "^4" + fast-deep-equal "^3.1.3" + log4js "^6.9.1" + semver "^7.7.1" + semver-intersect "^1.5.0" + sort-json "^2.0.1" + spdx-license-list "^6.10.0" + typescript "~5.7" + yargs "^17.7.2" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + +json-parse-helpfulerror@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + integrity sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg== + dependencies: + jju "^1.1.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +jsonc-parser@~3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4" + integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonlines@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz#4fcd246dc5d0e38691907c44ab002f782d1d94cc" + integrity sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA== + +jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsonpointer@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +jsonschema@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz#f6aceb1ab9123563dd901d05f81f9d4883d3b7d8" + integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== + +jsonschema@~1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + +just-extend@^4.0.2: + version "4.2.1" + resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== + +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + +katex@^0.16.0: + version "0.16.22" + resolved "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz#d2b3d66464b1e6d69e6463b28a86ced5a02c5ccd" + integrity sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg== + dependencies: + commander "^8.3.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +lambda-event-mock@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/lambda-event-mock/-/lambda-event-mock-1.5.0.tgz#9cb1ce2bec4271f918d485fef0a327d194dd120f" + integrity sha512-vx1d+vZqi7FF6B3+mAfHnY/6Tlp6BheL2ta0MJS0cIRB3Rc4I5cviHTkiJxHdE156gXx3ZjlQRJrS4puXvtrhA== + dependencies: + "@extra-number/significant-digits" "^1.1.1" + clone-deep "^4.0.1" + uuid "^3.3.3" + vandium-utils "^1.2.0" + +lambda-leak@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lambda-leak/-/lambda-leak-2.0.0.tgz#771985d3628487f6e885afae2b54510dcfb2cd7e" + integrity sha512-2c9jwUN3ZLa2GEiOhObbx2BMGQplEUCDHSIkhDtYwUjsTfiV/3jCF6ThIuEXfsvqbUK+0QpZcugIKB8YMbSevQ== + +lambda-tester@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lambda-tester/-/lambda-tester-4.0.1.tgz#91f0fc1266cdceae09a5ddbbdbc209c214beb98c" + integrity sha512-ft6XHk84B6/dYEzyI3anKoGWz08xQ5allEHiFYDUzaYTymgVK7tiBkCEbuWx+MFvH7OpFNsJXVtjXm0X8iH3Iw== + dependencies: + app-root-path "^3.0.0" + dotenv "^8.0.0" + dotenv-json "^1.0.0" + lambda-event-mock "^1.5.0" + lambda-leak "^2.0.0" + semver "^6.1.1" + uuid "^3.3.3" + vandium-utils "^2.0.0" + +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + +lerna@^8.2.2: + version "8.2.2" + resolved "https://registry.npmjs.org/lerna/-/lerna-8.2.2.tgz#ba38e8ffe31cf69222832838f282c7607b09c2a3" + integrity sha512-GkqBELTG4k7rfzAwRok2pKBvhNo046Hfwcj7TuhDah3q58/BBBAqvIFLfqEI5fglnNOs6maMSn6/MWjccQE55A== + dependencies: + "@lerna/create" "8.2.2" + "@npmcli/arborist" "7.5.4" + "@npmcli/package-json" "5.2.0" + "@npmcli/run-script" "8.1.0" + "@nx/devkit" ">=17.1.2 < 21" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "20.1.2" + aproba "2.0.0" + byte-size "8.1.1" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "6.0.3" + color-support "1.1.3" + columnify "1.6.0" + console-control-strings "^1.1.0" + conventional-changelog-angular "7.0.0" + conventional-changelog-core "5.0.1" + conventional-recommended-bump "7.0.1" + cosmiconfig "9.0.0" + dedent "1.5.3" + envinfo "7.13.0" + execa "5.0.0" + fs-extra "^11.2.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "14.0.0" + glob-parent "6.0.2" + globby "11.1.0" + graceful-fs "4.2.11" + has-unicode "2.0.1" + import-local "3.1.0" + ini "^1.3.8" + init-package-json "6.0.3" + inquirer "^8.2.4" + is-ci "3.0.1" + is-stream "2.0.0" + jest-diff ">=29.4.3 < 30" + js-yaml "4.1.0" + libnpmaccess "8.0.6" + libnpmpublish "9.0.9" + load-json-file "6.2.0" + lodash "^4.17.21" + make-dir "4.0.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "11.0.2" + npm-packlist "8.0.2" + npm-registry-fetch "^17.1.0" + nx ">=17.1.2 < 21" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "^18.0.6" + pify "5.0.0" + read-cmd-shim "4.0.0" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + set-blocking "^2.0.0" + signal-exit "3.0.7" + slash "3.0.0" + ssri "^10.0.6" + string-width "^4.2.3" + strong-log-transformer "2.1.0" + tar "6.2.1" + temp-dir "1.0.0" + typescript ">=3 < 6" + upath "2.0.1" + uuid "^10.0.0" + validate-npm-package-license "3.0.4" + validate-npm-package-name "5.0.1" + wide-align "1.1.5" + write-file-atomic "5.0.1" + write-pkg "4.0.0" + yargs "17.7.2" + yargs-parser "21.1.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libnpmaccess@8.0.6: + version "8.0.6" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" + integrity sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw== + dependencies: + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + +libnpmpublish@9.0.9: + version "9.0.9" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.9.tgz#e737378c09f09738377d2a276734be35cffb85e2" + integrity sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg== + dependencies: + ci-info "^4.0.0" + normalize-package-data "^6.0.1" + npm-package-arg "^11.0.2" + npm-registry-fetch "^17.0.1" + proc-log "^4.2.0" + semver "^7.3.7" + sigstore "^2.2.0" + ssri "^10.0.6" + +license-checker@^25.0.1: + version "25.0.1" + resolved "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz#4d14504478a5240a857bb3c21cd0491a00d761fa" + integrity sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g== + dependencies: + chalk "^2.4.1" + debug "^3.1.0" + mkdirp "^0.5.1" + nopt "^4.0.1" + read-installed "~4.0.3" + semver "^5.5.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + spdx-satisfies "^4.0.0" + treeify "^1.1.0" + +line-reader@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/line-reader/-/line-reader-0.2.4.tgz#c4392b587dea38580c9678570e6e8e49fce52622" + integrity sha512-342xzyZZS9uTiKwHJcMacopVl/WjrMMCZS1Qg4Uhl/WBknWRrGFdKOIS1Kec6SaiTcZMtmuxWvvIbPXj/+FMjA== + +lines-and-columns@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + dependencies: + uc.micro "^1.0.1" + +load-json-file@6.2.0, load-json-file@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.0.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.9.1: + version "6.9.1" + resolved "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" + integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + flatted "^3.2.7" + rfdc "^1.3.0" + streamroller "^3.1.5" + +logform@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" + integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +loupe@^3.1.0, loupe@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz#042a8f7986d77f3d0f98ef7990a2b2fef18b0fd2" + integrity sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug== + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +madge@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/madge/-/madge-5.0.2.tgz#d34527af7e96de9625e8069902667c4c5a073ada" + integrity sha512-OeqFIgugINbVqh6keLWePD/N3u1EEYS3O9gCTD+EjcuaJa1TH30jcCxr8CEl3+neS1VM8sDCQSYoln/2li3ceg== + dependencies: + chalk "^4.1.1" + commander "^7.2.0" + commondir "^1.0.1" + debug "^4.3.1" + dependency-tree "^8.1.1" + detective-amd "^3.1.0" + detective-cjs "^3.1.1" + detective-es6 "^2.2.0" + detective-less "^1.0.2" + detective-postcss "^5.0.0" + detective-sass "^3.0.1" + detective-scss "^2.0.1" + detective-stylus "^1.0.0" + detective-typescript "^7.0.0" + graphviz "0.0.9" + ora "^5.4.1" + pluralize "^8.0.0" + precinct "^8.1.0" + pretty-ms "^7.0.1" + rc "^1.2.7" + typescript "^3.9.5" + walkdir "^0.4.1" + +make-dir@4.0.0, make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1, make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^10.0.3: + version "10.2.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: + version "11.1.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + +make-runnable@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/make-runnable/-/make-runnable-1.4.1.tgz#a230f5bc085468362dc73c9f2391948b26e777ba" + integrity sha512-18F9NyNAPcoAT5a1y5r2bBOEY17Z4fa86WXBfLcSOzNo8/KSCymyViDDlsPJ66xhatwBVfodiXYyOm5Jvz9YFA== + dependencies: + bluebird "^3.5.0" + yargs "^16.2.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +markdown-it@14.1.0, markdown-it@^12.3.2: + version "12.3.2" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +markdownlint-cli@^0.44.0: + version "0.44.0" + resolved "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz#02b24c8a20972c50d124a6cafdeca3beb085a1ce" + integrity sha512-ZJTAONlvF9NkrIBltCdW15DxN9UTbPiKMEqAh2EU2gwIFlrCMavyCEPPO121cqfYOrLUJWW8/XKWongstmmTeQ== + dependencies: + commander "~13.1.0" + glob "~10.4.5" + ignore "~7.0.3" + js-yaml "~4.1.0" + jsonc-parser "~3.3.1" + jsonpointer "~5.0.1" + markdownlint "~0.37.4" + minimatch "~9.0.5" + run-con "~1.3.2" + smol-toml "~1.3.1" + +markdownlint@~0.37.4: + version "0.37.4" + resolved "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz#dd58c4a13b798d4702438e5f7fd587a219f753f6" + integrity sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ== + dependencies: + markdown-it "14.1.0" + micromark "4.0.1" + micromark-core-commonmark "2.0.2" + micromark-extension-directive "3.0.2" + micromark-extension-gfm-autolink-literal "2.1.0" + micromark-extension-gfm-footnote "2.1.0" + micromark-extension-gfm-table "2.1.0" + micromark-extension-math "3.1.0" + micromark-util-types "2.0.1" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mdurl@^1.0.1, mdurl@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +meow@^8.0.0, meow@^8.1.2: + version "8.1.2" + resolved "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-core-commonmark@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" + integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-core-commonmark@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" + integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== + dependencies: + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-directive@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz#2eb61985d1995a7c1ff7621676a4f32af29409e8" + integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + parse-entities "^4.0.0" + +micromark-extension-gfm-autolink-literal@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz#6286aee9686c4462c1e3552a9d505feddceeb935" + integrity sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-footnote@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz#4dab56d4e398b9853f6fe4efac4fc9361f3e0750" + integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-table@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz#5cadedfbb29fca7abf752447967003dc3b6583c9" + integrity sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-math@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz#c42ee3b1dd5a9a03584e83dd8f08e3de510212c1" + integrity sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg== + dependencies: + "@types/katex" "^0.16.0" + devlop "^1.0.0" + katex "^0.16.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-destination@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz#8fef8e0f7081f0474fbdd92deb50c990a0264639" + integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-label@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz#5267efa97f1e5254efc7f20b459a38cb21058ba1" + integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg== + dependencies: + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz#36d0212e962b2b3121f8525fc7a3c7c029f334fc" + integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-title@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz#237e4aa5d58a95863f01032d9ee9b090f1de6e94" + integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz#06b26b2983c4d27bfcc657b33e25134d4868b0b1" + integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ== + dependencies: + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-character@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz#2f987831a40d4c510ac261e89852c4e9703ccda6" + integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== + dependencies: + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-chunked@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz#47fbcd93471a3fccab86cff03847fc3552db1051" + integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-classify-character@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz#d399faf9c45ca14c8b4be98b1ea481bced87b629" + integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-combine-extensions@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz#2a0f490ab08bff5cc2fd5eec6dd0ca04f89b30a9" + integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg== + dependencies: + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz#fcf15b660979388e6f118cdb6bf7d79d73d26fe5" + integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-encode@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz#0d51d1c095551cfaac368326963cf55f15f540b8" + integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== + +micromark-util-html-tag-name@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz#e40403096481986b41c106627f98f72d4d10b825" + integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA== + +micromark-util-normalize-identifier@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz#c30d77b2e832acf6526f8bf1aa47bc9c9438c16d" + integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q== + dependencies: + micromark-util-symbol "^2.0.0" + +micromark-util-resolve-all@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz#e1a2d62cdd237230a2ae11839027b19381e31e8b" + integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg== + dependencies: + micromark-util-types "^2.0.0" + +micromark-util-sanitize-uri@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz#ab89789b818a58752b73d6b55238621b7faa8fd7" + integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== + dependencies: + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" + +micromark-util-subtokenize@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" + integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== + dependencies: + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-util-symbol@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz#e5da494e8eb2b071a0d08fb34f6cefec6c0a19b8" + integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== + +micromark-util-types@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" + integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + +micromark-util-types@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" + integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== + +micromark@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" + integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.35: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@~9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8, minimist@~1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz#5121616c77a11c406c3ffa77509e0b77bb267ec3" + integrity sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@0.38.3: + version "0.38.3" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" + integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== + dependencies: + obliterator "^1.6.1" + +mock-fs@^4.14.0: + version "4.14.0" + resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +modify-values@^1.0.0, modify-values@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +module-definition@^3.3.1: + version "3.4.0" + resolved "https://registry.npmjs.org/module-definition/-/module-definition-3.4.0.tgz#953a3861f65df5e43e80487df98bb35b70614c2b" + integrity sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA== + dependencies: + ast-module-types "^3.0.0" + node-source-walk "^4.0.0" + +module-lookup-amd@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/module-lookup-amd/-/module-lookup-amd-7.0.1.tgz#d67c1a93f2ff8e38b8774b99a638e9a4395774b2" + integrity sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ== + dependencies: + commander "^2.8.1" + debug "^4.1.0" + glob "^7.1.6" + requirejs "^2.3.5" + requirejs-config-file "^4.0.0" + +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multimatch@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +nanoid@^3.3.8: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@^0.6.3: + version "0.6.4" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +neo-async@^2.5.0, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +nise@^4.0.4: + version "4.1.0" + resolved "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" + integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers" "^6.0.0" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" + +nise@^6.0.0: + version "6.1.1" + resolved "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" + integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^13.0.1" + "@sinonjs/text-encoding" "^0.7.3" + just-extend "^6.2.0" + path-to-regexp "^8.1.0" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +nock@^13.5.6: + version "13.5.6" + resolved "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" + integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + propagate "^2.0.0" + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.7, node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp@^10.0.0: + version "10.3.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz#1dd1a1a1c6c5c59da1a76aea06a062786b2c8a1a" + integrity sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + tar "^6.2.1" + which "^4.0.0" + +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== + +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +node-source-walk@^4.0.0, node-source-walk@^4.2.0, node-source-walk@^4.2.2: + version "4.3.0" + resolved "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz#8336b56cfed23ac5180fe98f1e3bb6b11fd5317c" + integrity sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA== + dependencies: + "@babel/parser" "^7.0.0" + +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +nopt@^7.0.0, nopt@^7.2.1: + version "7.2.1" + resolved "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0, normalize-package-data@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-package-data@^6.0.0, normalize-package-data@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== + dependencies: + hosted-git-info "^7.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^8.0.0: + version "8.0.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" + integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== + +npm-bundled@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-check-updates@^16: + version "16.14.20" + resolved "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.20.tgz#02c06df77593f5d32e19966b19dddeaca73f69a0" + integrity sha512-sYbIhun4DrjO7NFOTdvs11nCar0etEhZTsEjL47eM0TuiGMhmYughRCxG2SpGRmGAQ7AkwN7bw2lWzoE7q6yOQ== + dependencies: + "@types/semver-utils" "^1.1.1" + chalk "^5.3.0" + cli-table3 "^0.6.3" + commander "^10.0.1" + fast-memoize "^2.5.2" + find-up "5.0.0" + fp-and-or "^0.1.4" + get-stdin "^8.0.0" + globby "^11.0.4" + hosted-git-info "^5.1.0" + ini "^4.1.1" + js-yaml "^4.1.0" + json-parse-helpfulerror "^1.0.3" + jsonlines "^0.1.1" + lodash "^4.17.21" + make-fetch-happen "^11.1.1" + minimatch "^9.0.3" + p-map "^4.0.0" + pacote "15.2.0" + parse-github-url "^1.0.2" + progress "^2.0.3" + prompts-ncu "^3.0.0" + rc-config-loader "^4.1.3" + remote-git-tags "^3.0.0" + rimraf "^5.0.5" + semver "^7.5.4" + semver-utils "^1.1.4" + source-map-support "^0.5.21" + spawn-please "^2.0.2" + strip-ansi "^7.1.0" + strip-json-comments "^5.0.1" + untildify "^4.0.0" + update-notifier "^6.0.2" + +npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@11.0.2: + version "11.0.2" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz#1ef8006c4a9e9204ddde403035f7ff7d718251ca" + integrity sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: + version "11.0.3" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" + integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^8.1.0: + version "8.1.5" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" + +npm-packlist@8.0.2, npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== + dependencies: + ignore-walk "^6.0.4" + +npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" + +npm-pick-manifest@^8.0.0: + version "8.0.2" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + +npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" + integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + +npm-registry-fetch@^14.0.0: + version "14.0.5" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1, npm-registry-fetch@^17.1.0: + version "17.1.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" + integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== + dependencies: + "@npmcli/redact" "^2.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^4.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +nx@20.8.1, "nx@>=17.1.2 < 21", nx@^20: + version "20.8.1" + resolved "https://registry.npmjs.org/nx/-/nx-20.8.1.tgz#f63136b3f7c5a33a3ed1d6145e8507d9bcc77bc0" + integrity sha512-73Uw8YXpsjeLqHSl7NMCmGdCs+8ynPzoNJFWAqVanPETEY9zPd5wevVQmeyzYtNNQU35uj6Os4iUzYunmwnFaA== + dependencies: + "@napi-rs/wasm-runtime" "0.2.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.2" + "@zkochan/js-yaml" "0.0.7" + axios "^1.8.3" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^8.0.1" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + enquirer "~2.3.6" + figures "3.2.0" + flat "^5.0.2" + front-matter "^4.0.2" + ignore "^5.0.4" + jest-diff "^29.4.1" + jsonc-parser "3.2.0" + lines-and-columns "2.0.3" + minimatch "9.0.3" + node-machine-id "1.1.12" + npm-run-path "^4.0.1" + open "^8.4.0" + ora "5.3.0" + resolve.exports "2.0.3" + semver "^7.5.3" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + yaml "^2.6.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nx/nx-darwin-arm64" "20.8.1" + "@nx/nx-darwin-x64" "20.8.1" + "@nx/nx-freebsd-x64" "20.8.1" + "@nx/nx-linux-arm-gnueabihf" "20.8.1" + "@nx/nx-linux-arm64-gnu" "20.8.1" + "@nx/nx-linux-arm64-musl" "20.8.1" + "@nx/nx-linux-x64-gnu" "20.8.1" + "@nx/nx-linux-x64-musl" "20.8.1" + "@nx/nx-win32-arm64-msvc" "20.8.1" + "@nx/nx-win32-x64-msvc" "20.8.1" + +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== + dependencies: + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +obliterator@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" + integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== + +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +oo-ascii-tree@^1.112.0: + version "1.112.0" + resolved "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.112.0.tgz#0a25538f5fd649d5bda4fd730e4bdab5ba4bc9f5" + integrity sha512-qQH4jZSdabcKpwcqvJTi7eQL86UucvMacbaHiiIrOynT8jhTLtKS2ixaXgGlNBMeN9UhFi1wS00Hnxhw9aYLsA== + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map-series@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + +p-map@4.0.0, p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +p-waterfall@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + +pac-proxy-agent@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" + integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.1.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.6" + pac-resolver "^7.0.1" + socks-proxy-agent "^8.0.5" + +pac-resolver@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== + dependencies: + degenerator "^5.0.0" + netmask "^2.0.2" + +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" + +pacote@15.2.0: + version "15.2.0" + resolved "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" + integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^5.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.3.0" + ssri "^10.0.0" + tar "^6.1.11" + +pacote@^18.0.0, pacote@^18.0.6: + version "18.0.6" + resolved "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" + integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^8.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^17.0.0" + proc-log "^4.0.0" + promise-retry "^2.0.1" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + +parse-entities@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz#61d46f5ed28e4ee62e9ddc43d6b010188443f159" + integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw== + dependencies: + "@types/unist" "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + +parse-github-url@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz#2ab55642c8685b63fbe2a196f5abe4ae9bd68abc" + integrity sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww== + +parse-imports-exports@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz#e3fb3b5e264cfb55c25b5dfcbe7f410f8dc4e7af" + integrity sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ== + dependencies: + parse-statements "1.0.11" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + +parse-path@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz#41fb513cb122831807a4c7b29c8727947a09d8c6" + integrity sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw== + dependencies: + protocols "^2.0.0" + +parse-statements@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz#8787c5d383ae5746568571614be72b0689584344" + integrity sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA== + +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +path-equal@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/path-equal/-/path-equal-1.2.5.tgz#9fcbdd5e5daee448e96f43f3bac06c666b5e982a" + integrity sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1, path-scurry@^1.6.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== + dependencies: + isarray "0.0.1" + +path-to-regexp@^8.1.0: + version "8.2.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" + integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@4.0.2, picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.4, pirates@^4.0.6: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +postcss-selector-parser@^6.0.10: + version "6.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-values-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-5.0.0.tgz#10c61ac3f488e4de25746b829ea8d8894e9ac3d2" + integrity sha512-2viDDjMMrt21W2izbeiJxl3kFuD/+asgB0CBwPEgSyhCmBnDIa/y+pLaoyX+q3I3DHH0oPPL3cgjVTQvlS1Maw== + dependencies: + color-name "^1.1.4" + is-url-superb "^4.0.0" + quote-unquote "^1.0.0" + +postcss@^8.1.7, postcss@^8.4.6: + version "8.5.3" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" + integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +precinct@^8.0.0, precinct@^8.1.0: + version "8.3.1" + resolved "https://registry.npmjs.org/precinct/-/precinct-8.3.1.tgz#94b99b623df144eed1ce40e0801c86078466f0dc" + integrity sha512-pVppfMWLp2wF68rwHqBIpPBYY8Kd12lDhk8LVQzOwqllifVR15qNFyod43YLyFpurKRZQKnE7E4pofAagDOm2Q== + dependencies: + commander "^2.20.3" + debug "^4.3.3" + detective-amd "^3.1.0" + detective-cjs "^3.1.1" + detective-es6 "^2.2.1" + detective-less "^1.0.2" + detective-postcss "^4.0.0" + detective-sass "^3.0.1" + detective-scss "^2.0.1" + detective-stylus "^1.0.0" + detective-typescript "^7.0.0" + module-definition "^3.3.1" + node-source-walk "^4.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-on-spawn@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz#9d5999ba87b3bf0a8acb05322d69f2f5aa4fb763" + integrity sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q== + dependencies: + fromentries "^1.2.0" + +proggy@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" + integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" + integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prompts-ncu@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.2.tgz#ffaf0388a7853f9f3e1caff51ece7828faaf62d6" + integrity sha512-BthHeqP0vwvZPk3ZmqZXhssNabxM60aBCbg/gQdxF8bQW/dy6ZGQpS8SG10bUQTMy5HKh34iI0g0TstCRZyjag== + dependencies: + kleur "^4.0.1" + sisteransi "^1.0.5" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +promzard@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/promzard/-/promzard-1.0.2.tgz#2226e7c6508b1da3471008ae17066a7c3251e660" + integrity sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ== + dependencies: + read "^3.0.1" + +propagate@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.2.tgz#822e8fcdcb3df5356538b3e91bfd890b067fd0a4" + integrity sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ== + +proxy-agent@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" + integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.6" + lru-cache "^7.14.1" + pac-proxy-agent "^7.1.0" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^2.1.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz#f15610274376bbcc70c9a3aa8b505ea23f41c579" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== + dependencies: + escape-goat "^4.0.0" + +pure-rand@^6.0.0, pure-rand@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + +q@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +quote-unquote@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" + integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== + +rc-config-loader@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz#1352986b8a2d8d96d6fd054a5bb19a60c576876a" + integrity sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w== + dependencies: + debug "^4.3.4" + js-yaml "^4.1.0" + json5 "^2.2.2" + require-from-string "^2.0.2" + +rc@1.2.8, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +read-cmd-shim@4.0.0, read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + integrity sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ== + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-package-json@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-json@^6.0.0: + version "6.0.4" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" + integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== + dependencies: + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +read@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/read/-/read-3.0.1.tgz#926808f0f7c83fa95f1ef33c0e2c09dbb28fd192" + integrity sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw== + dependencies: + mute-stream "^1.0.0" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +recast@^0.23.1: + version "0.23.11" + resolved "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz#8885570bb28cf773ba1dc600da7f502f7883f73f" + integrity sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA== + dependencies: + ast-types "^0.16.1" + esprima "~4.0.0" + source-map "~0.6.1" + tiny-invariant "^1.3.3" + tslib "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + +regexp.prototype.flags@^1.5.3: + version "1.5.4" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + +registry-auth-token@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" + integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== + dependencies: + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz#056d9343680f2f64400032b1e199faa692286c58" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== + dependencies: + es6-error "^4.0.1" + +remote-git-tags@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz#424f8ec2cdea00bb5af1784a49190f25e16983c3" + integrity sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w== + +remove-markdown@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.2.2.tgz#66b0ceeba9fb77ca9636bb1b0307ce21a32a12a6" + integrity sha512-jwgEf3Yh/xi4WodWi/vPlasa9C9pMv1kz5ITOIAGjBW7PeZ/CHZCdBfJzQnn2VX2cBvf1xCuJv0tUJqn/FCMNA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requirejs-config-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" + integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== + dependencies: + esprima "^4.0.0" + stringify-object "^3.2.1" + +requirejs@^2.3.5: + version "2.3.7" + resolved "https://registry.npmjs.org/requirejs/-/requirejs-2.3.7.tgz#0b22032e51a967900e0ae9f32762c23a87036bd0" + integrity sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw== + +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dependency-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz#11700e340717b865d216c66cabeb4a2a3c696736" + integrity sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w== + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve.exports@2.0.3, resolve.exports@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.21.0, resolve@^1.22.0, resolve@^1.22.4: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rfdc@^1.3.0: + version "1.4.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-con@~1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz#755860a10ce326a96b509485fcea50b4d03754e8" + integrity sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg== + dependencies: + deep-extend "^0.6.0" + ini "~4.1.0" + minimist "^1.2.8" + strip-json-comments "~3.1.1" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.8.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-json-stringify@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-lookup@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/sass-lookup/-/sass-lookup-3.0.0.tgz#3b395fa40569738ce857bc258e04df2617c48cac" + integrity sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg== + dependencies: + commander "^2.16.0" + +sax@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== + +sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz#3afcf5ed6d62259f5c72d0d5d50dffbdc9680df5" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +semver-intersect@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.5.0.tgz#bb3aa0ea504935410d34cf15f49818d56906bd48" + integrity sha512-BDjWX7yCC0haX4W/zrnV2JaMpVirwaEkGOBmgRQtH++F1N3xl9v7k9H44xfTqwl+yLNNSbMKosoVSTIiJVQ2Pw== + dependencies: + semver "^6.3.0" + +semver-utils@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" + integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== + +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.1.1, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: + version "7.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +shlex@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/shlex/-/shlex-2.1.2.tgz#5b5384d603885281c1dee05d56975865edddcba0" + integrity sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^1.3.0: + version "1.9.0" + resolved "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" + integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/sign" "^1.0.0" + "@sigstore/tuf" "^1.0.3" + make-fetch-happen "^11.0.1" + +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sinon@^18.0.1: + version "18.0.1" + resolved "https://registry.npmjs.org/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" + integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" + +sinon@^9.2.4: + version "9.2.4" + resolved "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" + integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg== + dependencies: + "@sinonjs/commons" "^1.8.1" + "@sinonjs/fake-timers" "^6.0.1" + "@sinonjs/samsam" "^5.3.1" + diff "^4.0.2" + nise "^4.0.4" + supports-color "^7.1.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@3.0.0, slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slide@~1.1.3: + version "1.1.6" + resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +smol-toml@~1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz#4ec76e0e709f586bc50ba30eb79024173c2b2221" + integrity sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA== + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks-proxy-agent@^8.0.3, socks-proxy-agent@^8.0.5: + version "8.0.5" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.6.2, socks@^2.8.3: + version "2.8.4" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" + integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +sort-json@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/sort-json/-/sort-json-2.0.1.tgz#7338783bef807185dc37d5b02e3afd905d537cfb" + integrity sha512-s8cs2bcsQCzo/P2T/uoU6Js4dS/jnX8+4xunziNoq9qmSpZNCrRIAIvp4avsz0ST18HycV4z/7myJ7jsHWB2XQ== + dependencies: + detect-indent "^5.0.0" + detect-newline "^2.1.0" + minimist "^1.2.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" + integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== + dependencies: + is-plain-obj "^2.0.0" + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.16, source-map-support@^0.5.21: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-please@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz#41912d82fe9504dd5a5424d2b4834e9a6cea56e0" + integrity sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw== + dependencies: + cross-spawn "^7.0.3" + +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + +spdx-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz#2c55f117362078d7409e6d7b08ce70a857cd3ed7" + integrity sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A== + dependencies: + array-find-index "^1.0.2" + spdx-expression-parse "^3.0.0" + spdx-ranges "^2.0.0" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.21" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== + +spdx-license-list@^6.10.0, spdx-license-list@^6.9.0: + version "6.10.0" + resolved "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.10.0.tgz#738249443db42f5fd6780c7c40daecefed7a3adf" + integrity sha512-wF3RhDFoqdu14d1Prv6c8aNU0FSRuSFJpNjWeygIZcNZEwPxp7I5/Hwo8j6lSkBKWAIkSQrKefrC5N0lvOP0Gw== + +spdx-ranges@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" + integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA== + +spdx-satisfies@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz#9a09a68d80f5f1a31cfaebb384b0c6009e4969fe" + integrity sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA== + dependencies: + spdx-compare "^1.0.0" + spdx-expression-parse "^3.0.0" + spdx-ranges "^2.0.0" + +split2@^3.0.0, split2@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +split@^1.0.0, split@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^10.0.0, ssri@^10.0.6: + version "10.0.6" + resolved "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +standard-version@^9, standard-version@^9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/standard-version/-/standard-version-9.5.0.tgz#851d6dcddf5320d5079601832aeb185dbf497949" + integrity sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q== + dependencies: + chalk "^2.4.2" + conventional-changelog "3.1.25" + conventional-changelog-config-spec "2.1.0" + conventional-changelog-conventionalcommits "4.6.3" + conventional-recommended-bump "6.1.0" + detect-indent "^6.0.0" + detect-newline "^3.1.0" + dotgitignore "^2.1.0" + figures "^3.1.0" + find-up "^5.0.0" + git-semver-tags "^4.0.0" + semver "^7.1.1" + stringify-package "^1.0.1" + yargs "^16.0.0" + +stream-chain@^2.2.5: + version "2.2.5" + resolved "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + +stream-json@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" + integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== + dependencies: + stream-chain "^2.2.5" + +streamroller@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" + integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + fs-extra "^8.1.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^1.0.1, "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, string-width@^5.0.1, string-width@^5.1.2: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + +string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz#0d8b7d01b23848ed7dbdf4baaaa31a8250d8cfa0" + integrity sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.1.2" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" + integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== + +strong-log-transformer@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + +stylus-lookup@^3.0.1: + version "3.0.2" + resolved "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-3.0.2.tgz#c9eca3ff799691020f30b382260a67355fefdddd" + integrity sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg== + dependencies: + commander "^2.8.1" + debug "^4.1.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +table@^6.9.0: + version "6.9.0" + resolved "https://registry.npmjs.org/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@6.2.1, tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +temp@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz#671ad63d57be0fe9d7294664b3fc400636678a60" + integrity sha512-IsFisGgDKk7qzK9erMIkQe/XwiSUdac7z3wYOsjcLkhPBy3k1SlvLoIh2dAHIlEpgA971CgguMrx9z8fFg7tSA== + +tempfile@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz#5376a3492de7c54150d0cc0612c3f00e2cdaf76c" + integrity sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw== + dependencies: + temp-dir "^2.0.0" + uuid "^3.3.2" + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-invariant@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" + integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== + +tinyglobby@^0.2.9: + version "0.2.13" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz#a0e46515ce6cbcd65331537e57484af5a7b2ff7e" + integrity sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw== + dependencies: + fdir "^6.4.4" + picomatch "^4.0.2" + +tinyrainbow@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz#9509b2162436315e80e3eee0fcce4474d2444294" + integrity sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw== + +tinyspy@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@~0.2.1: + version "0.2.3" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeify@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + +ts-jest@^29, ts-jest@^29.3.2: + version "29.3.2" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb" + integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.7.1" + type-fest "^4.39.1" + yargs-parser "^21.1.1" + +ts-mock-imports@^1.3.16: + version "1.3.16" + resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" + integrity sha512-BJ3SShPRHcMC9IzW1iFk7h1I4/nkzetB8w0LQySC4Ly14vVKpBr0NOIX8gjLM9I9mo9JViFqlctX0dGWW2iyhA== + +ts-morph@~24.0.0: + version "24.0.0" + resolved "https://registry.npmjs.org/ts-morph/-/ts-morph-24.0.0.tgz#6249b526ade40cf99c8803e7abdae6c65882e58e" + integrity sha512-2OAOg/Ob5yx9Et7ZX4CvTCc0UFoZHwLEJ+dpDPSUi5TgwwlTlX47w+iFRrEwzUZwYACjq83cgjS/Da50Ga37uw== + dependencies: + "@ts-morph/common" "~0.25.0" + code-block-writer "^13.0.3" + +ts-node@^10.9.1, ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.10.1, tsconfig-paths@^3.14.1, tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tuf-js@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" + integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== + dependencies: + "@tufjs/models" "1.0.4" + debug "^4.3.4" + make-fetch-happen "^11.1.1" + +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + dependencies: + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" + +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-detect@^4.0.8, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.0, type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0: + version "2.19.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-fest@^4.39.1: + version "4.41.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" + integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript-json-schema@^0.65.1: + version "0.65.1" + resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.65.1.tgz#24840812f69b220b75d86ed87e220b3b3345db2c" + integrity sha512-tuGH7ff2jPaUYi6as3lHyHcKpSmXIqN7/mu50x3HlYn0EHzLpmt3nplZ7EuhUkO0eqDRc9GqWNkfjgBPIS9kxg== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/node" "^18.11.9" + glob "^7.1.7" + path-equal "^1.2.5" + safe-stable-stringify "^2.2.0" + ts-node "^10.9.1" + typescript "~5.5.0" + yargs "^17.1.1" + +"typescript@>=3 < 6": + version "5.8.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + +typescript@^3.9.10, typescript@^3.9.5, typescript@^3.9.7: + version "3.9.10" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + +typescript@next: + version "5.9.0-dev.20250508" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.0-dev.20250508.tgz#eafb385ae4da47a02b92a20a3d92605907a3c3ab" + integrity sha512-vTtyza+uNzjJO/NgvQxsZkopsalnGdtipQo/lz2rdJ4i+wOdWQuOZxGgaUa2Fi8vj/4Xp6chlfpisgOI3mxvOQ== + +typescript@~5.4: + version "5.4.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +typescript@~5.5.0, typescript@~5.5.4: + version "5.5.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + +typescript@~5.7: + version "5.7.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" + integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici@^5.25.4: + version "5.29.0" + resolved "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== + dependencies: + "@fastify/busboy" "^2.0.0" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + +universal-user-agent@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +upath@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +update-notifier@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" + integrity sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og== + dependencies: + boxen "^7.0.0" + chalk "^5.0.1" + configstore "^6.0.0" + has-yarn "^3.0.0" + import-lazy "^4.0.0" + is-ci "^3.0.1" + is-installed-globally "^0.4.0" + is-npm "^6.0.0" + is-yarn-global "^0.4.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.3.7" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA== + +util@^0.12.4: + version "0.12.5" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utility-types@^3.10.0: + version "3.11.0" + resolved "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== + +uuid@8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" + integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== + +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + +uuid@^3.3.2, uuid@^3.3.3: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@5.0.1, validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +vandium-utils@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/vandium-utils/-/vandium-utils-1.2.0.tgz#44735de4b7641a05de59ebe945f174e582db4f59" + integrity sha512-yxYUDZz4BNo0CW/z5w4mvclitt5zolY7zjW97i6tTE+sU63cxYs1A6Bl9+jtIQa3+0hkeqY87k+7ptRvmeHe3g== + +vandium-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/vandium-utils/-/vandium-utils-2.0.0.tgz#87389bdcb85551aaaba1cc95937ba756589214fa" + integrity sha512-XWbQ/0H03TpYDXk8sLScBEZpE7TbA0CHDL6/Xjt37IBYKLsHUQuBlL44ttAUs9zoBOLFxsW7HehXcuWCNyqOxQ== + +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== + +walkdir@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" + integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.0, wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.2: + version "1.1.19" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + +which@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +wide-align@1.1.5, wide-align@^1.1.0, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + +winston-transport@^4.9.0: + version "4.9.0" + resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" + integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== + dependencies: + logform "^2.7.0" + readable-stream "^3.6.2" + triple-beam "^1.3.0" + +winston@^3.7.2: + version "3.17.0" + resolved "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423" + integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw== + dependencies: + "@colors/colors" "^1.6.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.7.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.9.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@5.0.1, write-file-atomic@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-json-file@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" + integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== + dependencies: + detect-indent "^6.0.0" + graceful-fs "^4.1.15" + is-plain-obj "^2.0.0" + make-dir "^3.0.0" + sort-keys "^4.0.0" + write-file-atomic "^3.0.0" + +write-pkg@4.0.0, write-pkg@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +xml2js@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@1.10.2, yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@2.7.1, yaml@^2.6.0: + version "2.7.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6" + integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ== + +yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@17.7.2, yargs@^17.1.1, yargs@^17.3.1, yargs@^17.5.1, yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^15.0.2: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^16.0.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== \ No newline at end of file From 5131ac0cc196a965f2c7ea78d50044086a8ebbbe Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 12:06:43 -0400 Subject: [PATCH 24/39] fix(bedrockl2): restore yarn.lock from main branch --- yarn.lock | 248 +++++++++++++++++++++++++++--------------------------- 1 file changed, 124 insertions(+), 124 deletions(-) diff --git a/yarn.lock b/yarn.lock index aa53795826c03..3d7667702827e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,10 +48,10 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@aws-cdk/asset-awscli-v1@2.2.229": - version "2.2.229" - resolved "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.229.tgz#39bf5b70f1e1334031d1333ba42fe755cacbb441" - integrity sha512-apNt/Sfty7Jwi1+6hrZaQeVisqnJAW4+uQZI55VPKtBqjTFEsKPBc/KZDx9Tlw8Ii1yWrS3HNzLNGxpTXae8XQ== +"@aws-cdk/asset-awscli-v1@2.2.236": + version "2.2.236" + resolved "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.236.tgz#623311a61c9bc8c4571d000235b7efdba09f9168" + integrity sha512-BjqQVGYsVuS4VXdrezDapSd6P7soEdWJoXl1S8X7l0uLtVX9WvpmCylZKOJDrJblK5MNe1Vq9wUI91LBzzOi8A== "@aws-cdk/asset-node-proxy-agent-v6@^2.1.0": version "2.1.0" @@ -61,12 +61,12 @@ "@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": version "0.0.0" -"@aws-cdk/aws-service-spec@0.1.71", "@aws-cdk/aws-service-spec@^0.1.71": - version "0.1.71" - resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.71.tgz#8ebc0e428c588bd362bc46abd372c91a1e5e1370" - integrity sha512-tSDXj6tdy+k1whXJppJH3ireaP57H6ENYPyLscevT6EesdETzwm0kLJdzykcRGAUl0lDrEoIqRpylceN6wKSOQ== +"@aws-cdk/aws-service-spec@0.1.72", "@aws-cdk/aws-service-spec@^0.1.72": + version "0.1.72" + resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.72.tgz#e8bc6612656bac42ed3c891cca7c356afaefb778" + integrity sha512-DvRPSYzH13B4VTtGuDIpYf2mQ+Wf9jP299VqvpZgEQwrlL5LeY0Kr0biGo+Yv9M8exB0UE/Dgm9gQoubJFYyhw== dependencies: - "@aws-cdk/service-spec-types" "^0.0.137" + "@aws-cdk/service-spec-types" "^0.0.138" "@cdklabs/tskb" "^0.0.3" "@aws-cdk/cloud-assembly-schema@^41.2.0": @@ -77,13 +77,13 @@ jsonschema "~1.4.1" semver "^7.7.1" -"@aws-cdk/integ-runner@^2.186.6": - version "2.186.6" - resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.6.tgz#884dca050010b34cfd8bbfd34a9e164dbf24d36b" - integrity sha512-5Yf0qPFRTaMP/Anl+O78vlmh+pt+DI3pchiIQmSGKDG4jGCGFvthDegsEZjEFyYroItMTgmwCVDRdB7dDycN9A== +"@aws-cdk/integ-runner@^2.186.7": + version "2.186.7" + resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.7.tgz#b70f64a56dd2dcca00df8124d036ed2c86c06aa9" + integrity sha512-13wOsBnTTzx+0MV5tjCiztRfWpAqkl23hMq5r1Dq+Zuu8bx0nuSDgXJ1aQIrV0vXYMeaRzxWPWALuZtNu4tI5g== dependencies: - "@aws-cdk/aws-service-spec" "0.1.71" - aws-cdk "2.1014.0" + "@aws-cdk/aws-service-spec" "0.1.72" + aws-cdk "2.1015.0" optionalDependencies: fsevents "2.3.2" @@ -112,12 +112,12 @@ resolved "https://registry.npmjs.org/@aws-cdk/lambda-layer-kubectl-v32/-/lambda-layer-kubectl-v32-2.1.0.tgz#6b9beb4b6b09af74ec48f0c778e50732d7bbb54b" integrity sha512-a+zvCLapTg8R0P/Nrecc8mKV+ZgAwvkndn4/zlb43e14zRlc4/ozvmeghUT2eoyyaWJv+PwqgWohEXXec3kpSw== -"@aws-cdk/service-spec-importers@^0.0.78": - version "0.0.78" - resolved "https://registry.npmjs.org/@aws-cdk/service-spec-importers/-/service-spec-importers-0.0.78.tgz#344e7b10965d95c2793c15233fa6d2cf8d4456c9" - integrity sha512-mua9t4ZFzu9oeRA1UTu1bzGR9CHR4FazhM4Ik0HS7yUGz3rT43eL9VxkecMGqrU8e8gSLa44xzJn0m+DWyq+Sw== +"@aws-cdk/service-spec-importers@^0.0.79": + version "0.0.79" + resolved "https://registry.npmjs.org/@aws-cdk/service-spec-importers/-/service-spec-importers-0.0.79.tgz#5ed813f18d8c2edf0d22cfd63b7856bca522e49e" + integrity sha512-P/5hgMEFKehI8HW9ZhpMBHi8urqeSkVegjjWqb7CtqXg1n0lRrJQa95QOcQIZL7c7BKmPCqCSfhLGRSDew2VgQ== dependencies: - "@aws-cdk/service-spec-types" "^0.0.137" + "@aws-cdk/service-spec-types" "^0.0.138" "@cdklabs/tskb" "^0.0.3" ajv "^6" canonicalize "^2.1.0" @@ -128,10 +128,10 @@ glob "^8" sort-json "^2.0.1" -"@aws-cdk/service-spec-types@^0.0.137": - version "0.0.137" - resolved "https://registry.npmjs.org/@aws-cdk/service-spec-types/-/service-spec-types-0.0.137.tgz#b953ac8d636d89c6986d94a0887c8e77c89981bd" - integrity sha512-hOCLfa4Gid4Gh3cl4Kgxe2tOqcMKJrhTRuOJ4XFfeKELGG6EYCdG3fVlCthP3WncvSls+X5gfoKolnLhH0SIIw== +"@aws-cdk/service-spec-types@^0.0.138": + version "0.0.138" + resolved "https://registry.npmjs.org/@aws-cdk/service-spec-types/-/service-spec-types-0.0.138.tgz#4e19c280c1f705a3813325410b26e9d47ea24b91" + integrity sha512-II9zZ1XEAEnLhODnItDnS92na1qp8eexSml8hOa2KhM4CkVdeq4SopWKRv5/uU4CfxRBvkfq3rciR+i2rpu8PA== dependencies: "@cdklabs/tskb" "^0.0.3" @@ -4656,9 +4656,9 @@ form-data "^4.0.0" "@types/node@*": - version "22.15.17" - resolved "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" - integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== + version "22.15.18" + resolved "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz#2f8240f7e932f571c2d45f555ba0b6c3f7a75963" + integrity sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg== dependencies: undici-types "~6.21.0" @@ -4761,46 +4761,46 @@ integrity sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q== "@typescript-eslint/eslint-plugin@^8": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.0.tgz#86630dd3084f9d6c4239bbcd6a7ee1a7ee844f7f" - integrity sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ== + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz#9185b3eaa3b083d8318910e12d56c68b3c4f45b4" + integrity sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/type-utils" "8.32.0" - "@typescript-eslint/utils" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/scope-manager" "8.32.1" + "@typescript-eslint/type-utils" "8.32.1" + "@typescript-eslint/utils" "8.32.1" + "@typescript-eslint/visitor-keys" "8.32.1" graphemer "^1.4.0" - ignore "^5.3.1" + ignore "^7.0.0" natural-compare "^1.4.0" ts-api-utils "^2.1.0" "@typescript-eslint/parser@^8": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.0.tgz#fe840ecb2726a82fa9f5562837ec40503ae71caf" - integrity sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A== - dependencies: - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/typescript-estree" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz#18b0e53315e0bc22b2619d398ae49a968370935e" + integrity sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg== + dependencies: + "@typescript-eslint/scope-manager" "8.32.1" + "@typescript-eslint/types" "8.32.1" + "@typescript-eslint/typescript-estree" "8.32.1" + "@typescript-eslint/visitor-keys" "8.32.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.32.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.0.tgz#6be89f652780f0d3d19d58dc0ee107b1a9e3282c" - integrity sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ== +"@typescript-eslint/scope-manager@8.32.1": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz#9a6bf5fb2c5380e14fe9d38ccac6e4bbe17e8afc" + integrity sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA== dependencies: - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/types" "8.32.1" + "@typescript-eslint/visitor-keys" "8.32.1" -"@typescript-eslint/type-utils@8.32.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.0.tgz#5e0882393e801963f749bea38888e716045fe895" - integrity sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg== +"@typescript-eslint/type-utils@8.32.1": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz#b9292a45f69ecdb7db74d1696e57d1a89514d21e" + integrity sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA== dependencies: - "@typescript-eslint/typescript-estree" "8.32.0" - "@typescript-eslint/utils" "8.32.0" + "@typescript-eslint/typescript-estree" "8.32.1" + "@typescript-eslint/utils" "8.32.1" debug "^4.3.4" ts-api-utils "^2.1.0" @@ -4809,18 +4809,18 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/types@8.32.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.0.tgz#a4a66b8876b8391970cf069b49572e43f1fc957a" - integrity sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA== +"@typescript-eslint/types@8.32.1": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz#b19fe4ac0dc08317bae0ce9ec1168123576c1d4b" + integrity sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg== -"@typescript-eslint/typescript-estree@8.32.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.0.tgz#11d45f47bfabb141206a3da6c7b91a9d869ff32d" - integrity sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ== +"@typescript-eslint/typescript-estree@8.32.1": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz#9023720ca4ecf4f59c275a05b5fed69b1276face" + integrity sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg== dependencies: - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/visitor-keys" "8.32.0" + "@typescript-eslint/types" "8.32.1" + "@typescript-eslint/visitor-keys" "8.32.1" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -4841,15 +4841,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@8.32.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.0.tgz#24570f68cf845d198b73a7f94ca88d8c2505ba47" - integrity sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw== +"@typescript-eslint/utils@8.32.1", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz#4d6d5d29b9e519e9a85e9a74e9f7bdb58abe9704" + integrity sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.32.0" - "@typescript-eslint/types" "8.32.0" - "@typescript-eslint/typescript-estree" "8.32.0" + "@typescript-eslint/scope-manager" "8.32.1" + "@typescript-eslint/types" "8.32.1" + "@typescript-eslint/typescript-estree" "8.32.1" "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" @@ -4859,12 +4859,12 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@8.32.0": - version "8.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.0.tgz#0cca2cac046bc71cc40ce8214bac2850d6ecf4a6" - integrity sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w== +"@typescript-eslint/visitor-keys@8.32.1": + version "8.32.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz#4321395cc55c2eb46036cbbb03e101994d11ddca" + integrity sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w== dependencies: - "@typescript-eslint/types" "8.32.0" + "@typescript-eslint/types" "8.32.1" eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.2.0": @@ -5315,10 +5315,10 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -aws-cdk@2.1014.0: - version "2.1014.0" - resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1014.0.tgz#bd27af4060df15a05836a7ed3d19861e10740fd7" - integrity sha512-es101rtRAClix9BncNL54iW90MiOyRv4iCC5tv/firGDnidS6pPinuK0IIFt0RO6w0+3heRxWBXg8HY+f9877w== +aws-cdk@2.1015.0: + version "2.1015.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1015.0.tgz#fda8c4c7fca90ae42aa23a44b28cf1c4c963dd85" + integrity sha512-txd+yMVVybtLfiwT409+fahbP0SkiwhmQvQf6PVVYnWzDPSknxYlUNJHisHV4tJEcbHWn1QPsLmqqMT0bw8hBg== optionalDependencies: fsevents "2.3.2" @@ -5766,9 +5766,9 @@ camelcase@^7.0.1: integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-lite@^1.0.30001716: - version "1.0.30001717" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129" - integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw== + version "1.0.30001718" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz#dae13a9c80d517c30c6197515a96131c194d8f82" + integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== canonicalize@^2.1.0: version "2.1.0" @@ -5807,10 +5807,10 @@ cdk8s-plus-27@2.9.5: optionalDependencies: backport "8.5.0" -cdk8s@2.69.67: - version "2.69.67" - resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.69.67.tgz#662fdcdbd170d3c2ec15d573018020f8e8c5c2cd" - integrity sha512-nODVEYkSUrfig6pCyfrb/bdxP81ujopzL1AjDazeseS3CuwklhC+dFeO4QoHN5Xqs0hBsr9+mRDz/MpR9u96dA== +cdk8s@2.69.68: + version "2.69.68" + resolved "https://registry.npmjs.org/cdk8s/-/cdk8s-2.69.68.tgz#fae5cec13f1f1eba4a75110201430a1519c457fa" + integrity sha512-MnmTZgBTuhaeGmAVbf3o/go3bOQc7TtcEOesY/jA/ZvjJgNxK6NVpFw51m7fNI6XX7bIUlRSIFY2TGSa+1RKhg== dependencies: fast-json-patch "^3.1.1" follow-redirects "^1.15.9" @@ -6623,9 +6623,9 @@ dateformat@^3.0.0, dateformat@^3.0.3: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6: - version "4.4.0" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + version "4.4.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" @@ -7052,9 +7052,9 @@ ejs@^3.1.10, ejs@^3.1.7: jake "^10.8.5" electron-to-chromium@^1.5.149: - version "1.5.151" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz#5edd6c17e1b2f14b4662c41b9379f96cc8c2bb7c" - integrity sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA== + version "1.5.152" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.152.tgz#bcdd39567e291b930ec26b930031137a05593695" + integrity sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg== emittery@^0.13.1: version "0.13.1" @@ -7363,10 +7363,10 @@ eslint-plugin-jest@^28: dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" -eslint-plugin-jsdoc@^50.6.11: - version "50.6.11" - resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz#36733620dafe03e8666df4cff449c7e9a8e1b1da" - integrity sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg== +eslint-plugin-jsdoc@^50.6.16: + version "50.6.16" + resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.16.tgz#c9fb8f210ab1d71e00a912dc82d3081889bf4e26" + integrity sha512-ETSMHywJLQtVWDOf11Jk5swDA7Q85HeohDNtPe50OWR/Y0AxdxuNCdqEw2wXewGFV7MPk7E4foqYQydn3b6Auw== dependencies: "@es-joy/jsdoccomment" "~0.49.0" are-docs-informative "^0.0.2" @@ -7767,9 +7767,9 @@ flatten@^1.0.2: integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== flow-parser@0.*: - version "0.269.1" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.269.1.tgz#92067f8100d89a84433c656eb59c5b92e4036eb9" - integrity sha512-2Yr0kqvT7RwaGL192nT78O5AWJeECQjl0NEzBkMsx8OJt63BvNl5yvSIbE4qZ1VDSjEkhbUgaWYdwX354bVNjw== + version "0.270.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.270.0.tgz#fe9aa283f86585feaa133a34c409927d88ef549f" + integrity sha512-WjU6NZjaENlHjiO6eGyfAbuk0OC5XkKoN+XCY2g1nDDW230smGGxI9Ltp0qJdj0+ae2MrO1fwwn3vOupv9R+Xw== fn.name@1.x.x: version "1.1.0" @@ -8414,9 +8414,9 @@ html-escaper@^2.0.0: integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + version "4.2.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-proxy-agent@^5.0.0: version "5.0.0" @@ -8502,12 +8502,12 @@ ignore-walk@^6.0.0, ignore-walk@^6.0.4: dependencies: minimatch "^9.0.0" -ignore@^5.0.4, ignore@^5.2.0, ignore@^5.3.1, ignore@^5.3.2: +ignore@^5.0.4, ignore@^5.2.0, ignore@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -ignore@~7.0.3: +ignore@^7.0.0, ignore@~7.0.3: version "7.0.4" resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078" integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A== @@ -12820,10 +12820,10 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1: - version "7.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.1, semver@^7.7.2: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== sentence-case@^3.0.4: version "3.0.4" @@ -13701,10 +13701,10 @@ ts-api-utils@^2.1.0: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== -ts-jest@^29, ts-jest@^29.3.2: - version "29.3.2" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb" - integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug== +ts-jest@^29, ts-jest@^29.3.3: + version "29.3.3" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.3.tgz#c24c31a9d12268f88899e3eeb05912cab42c574c" + integrity sha512-y6jLm19SL4GroiBmHwFK4dSHUfDNmOrJbRfp6QmDIlI9p5tT5Q8ItccB4pTIslCIqOZuQnBwpTR0bQ5eUMYwkw== dependencies: bs-logger "^0.2.6" ejs "^3.1.10" @@ -13713,14 +13713,14 @@ ts-jest@^29, ts-jest@^29.3.2: json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" - semver "^7.7.1" - type-fest "^4.39.1" + semver "^7.7.2" + type-fest "^4.41.0" yargs-parser "^21.1.1" -ts-mock-imports@^1.3.16: - version "1.3.16" - resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.16.tgz#7d817cf9694daafffaae8592172b128af709cfae" - integrity sha512-BJ3SShPRHcMC9IzW1iFk7h1I4/nkzetB8w0LQySC4Ly14vVKpBr0NOIX8gjLM9I9mo9JViFqlctX0dGWW2iyhA== +ts-mock-imports@^1.3.17: + version "1.3.17" + resolved "https://registry.npmjs.org/ts-mock-imports/-/ts-mock-imports-1.3.17.tgz#aabc5da7ec811e899530e32c90fba7fa9db10531" + integrity sha512-P2B9AzoA93/DRcSruu/nJIvmK6r3I/Zy3oLKj1PaPrErnYfa4NOCriqQIje/hQb9HK5wD76af35uPpBenUJcFw== ts-morph@~24.0.0: version "24.0.0" @@ -13865,7 +13865,7 @@ type-fest@^2.13.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^4.39.1: +type-fest@^4.41.0: version "4.41.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58" integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA== @@ -13952,9 +13952,9 @@ typescript@^3.9.10, typescript@^3.9.5, typescript@^3.9.7: integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== typescript@next: - version "5.9.0-dev.20250508" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.0-dev.20250508.tgz#eafb385ae4da47a02b92a20a3d92605907a3c3ab" - integrity sha512-vTtyza+uNzjJO/NgvQxsZkopsalnGdtipQo/lz2rdJ4i+wOdWQuOZxGgaUa2Fi8vj/4Xp6chlfpisgOI3mxvOQ== + version "5.9.0-dev.20250514" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.0-dev.20250514.tgz#bd8313497cdfa17784120f4b89a898ac49545c53" + integrity sha512-2Bhj07DXRUMlAkyaw0/v+hsvGQZw59uwEtiIr32rZwcXmPYlCgRLquIO4bSTdD79yE2fhI9oyOmxtZPLeMer/Q== typescript@~5.4: version "5.4.5" From 740b2e3793e7d0075551611ee06bf3132744159d Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 13:24:34 -0400 Subject: [PATCH 25/39] fix(bedrockl2): fix build issues --- yarn.lock | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3d7667702827e..6814b5f93e000 100644 --- a/yarn.lock +++ b/yarn.lock @@ -61,6 +61,9 @@ "@aws-cdk/aws-bedrock-alpha@file:packages/@aws-cdk/aws-bedrock-alpha": version "0.0.0" +"@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": + version "0.0.0" + "@aws-cdk/aws-service-spec@0.1.72", "@aws-cdk/aws-service-spec@^0.1.72": version "0.1.72" resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.72.tgz#e8bc6612656bac42ed3c891cca7c356afaefb778" @@ -77,7 +80,7 @@ jsonschema "~1.4.1" semver "^7.7.1" -"@aws-cdk/integ-runner@^2.186.7": +"@aws-cdk/integ-runner@^2.186.0", "@aws-cdk/integ-runner@^2.186.7": version "2.186.7" resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.7.tgz#b70f64a56dd2dcca00df8124d036ed2c86c06aa9" integrity sha512-13wOsBnTTzx+0MV5tjCiztRfWpAqkl23hMq5r1Dq+Zuu8bx0nuSDgXJ1aQIrV0vXYMeaRzxWPWALuZtNu4tI5g== @@ -4472,7 +4475,7 @@ dependencies: tslib "^2.4.0" -"@types/aws-lambda@^8.10.149": +"@types/aws-lambda@^8.10.136", "@types/aws-lambda@^8.10.149": version "8.10.149" resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.149.tgz#77c7bde809425546d03626e51bab8181bc5d24c9" integrity sha512-NXSZIhfJjnXqJgtS7IwutqIF/SOy1Wz5Px4gUY1RWITp3AYTyuJS4xaXr/bIJY1v15XMzrJ5soGnPM+7uigZjA== @@ -4667,6 +4670,13 @@ resolved "https://registry.npmjs.org/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d" integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw== +"@types/node@22.7.9": + version "22.7.9" + resolved "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz#2bf2797b5e84702d8262ea2cf843c3c3c880d0e9" + integrity sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg== + dependencies: + undici-types "~6.19.2" + "@types/node@^16": version "16.18.126" resolved "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz#27875faa2926c0f475b39a8bb1e546c0176f8d4b" @@ -5315,6 +5325,13 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-cdk@2.1007.0: + version "2.1007.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" + integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== + optionalDependencies: + fsevents "2.3.2" + aws-cdk@2.1015.0: version "2.1015.0" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1015.0.tgz#fda8c4c7fca90ae42aa23a44b28cf1c4c963dd85" @@ -5798,6 +5815,11 @@ cdk-generate-synthetic-examples@^0.2.26: jsii-reflect "^1.112.0" yargs "^17.7.2" +cdk-nag@2.28.13: + version "2.28.13" + resolved "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.28.13.tgz#bef1b6c65496d99ef2e110f1a28f5260f9efef80" + integrity sha512-f+fteEq09+N7H2heqls0NcTC+MFcXl6fztEjjpKK0qTo5eFAKmDekEHLRGY5LX8v/JlueoVyhttsjaULNwnoSg== + cdk8s-plus-27@2.9.5: version "2.9.5" resolved "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.9.5.tgz#a2d7942a7aba001c0a07705627314d780cde7265" @@ -13701,7 +13723,7 @@ ts-api-utils@^2.1.0: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== -ts-jest@^29, ts-jest@^29.3.3: +ts-jest@^29, ts-jest@^29.2.5, ts-jest@^29.3.3: version "29.3.3" resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.3.tgz#c24c31a9d12268f88899e3eeb05912cab42c574c" integrity sha512-y6jLm19SL4GroiBmHwFK4dSHUfDNmOrJbRfp6QmDIlI9p5tT5Q8ItccB4pTIslCIqOZuQnBwpTR0bQ5eUMYwkw== @@ -13966,6 +13988,11 @@ typescript@~5.5.0, typescript@~5.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typescript@~5.6.3: + version "5.6.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + typescript@~5.7: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" @@ -13996,6 +14023,11 @@ undici-types@~5.26.4: resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + undici-types@~6.21.0: version "6.21.0" resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" @@ -14637,4 +14669,4 @@ yn@3.1.1: yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== \ No newline at end of file + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From bdae7349a0af0f491e810a813326d54b81208e74 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 15 May 2025 15:52:18 -0400 Subject: [PATCH 26/39] fix(bedrock): fix integ api schema test --- .../test/bedrock/agents/integ.api-schema.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts index 25886b46130f5..1f71ec44eb0af 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.ts @@ -89,7 +89,7 @@ const inlineActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(inlineA const s3ActionGroupExecutor = bedrock.ActionGroupExecutor.fromLambda(s3ActionGroupFunction); // Create an API schema from a local asset file -const assetApiSchema = bedrock.ApiSchema.fromLocalAsset('test/bedrock/agents/test-schema.yaml'); +const assetApiSchema = bedrock.ApiSchema.fromLocalAsset('test-schema.yaml'); // Create a simple inline API schema const inlineApiSchema = bedrock.ApiSchema.fromInline(` @@ -162,6 +162,9 @@ const schemaDeployment = new s3deploy.BucketDeployment(stack, 'DeploySchema', { // Create an API schema from the S3 file const s3ApiSchema = bedrock.ApiSchema.fromS3File(schemaBucket, 'schema/s3-api-schema.json'); +// Bind the asset schema before using it in action groups +assetApiSchema.bind(stack); + // Create a Bedrock Agent with action groups using all three API schema types const agent = new bedrock.Agent(stack, 'ApiSchemaAgent', { agentName: 'api-schema-agent', From 8634c7ef914e5b43875c5505ab14e65746dc8bfe Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Fri, 16 May 2025 11:14:10 -0400 Subject: [PATCH 27/39] fix(bedrockl2): pushing the integ snapshots --- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 + ...aultTestDeployAssertE2AFA81B.template.json | 36 + ...aws-cdk-bedrock-action-group-1.assets.json | 20 + ...s-cdk-bedrock-action-group-1.template.json | 283 +++++ .../integ.action-group.js.snapshot/cdk.out | 1 + .../integ.action-group.js.snapshot/integ.json | 13 + .../manifest.json | 264 ++++ .../integ.action-group.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertB2859CB2.assets.json | 20 + ...aultTestDeployAssertB2859CB2.template.json | 36 + ...k-bedrock-agent-collaborator-1.assets.json | 20 + ...bedrock-agent-collaborator-1.template.json | 351 ++++++ .../cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 326 +++++ .../tree.json | 1 + ...efaultTestDeployAssertB292ADF7.assets.json | 20 + ...aultTestDeployAssertB292ADF7.template.json | 36 + .../aws-cdk-bedrock-agent-1.assets.json | 20 + .../aws-cdk-bedrock-agent-1.template.json | 351 ++++++ .../agents/integ.agent.js.snapshot/cdk.out | 1 + .../agents/integ.agent.js.snapshot/integ.json | 13 + .../integ.agent.js.snapshot/manifest.json | 326 +++++ .../agents/integ.agent.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert1DDDDC57.assets.json | 20 + ...aultTestDeployAssert1DDDDC57.template.json | 36 + .../schema/s3-api-schema.json | 33 + .../index.js | 1 + ...7ec9abfe095d23781b749728b998315f3ad732.zip | 3 + .../index.py | 388 ++++++ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 + .../aws-cdk-bedrock-api-schema-1.assets.json | 90 ++ ...aws-cdk-bedrock-api-schema-1.template.json | 1065 +++++++++++++++++ .../integ.api-schema.js.snapshot/cdk.out | 1 + .../integ.api-schema.js.snapshot/integ.json | 13 + .../manifest.json | 716 +++++++++++ .../integ.api-schema.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert5AD90360.assets.json | 20 + ...aultTestDeployAssert5AD90360.template.json | 36 + .../aws-cdk-bedrock-memory-1.assets.json | 20 + .../aws-cdk-bedrock-memory-1.template.json | 546 +++++++++ .../agents/integ.memory.js.snapshot/cdk.out | 1 + .../integ.memory.js.snapshot/integ.json | 13 + .../integ.memory.js.snapshot/manifest.json | 420 +++++++ .../agents/integ.memory.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertACFAFF30.assets.json | 20 + ...aultTestDeployAssertACFAFF30.template.json | 36 + ...ws-cdk-bedrock-orchestration-1.assets.json | 20 + ...-cdk-bedrock-orchestration-1.template.json | 282 +++++ .../integ.orchestration.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 264 ++++ .../integ.orchestration.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert7D38F1F4.assets.json | 20 + ...aultTestDeployAssert7D38F1F4.template.json | 36 + ...-cdk-bedrock-prompt-override-1.assets.json | 20 + ...dk-bedrock-prompt-override-1.template.json | 644 ++++++++++ .../integ.prompt-override.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 464 +++++++ .../tree.json | 1 + 61 files changed, 7454 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json new file mode 100644 index 0000000000000..aa619c2ef0040 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", + "source": { + "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json new file mode 100644 index 0000000000000..28ee150277d1a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de": { + "displayName": "aws-cdk-bedrock-action-group-1 Template", + "source": { + "path": "aws-cdk-bedrock-action-group-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json new file mode 100644 index 0000000000000..e9def5c443dd6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json @@ -0,0 +1,283 @@ +{ + "Resources": { + "ActionGroupFunctionServiceRole77660D62": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ActionGroupFunctionFE14D1CB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ActionGroupFunctionServiceRole77660D62", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ActionGroupFunctionServiceRole77660D62" + ] + }, + "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + } + }, + "ActionGroupName": "CustomActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" + }, + "Description": "A custom action group for testing", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-action-group-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json new file mode 100644 index 0000000000000..99aecebe78b1c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockActionGroup/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-action-group-1" + ], + "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", + "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json new file mode 100644 index 0000000000000..62cd0281d1850 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-action-group-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-action-group-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-action-group-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-action-group-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionServiceRole77660D62" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionFE14D1CB" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-action-group-1" + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "metadata": { + "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json new file mode 100644 index 0000000000000..945bebee21900 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json new file mode 100644 index 0000000000000..985571ebdee78 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2 Template", + "source": { + "path": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json new file mode 100644 index 0000000000000..62ae84300319b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "810add6e3357a035537eaa8699e651d4beaefe0e40808bc7afca5751de03ea88": { + "displayName": "aws-cdk-bedrock-agent-collaborator-1 Template", + "source": { + "path": "aws-cdk-bedrock-agent-collaborator-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "810add6e3357a035537eaa8699e651d4beaefe0e40808bc7afca5751de03ea88.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json new file mode 100644 index 0000000000000..9f9725ae4d33b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/aws-cdk-bedrock-agent-collaborator-1.template.json @@ -0,0 +1,351 @@ +{ + "Resources": { + "CollaboratorAgentRoleB40DB843": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent" + } + }, + "CollaboratorAgentRoleDefaultPolicy40D7F24F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CollaboratorAgentRoleDefaultPolicy40D7F24F", + "Roles": [ + { + "Ref": "CollaboratorAgentRoleB40DB843" + } + ] + } + }, + "CollaboratorAgent1160D465": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "collaborator-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CollaboratorAgentRoleB40DB843", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a collaborator agent with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CollaboratorAgentRoleDefaultPolicy40D7F24F" + ] + }, + "CollaboratorAliasDF4958C3": { + "Type": "AWS::Bedrock::AgentAlias", + "Properties": { + "AgentAliasName": "collaborator-alias", + "AgentId": { + "Fn::GetAtt": [ + "CollaboratorAgent1160D465", + "AgentId" + ] + } + } + }, + "CollaborativeAgentRole0E9B1104": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent" + } + }, + "CollaborativeAgentRoleDefaultPolicy94AAE53F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetAgentAlias", + "bedrock:InvokeAgent" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CollaborativeAgentRoleDefaultPolicy94AAE53F", + "Roles": [ + { + "Ref": "CollaborativeAgentRole0E9B1104" + } + ] + } + }, + "CollaborativeAgent97CD08C5": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentCollaboration": "SUPERVISOR", + "AgentCollaborators": [ + { + "AgentDescriptor": { + "AliasArn": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + "CollaborationInstruction": "Help the primary agent with complex tasks and provide additional context", + "CollaboratorName": "HelperAgent", + "RelayConversationHistory": "TO_COLLABORATOR" + } + ], + "AgentName": "collaborative-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CollaborativeAgentRole0E9B1104", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a collaborative agent with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CollaborativeAgentRoleDefaultPolicy94AAE53F" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json new file mode 100644 index 0000000000000..562e62cf7bb5f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockAgentCollaborator/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-agent-collaborator-1" + ], + "assertionStack": "BedrockAgentCollaborator/DefaultTest/DeployAssert", + "assertionStackName": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json new file mode 100644 index 0000000000000..fd6424370d6d4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/manifest.json @@ -0,0 +1,326 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-agent-collaborator-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-agent-collaborator-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-agent-collaborator-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-agent-collaborator-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/810add6e3357a035537eaa8699e651d4beaefe0e40808bc7afca5751de03ea88.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-agent-collaborator-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-agent-collaborator-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleB40DB843" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleDefaultPolicy40D7F24F" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgent1160D465" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAliasDF4958C3" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgentRole0E9B1104" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgentRoleDefaultPolicy94AAE53F" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaborativeAgent97CD08C5" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-agent-collaborator-1" + }, + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockAgentCollaboratorDefaultTestDeployAssertB2859CB2.assets" + ], + "metadata": { + "/BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockAgentCollaborator/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json new file mode 100644 index 0000000000000..dd91302704275 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent-collaborator.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-collaborator-1":{"id":"aws-cdk-bedrock-agent-collaborator-1","path":"aws-cdk-bedrock-agent-collaborator-1","children":{"CollaboratorAgent":{"id":"CollaboratorAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockagentcollaboratoragent-bedab26c-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaboratorAgentRoleDefaultPolicy40D7F24F","roles":[{"Ref":"CollaboratorAgentRoleB40DB843"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"collaborator-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaboratorAgentRoleB40DB843","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a collaborator agent with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"CollaboratorAlias":{"id":"CollaboratorAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaboratorAlias/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::AgentAlias","aws:cdk:cloudformation:props":{"agentAliasName":"collaborator-alias","agentId":{"Fn::GetAtt":["CollaboratorAgent1160D465","AgentId"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgentAlias","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAlias","version":"0.0.0","metadata":[]}},"CollaborativeAgent":{"id":"CollaborativeAgent","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockagentollaborativeagent-63d793e3-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetAgentAlias","bedrock:InvokeAgent"],"Effect":"Allow","Resource":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaborativeAgentRoleDefaultPolicy94AAE53F","roles":[{"Ref":"CollaborativeAgentRole0E9B1104"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentCollaboration":"SUPERVISOR","agentCollaborators":[{"agentDescriptor":{"aliasArn":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},"collaborationInstruction":"Help the primary agent with complex tasks and provide additional context","collaboratorName":"HelperAgent","relayConversationHistory":"TO_COLLABORATOR"}],"agentName":"collaborative-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaborativeAgentRole0E9B1104","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a collaborative agent with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-collaborator-1/CollaborativeAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-collaborator-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgentCollaborator":{"id":"BedrockAgentCollaborator","path":"BedrockAgentCollaborator","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgentCollaborator/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgentCollaborator/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgentCollaborator/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json new file mode 100644 index 0000000000000..18f4f27a25ebc --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockAgentDefaultTestDeployAssertB292ADF7 Template", + "source": { + "path": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/BedrockAgentDefaultTestDeployAssertB292ADF7.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json new file mode 100644 index 0000000000000..cef1ea5c13b68 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "1ccef654855f0ab36b3d105c6acf64655d82a459ca134a8780abe8fd415fe90f": { + "displayName": "aws-cdk-bedrock-agent-1 Template", + "source": { + "path": "aws-cdk-bedrock-agent-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "1ccef654855f0ab36b3d105c6acf64655d82a459ca134a8780abe8fd415fe90f.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json new file mode 100644 index 0000000000000..8a9fe4612dec1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/aws-cdk-bedrock-agent-1.template.json @@ -0,0 +1,351 @@ +{ + "Resources": { + "CollaboratorAgentRoleB40DB843": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockagentcollaboratoragent-c03c736b-bedrockagent" + } + }, + "CollaboratorAgentRoleDefaultPolicy40D7F24F": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CollaboratorAgentRoleDefaultPolicy40D7F24F", + "Roles": [ + { + "Ref": "CollaboratorAgentRoleB40DB843" + } + ] + } + }, + "CollaboratorAgent1160D465": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "collaborator-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CollaboratorAgentRoleB40DB843", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a collaborator agent with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CollaboratorAgentRoleDefaultPolicy40D7F24F" + ] + }, + "CollaboratorAliasDF4958C3": { + "Type": "AWS::Bedrock::AgentAlias", + "Properties": { + "AgentAliasName": "collaborator-alias", + "AgentId": { + "Fn::GetAtt": [ + "CollaboratorAgent1160D465", + "AgentId" + ] + } + } + }, + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "bedrock:GetAgentAlias", + "bedrock:InvokeAgent" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentCollaboration": "SUPERVISOR", + "AgentCollaborators": [ + { + "AgentDescriptor": { + "AliasArn": { + "Fn::GetAtt": [ + "CollaboratorAliasDF4958C3", + "AgentAliasArn" + ] + } + }, + "CollaborationInstruction": "Help the primary agent with complex tasks and provide additional context", + "CollaboratorName": "HelperAgent", + "RelayConversationHistory": "TO_COLLABORATOR" + } + ], + "AgentName": "test-agent-1", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json new file mode 100644 index 0000000000000..4abde9b0edb7f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockAgent/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-agent-1" + ], + "assertionStack": "BedrockAgent/DefaultTest/DeployAssert", + "assertionStackName": "BedrockAgentDefaultTestDeployAssertB292ADF7" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json new file mode 100644 index 0000000000000..8322b07996474 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/manifest.json @@ -0,0 +1,326 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-agent-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-agent-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-agent-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-agent-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/1ccef654855f0ab36b3d105c6acf64655d82a459ca134a8780abe8fd415fe90f.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-agent-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-agent-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleB40DB843" + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgentRoleDefaultPolicy40D7F24F" + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAgent1160D465" + } + ], + "/aws-cdk-bedrock-agent-1/CollaboratorAlias/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CollaboratorAliasDF4958C3" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-agent-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-agent-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-agent-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-agent-1" + }, + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockAgentDefaultTestDeployAssertB292ADF7.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockAgentDefaultTestDeployAssertB292ADF7": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockAgentDefaultTestDeployAssertB292ADF7.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockAgentDefaultTestDeployAssertB292ADF7.assets" + ], + "metadata": { + "/BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockAgent/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json new file mode 100644 index 0000000000000..cddc3070fe1cd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.agent.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-agent-1":{"id":"aws-cdk-bedrock-agent-1","path":"aws-cdk-bedrock-agent-1","children":{"CollaboratorAgent":{"id":"CollaboratorAgent","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockagentcollaboratoragent-c03c736b-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CollaboratorAgentRoleDefaultPolicy40D7F24F","roles":[{"Ref":"CollaboratorAgentRoleB40DB843"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"collaborator-agent","agentResourceRoleArn":{"Fn::GetAtt":["CollaboratorAgentRoleB40DB843","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a collaborator agent with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/CollaboratorAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"CollaboratorAlias":{"id":"CollaboratorAlias","path":"aws-cdk-bedrock-agent-1/CollaboratorAlias","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/CollaboratorAlias/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::AgentAlias","aws:cdk:cloudformation:props":{"agentAliasName":"collaborator-alias","agentId":{"Fn::GetAtt":["CollaboratorAgent1160D465","AgentId"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgentAlias","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAlias","version":"0.0.0","metadata":[]}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-agent-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-agent-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockagent1-myagent-ed4c69ab-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["bedrock:GetAgentAlias","bedrock:InvokeAgent"],"Effect":"Allow","Resource":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-agent-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentCollaboration":"SUPERVISOR","agentCollaborators":[{"agentDescriptor":{"aliasArn":{"Fn::GetAtt":["CollaboratorAliasDF4958C3","AgentAliasArn"]}},"collaborationInstruction":"Help the primary agent with complex tasks and provide additional context","collaboratorName":"HelperAgent","relayConversationHistory":"TO_COLLABORATOR"}],"agentName":"test-agent-1","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-agent-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-agent-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-agent-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockAgent":{"id":"BedrockAgent","path":"BedrockAgent","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockAgent/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockAgent/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockAgent/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockAgent/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json new file mode 100644 index 0000000000000..686fe01004943 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", + "source": { + "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json new file mode 100644 index 0000000000000..a9d7497c0610b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json @@ -0,0 +1,33 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip new file mode 100644 index 0000000000000..27701642bd351 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cb535ed82989fc5837b1e6feae1b9a4f6f7e8bfe828e3d3878a98f4ca57486d +size 19914833 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py new file mode 100644 index 0000000000000..aeb2132fc67bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py @@ -0,0 +1,388 @@ +import contextlib +import json +import logging +import os +import shutil +import subprocess +import tempfile +import urllib.parse +from urllib.request import Request, urlopen +from uuid import uuid4 +from zipfile import ZipFile + +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +cloudfront = boto3.client('cloudfront') +s3 = boto3.client('s3') + +CFN_SUCCESS = "SUCCESS" +CFN_FAILED = "FAILED" +ENV_KEY_MOUNT_PATH = "MOUNT_PATH" +ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" + +AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" +CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" + +os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) + +def handler(event, context): + + def cfn_error(message=None): + if message: + logger.error("| cfn_error: %s" % message.encode()) + cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) + + + try: + # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper + # with the response CloudFormation sees from this Custom Resource execution. + logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) + + # cloudformation request type (create/update/delete) + request_type = event['RequestType'] + + # extract resource properties + props = event['ResourceProperties'] + old_props = event.get('OldResourceProperties', {}) + physical_id = event.get('PhysicalResourceId', None) + + try: + source_bucket_names = props['SourceBucketNames'] + source_object_keys = props['SourceObjectKeys'] + source_markers = props.get('SourceMarkers', None) + source_markers_config = props.get('SourceMarkersConfig', None) + dest_bucket_name = props['DestinationBucketName'] + dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') + extract = props.get('Extract', 'true') == 'true' + retain_on_delete = props.get('RetainOnDelete', "true") == "true" + distribution_id = props.get('DistributionId', '') + user_metadata = props.get('UserMetadata', {}) + system_metadata = props.get('SystemMetadata', {}) + prune = props.get('Prune', 'true').lower() == 'true' + exclude = props.get('Exclude', []) + include = props.get('Include', []) + sign_content = props.get('SignContent', 'false').lower() == 'true' + output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' + + # backwards compatibility - if "SourceMarkers" is not specified, + # assume all sources have an empty market map + if source_markers is None: + source_markers = [{} for i in range(len(source_bucket_names))] + if source_markers_config is None: + source_markers_config = [{} for i in range(len(source_bucket_names))] + + default_distribution_path = dest_bucket_prefix + if not default_distribution_path.endswith("/"): + default_distribution_path += "/" + if not default_distribution_path.startswith("/"): + default_distribution_path = "/" + default_distribution_path + default_distribution_path += "*" + + distribution_paths = props.get('DistributionPaths', [default_distribution_path]) + except KeyError as e: + cfn_error("missing request resource property %s. props: %s" % (str(e), props)) + return + + # configure aws cli options after resetting back to the defaults for each request + if os.path.exists(AWS_CLI_CONFIG_FILE): + os.remove(AWS_CLI_CONFIG_FILE) + if sign_content: + aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") + + # treat "/" as if no prefix was specified + if dest_bucket_prefix == "/": + dest_bucket_prefix = "" + + s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) + s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) + old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) + + + # obviously this is not + if old_s3_dest == "s3:///": + old_s3_dest = None + + logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) + logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) + + # if we are creating a new resource, allocate a physical id for it + # otherwise, we expect physical id to be relayed by cloudformation + if request_type == "Create": + physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) + else: + if not physical_id: + cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) + return + + # delete or create/update (only if "retain_on_delete" is false) + if request_type == "Delete" and not retain_on_delete: + if not bucket_owned(dest_bucket_name, dest_bucket_prefix): + aws_command("s3", "rm", s3_dest, "--recursive") + + # if we are updating without retention and the destination changed, delete first + if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: + if not old_s3_dest: + logger.warn("cannot delete old resource without old resource properties") + return + + aws_command("s3", "rm", old_s3_dest, "--recursive") + + if request_type == "Update" or request_type == "Create": + s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) + + if distribution_id: + cloudfront_invalidate(distribution_id, distribution_paths) + + cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ + # Passing through the ARN sequences dependencees on the deployment + 'DestinationBucketArn': props.get('DestinationBucketArn'), + **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) + }) + except KeyError as e: + cfn_error("invalid request. Missing key %s" % str(e)) + except Exception as e: + logger.exception(e) + cfn_error(str(e)) + +#--------------------------------------------------------------------------------------------------- +# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities +def sanitize_message(message): + if not message: + return message + + # Sanitize the message to prevent log injection and HTTP response splitting + sanitized_message = message.replace('\n', '').replace('\r', '') + + # Encode the message to handle special characters + encoded_message = urllib.parse.quote(sanitized_message) + + return encoded_message + +#--------------------------------------------------------------------------------------------------- +# populate all files from s3_source_zips to a destination bucket +def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): + # list lengths are equal + if len(s3_source_zips) != len(source_markers): + raise Exception("'source_markers' and 's3_source_zips' must be the same length") + + # create a temporary working directory in /tmp or if enabled an attached efs volume + if ENV_KEY_MOUNT_PATH in os.environ: + workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) + os.mkdir(workdir) + else: + workdir = tempfile.mkdtemp() + + logger.info("| workdir: %s" % workdir) + + # create a directory into which we extract the contents of the zip file + contents_dir=os.path.join(workdir, 'contents') + os.mkdir(contents_dir) + + try: + # download the archive from the source and extract to "contents" + for i in range(len(s3_source_zips)): + s3_source_zip = s3_source_zips[i] + markers = source_markers[i] + markers_config = source_markers_config[i] + + if extract: + archive=os.path.join(workdir, str(uuid4())) + logger.info("archive: %s" % archive) + aws_command("s3", "cp", s3_source_zip, archive) + logger.info("| extracting archive to: %s\n" % contents_dir) + logger.info("| markers: %s" % markers) + extract_and_replace_markers(archive, contents_dir, markers, markers_config) + else: + logger.info("| copying archive to: %s\n" % contents_dir) + aws_command("s3", "cp", s3_source_zip, contents_dir) + + # sync from "contents" to destination + + s3_command = ["s3", "sync"] + + if prune: + s3_command.append("--delete") + + if exclude: + for filter in exclude: + s3_command.extend(["--exclude", filter]) + + if include: + for filter in include: + s3_command.extend(["--include", filter]) + + s3_command.extend([contents_dir, s3_dest]) + s3_command.extend(create_metadata_args(user_metadata, system_metadata)) + aws_command(*s3_command) + finally: + if not os.getenv(ENV_KEY_SKIP_CLEANUP): + shutil.rmtree(workdir) + +#--------------------------------------------------------------------------------------------------- +# invalidate files in the CloudFront distribution edge caches +def cloudfront_invalidate(distribution_id, distribution_paths): + invalidation_resp = cloudfront.create_invalidation( + DistributionId=distribution_id, + InvalidationBatch={ + 'Paths': { + 'Quantity': len(distribution_paths), + 'Items': distribution_paths + }, + 'CallerReference': str(uuid4()), + }) + # by default, will wait up to 10 minutes + cloudfront.get_waiter('invalidation_completed').wait( + DistributionId=distribution_id, + Id=invalidation_resp['Invalidation']['Id']) + +#--------------------------------------------------------------------------------------------------- +# set metadata +def create_metadata_args(raw_user_metadata, raw_system_metadata): + if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: + return [] + + format_system_metadata_key = lambda k: k.lower() + format_user_metadata_key = lambda k: k.lower() + + system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } + user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } + + flatten = lambda l: [item for sublist in l for item in sublist] + system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) + user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] + + return system_args + user_args + ["--metadata-directive", "REPLACE"] + +#--------------------------------------------------------------------------------------------------- +# executes an "aws" cli command +def aws_command(*args): + aws="/opt/awscli/aws" # from AwsCliLayer + logger.info("| aws %s" % ' '.join(args)) + subprocess.check_call([aws] + list(args)) + +#--------------------------------------------------------------------------------------------------- +# sends a response to cloudformation +def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): + + responseUrl = event['ResponseURL'] + + responseBody = {} + responseBody['Status'] = responseStatus + responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) + responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name + responseBody['StackId'] = event['StackId'] + responseBody['RequestId'] = event['RequestId'] + responseBody['LogicalResourceId'] = event['LogicalResourceId'] + responseBody['NoEcho'] = noEcho + responseBody['Data'] = responseData + + body = json.dumps(responseBody) + logger.info("| response body:\n" + body) + + headers = { + 'content-type' : '', + 'content-length' : str(len(body)) + } + + try: + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) + except Exception as e: + logger.error("| unable to send response to CloudFormation") + logger.exception(e) + + +#--------------------------------------------------------------------------------------------------- +# check if bucket is owned by a custom resource +# if it is then we don't want to delete content +def bucket_owned(bucketName, keyPrefix): + tag = CUSTOM_RESOURCE_OWNER_TAG + if keyPrefix != "": + tag = tag + ':' + keyPrefix + try: + request = s3.get_bucket_tagging( + Bucket=bucketName, + ) + return any((x["Key"].startswith(tag)) for x in request["TagSet"]) + except Exception as e: + logger.info("| error getting tags from bucket") + logger.exception(e) + return False + +# extract archive and replace markers in output files +def extract_and_replace_markers(archive, contents_dir, markers, markers_config): + with ZipFile(archive, "r") as zip: + zip.extractall(contents_dir) + + # replace markers for this source + for file in zip.namelist(): + file_path = os.path.join(contents_dir, file) + if os.path.isdir(file_path): continue + replace_markers(file_path, markers, markers_config) + +def prepare_json_safe_markers(markers): + """Pre-process markers to ensure JSON-safe values""" + safe_markers = {} + for key, value in markers.items(): + # Serialize the value as JSON to handle escaping if the value is a string + serialized = json.dumps(value) + if serialized.startswith('"') and serialized.endswith('"'): + json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes + else: + json_safe_value = serialized + safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') + return safe_markers + +def replace_markers(filename, markers, markers_config): + """Replace markers in a file, with special handling for JSON files.""" + # if there are no markers, skip + if not markers: + return + + outfile = filename + '.new' + json_escape = markers_config.get('jsonEscape', 'false').lower() + if json_escape == 'true': + replace_tokens = prepare_json_safe_markers(markers) + else: + replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) + + # Handle content with line-by-line binary replacement + with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: + # Process line by line to handle large files + for line in fi: + for token, replacement in replace_tokens.items(): + line = line.replace(token, replacement) + fo.write(line) + + # Delete the original file and rename the new one to the original + os.remove(filename) + os.rename(outfile, filename) + +def replace_markers_in_json(json_object, replace_tokens): + """Replace markers in JSON content with proper escaping.""" + try: + def replace_in_structure(obj): + if isinstance(obj, str): + # Convert string to bytes for consistent replacement + result = obj.encode('utf-8') + for token, replacement in replace_tokens.items(): + result = result.replace(token, replacement) + # Convert back to string + return result.decode('utf-8') + elif isinstance(obj, dict): + return {k: replace_in_structure(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [replace_in_structure(item) for item in obj] + return obj + + # Process the whole structure + processed = replace_in_structure(json_object) + return json.dumps(processed) + except Exception as e: + logger.error(f'Error processing JSON: {e}') + logger.exception(e) + return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml new file mode 100644 index 0000000000000..4accd4cadb267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.3 +info: + title: Asset API Schema + version: 1.0.0 +paths: + /asset: + get: + operationId: assetHelloWorld + summary: Say hello from asset + description: Returns a greeting message from asset-stored schema + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json new file mode 100644 index 0000000000000..96da65f2211ba --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json @@ -0,0 +1,90 @@ +{ + "version": "41.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732": { + "displayName": "DeploySchema/AwsCliLayer/Code", + "source": { + "path": "asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { + "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", + "source": { + "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { + "displayName": "DeploySchema/Asset1", + "source": { + "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { + "displayName": "Schema", + "source": { + "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45": { + "displayName": "aws-cdk-bedrock-api-schema-1 Template", + "source": { + "path": "aws-cdk-bedrock-api-schema-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json new file mode 100644 index 0000000000000..822fe670f8bd1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json @@ -0,0 +1,1065 @@ +{ + "Resources": { + "AssetActionGroupFunctionServiceRoleC53BA920": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AssetActionGroupFunction98EC70AB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "AssetActionGroupFunctionServiceRoleC53BA920", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "AssetActionGroupFunctionServiceRoleC53BA920" + ] + }, + "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "InlineActionGroupFunctionServiceRole5543D9A3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "InlineActionGroupFunction566CD00A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "InlineActionGroupFunctionServiceRole5543D9A3", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "InlineActionGroupFunctionServiceRole5543D9A3" + ] + }, + "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "S3ActionGroupFunctionServiceRole7E4C5A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "S3ActionGroupFunctionA4648C25": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionServiceRole7E4C5A58", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "S3ActionGroupFunctionServiceRole7E4C5A58" + ] + }, + "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "SchemaBucket79EE2269": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + }, + { + "Key": "aws-cdk:cr-owned:911f5017", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SchemaBucketPolicy557840E2": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "SchemaBucket79EE2269" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "SchemaBucket79EE2269" + } + }, + "DependsOn": [ + "SchemaBucketPolicy557840E2" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": { + "Fn::FindInMap": [ + "LatestNodeRuntimeMap", + { + "Ref": "AWS::Region" + }, + "value" + ] + }, + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "SchemaBucket79EE2269" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "DeploySchemaAwsCliLayerD0D0BA6E": { + "Type": "AWS::Lambda::LayerVersion", + "Properties": { + "Content": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip" + }, + "Description": "/opt/awscli/aws" + } + }, + "DeploySchemaCustomResource277E9836": { + "Type": "Custom::CDKBucketDeployment", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn" + ] + }, + "SourceBucketNames": [ + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ], + "SourceObjectKeys": [ + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" + ], + "SourceMarkers": [ + {} + ], + "DestinationBucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "Prune": true, + "OutputObjectKeys": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": [ + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" + }, + "Environment": { + "Variables": { + "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + } + }, + "Handler": "index.handler", + "Layers": [ + { + "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "Role": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn" + ] + }, + "Runtime": "python3.11", + "Timeout": 900 + }, + "DependsOn": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + ] + }, + "ApiSchemaAgentRole636AC572": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + }, + "/schema/s3-api-schema.json" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + } + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "Roles": [ + { + "Ref": "ApiSchemaAgentRole636AC572" + } + ] + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgent8E965D9C": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + } + }, + "ActionGroupName": "AssetApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + } + }, + "Description": "An action group using a local asset API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + } + }, + "ActionGroupName": "InlineApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group using an inline API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + } + }, + "ActionGroupName": "S3ApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "S3ObjectKey": "schema/s3-api-schema.json" + } + }, + "Description": "An action group using an S3-based API schema", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "api-schema-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "ApiSchemaAgentRole636AC572", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + } + }, + "Mappings": { + "LatestNodeRuntimeMap": { + "af-south-1": { + "value": "nodejs20.x" + }, + "ap-east-1": { + "value": "nodejs20.x" + }, + "ap-east-2": { + "value": "nodejs20.x" + }, + "ap-northeast-1": { + "value": "nodejs20.x" + }, + "ap-northeast-2": { + "value": "nodejs20.x" + }, + "ap-northeast-3": { + "value": "nodejs20.x" + }, + "ap-south-1": { + "value": "nodejs20.x" + }, + "ap-south-2": { + "value": "nodejs20.x" + }, + "ap-southeast-1": { + "value": "nodejs20.x" + }, + "ap-southeast-2": { + "value": "nodejs20.x" + }, + "ap-southeast-3": { + "value": "nodejs20.x" + }, + "ap-southeast-4": { + "value": "nodejs20.x" + }, + "ap-southeast-5": { + "value": "nodejs20.x" + }, + "ap-southeast-7": { + "value": "nodejs20.x" + }, + "ca-central-1": { + "value": "nodejs20.x" + }, + "ca-west-1": { + "value": "nodejs20.x" + }, + "cn-north-1": { + "value": "nodejs20.x" + }, + "cn-northwest-1": { + "value": "nodejs20.x" + }, + "eu-central-1": { + "value": "nodejs20.x" + }, + "eu-central-2": { + "value": "nodejs20.x" + }, + "eu-isoe-west-1": { + "value": "nodejs18.x" + }, + "eu-north-1": { + "value": "nodejs20.x" + }, + "eu-south-1": { + "value": "nodejs20.x" + }, + "eu-south-2": { + "value": "nodejs20.x" + }, + "eu-west-1": { + "value": "nodejs20.x" + }, + "eu-west-2": { + "value": "nodejs20.x" + }, + "eu-west-3": { + "value": "nodejs20.x" + }, + "il-central-1": { + "value": "nodejs20.x" + }, + "me-central-1": { + "value": "nodejs20.x" + }, + "me-south-1": { + "value": "nodejs20.x" + }, + "mx-central-1": { + "value": "nodejs20.x" + }, + "sa-east-1": { + "value": "nodejs20.x" + }, + "us-east-1": { + "value": "nodejs20.x" + }, + "us-east-2": { + "value": "nodejs20.x" + }, + "us-gov-east-1": { + "value": "nodejs20.x" + }, + "us-gov-west-1": { + "value": "nodejs20.x" + }, + "us-iso-east-1": { + "value": "nodejs18.x" + }, + "us-iso-west-1": { + "value": "nodejs18.x" + }, + "us-isob-east-1": { + "value": "nodejs18.x" + }, + "us-isob-west-1": { + "value": "nodejs18.x" + }, + "us-west-1": { + "value": "nodejs20.x" + }, + "us-west-2": { + "value": "nodejs20.x" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json new file mode 100644 index 0000000000000..d600c50c982b6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockApiSchema/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-api-schema-1" + ], + "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", + "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json new file mode 100644 index 0000000000000..776515753cf3f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json @@ -0,0 +1,716 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-api-schema-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-api-schema-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-api-schema-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionServiceRoleC53BA920" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunction98EC70AB" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionServiceRole5543D9A3" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunction566CD00A" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionServiceRole7E4C5A58" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionA4648C25" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucket79EE2269" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketPolicy557840E2" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" + } + ], + "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ + { + "type": "aws:cdk:logicalId", + "data": "LatestNodeRuntimeMap" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "uuid": "*", + "layers": [ + "*" + ], + "environment": "*", + "lambdaPurpose": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + true + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + "*" + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaCustomResource277E9836" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "layers": [ + "*" + ], + "environment": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addEnvironment": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addLayers": [ + "*" + ] + } + }, + { + "type": "aws:cdk:is-custom-resource-handler-singleton", + "data": true + }, + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 2 + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRole636AC572" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgent8E965D9C" + } + ], + "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-api-schema-1" + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "metadata": { + "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json new file mode 100644 index 0000000000000..7033cdf5d8356 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip"},"description":"/opt/awscli/aws"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json new file mode 100644 index 0000000000000..1a10110ba1360 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", + "source": { + "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json new file mode 100644 index 0000000000000..d8d85a00fd0dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524": { + "displayName": "aws-cdk-bedrock-memory-1 Template", + "source": { + "path": "aws-cdk-bedrock-memory-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json new file mode 100644 index 0000000000000..e0d85494ad511 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json @@ -0,0 +1,546 @@ +{ + "Resources": { + "DefaultMemoryFunctionServiceRoleD8C5CDAF": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "DefaultMemoryFunctionAC6D5374": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF" + ] + }, + "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomMemoryFunctionServiceRoleA64B0AD5": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomMemoryFunctionB4B5CB9A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomMemoryFunctionServiceRoleA64B0AD5", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomMemoryFunctionServiceRoleA64B0AD5" + ] + }, + "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "AgentWithDefaultMemoryRole0AEE1FD1": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" + } + }, + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", + "Roles": [ + { + "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ] + } + }, + "AgentWithDefaultMemoryA1F31830": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + } + }, + "ActionGroupName": "DefaultMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing default memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-default-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithDefaultMemoryRole0AEE1FD1", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 20 + }, + "StorageDays": 30 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + ] + }, + "AgentWithCustomMemoryRole3B7BD09F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" + } + }, + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", + "Roles": [ + { + "Ref": "AgentWithCustomMemoryRole3B7BD09F" + } + ] + } + }, + "AgentWithCustomMemoryD0BD498B": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomMemoryRole3B7BD09F", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 5 + }, + "StorageDays": 15 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json new file mode 100644 index 0000000000000..d4ab305a0e573 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockMemory/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-memory-1" + ], + "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", + "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json new file mode 100644 index 0000000000000..01a0e8ea7d9ce --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json @@ -0,0 +1,420 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-memory-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-memory-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-memory-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-memory-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionAC6D5374" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionServiceRoleA64B0AD5" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionB4B5CB9A" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryA1F31830" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRole3B7BD09F" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryD0BD498B" + } + ], + "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-memory-1" + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "metadata": { + "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockMemory/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json new file mode 100644 index 0000000000000..3b04fc7b10d83 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json new file mode 100644 index 0000000000000..8a135a7ec895c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", + "source": { + "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json new file mode 100644 index 0000000000000..46749d1780b08 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d": { + "displayName": "aws-cdk-bedrock-orchestration-1 Template", + "source": { + "path": "aws-cdk-bedrock-orchestration-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json new file mode 100644 index 0000000000000..c737305fb8782 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json @@ -0,0 +1,282 @@ +{ + "Resources": { + "OrchestrationFunctionServiceRole12D0673A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "OrchestrationFunction2F3851C6": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "OrchestrationFunctionServiceRole12D0673A", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "OrchestrationFunctionServiceRole12D0673A" + ] + }, + "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + }, + "SourceArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentDC6CC131", + "AgentArn" + ] + } + } + }, + "CustomOrchestrationAgentRole85710213": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" + } + }, + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", + "Roles": [ + { + "Ref": "CustomOrchestrationAgentRole85710213" + } + ] + } + }, + "CustomOrchestrationAgentDC6CC131": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "custom-orchestration-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentRole85710213", + "Arn" + ] + }, + "AutoPrepare": false, + "CustomOrchestration": { + "Executor": { + "Lambda": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + } + } + }, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", + "OrchestrationType": "CUSTOM_ORCHESTRATION", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json new file mode 100644 index 0000000000000..6f18039793ab7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockOrchestration/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-orchestration-1" + ], + "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", + "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json new file mode 100644 index 0000000000000..c3c314bda8552 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-orchestration-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-orchestration-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-orchestration-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionServiceRole12D0673A" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunction2F3851C6" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRole85710213" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentDC6CC131" + } + ], + "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-orchestration-1" + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "metadata": { + "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json new file mode 100644 index 0000000000000..68f0dc216a5f0 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json new file mode 100644 index 0000000000000..ad7678636bede --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", + "source": { + "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json new file mode 100644 index 0000000000000..4eebeaef2a0e9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514": { + "displayName": "aws-cdk-bedrock-prompt-override-1 Template", + "source": { + "path": "aws-cdk-bedrock-prompt-override-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json new file mode 100644 index 0000000000000..69b1f2a548dd4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json @@ -0,0 +1,644 @@ +{ + "Resources": { + "PromptOverrideFunctionServiceRoleB1ACDEAD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "PromptOverrideFunctionD82AB437": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD" + ] + }, + "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomParserActionFunctionServiceRoleEE676A1C": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomParserActionFunction3DAF0C7A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomParserActionFunctionServiceRoleEE676A1C", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomParserActionFunctionServiceRoleEE676A1C" + ] + }, + "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "ParserFunctionServiceRole59DD83FB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ParserFunctionE8A187F2": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ParserFunctionServiceRole59DD83FB", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ParserFunctionServiceRole59DD83FB" + ] + }, + "AgentWithPromptOverrideRoleA0EB6013": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" + } + }, + "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", + "Roles": [ + { + "Ref": "AgentWithPromptOverrideRoleA0EB6013" + } + ] + } + }, + "AgentWithPromptOverride13B28AED": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + } + }, + "ActionGroupName": "PromptOverrideActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing prompt override configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-prompt-override", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithPromptOverrideRoleA0EB6013", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "POST_PROCESSING" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + ] + }, + "AgentWithCustomParserRole29295FCD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" + } + }, + "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", + "Roles": [ + { + "Ref": "AgentWithCustomParserRole29295FCD" + } + ] + } + }, + "AgentWithCustomParser73E443B8": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomParserActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom parser configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-parser", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomParserRole29295FCD", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "OverrideLambda": { + "Fn::GetAtt": [ + "ParserFunctionE8A187F2", + "Arn" + ] + }, + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "MEMORY_SUMMARIZATION" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json new file mode 100644 index 0000000000000..ae9f15f1d6d0f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockPromptOverride/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-prompt-override-1" + ], + "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", + "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json new file mode 100644 index 0000000000000..1fe691460a44b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json @@ -0,0 +1,464 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-prompt-override-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-prompt-override-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-prompt-override-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionD82AB437" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionServiceRoleEE676A1C" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunction3DAF0C7A" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionServiceRole59DD83FB" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionE8A187F2" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleA0EB6013" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverride13B28AED" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRole29295FCD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParser73E443B8" + } + ], + "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-prompt-override-1" + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "metadata": { + "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1015.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json new file mode 100644 index 0000000000000..6203796acf345 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From 2795a6fd8e2f48714cccbe449b96a04777b78f05 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Tue, 20 May 2025 17:49:37 -0400 Subject: [PATCH 28/39] fix(bedrockl2): added function schema to bedrock l2 --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 146 ++++++++- .../bedrock/agents/action-group.ts | 7 +- .../bedrock/agents/api-schema.ts | 4 +- .../bedrock/agents/function-schema.ts | 289 ++++++++++++++++++ .../bedrock/agents/schema-base.ts | 13 + .../aws-bedrock-alpha/bedrock/index.ts | 1 + .../test/bedrock/agents/api-schema.test.ts | 195 +++++------- .../bedrock/agents/function-schema.test.ts | 287 +++++++++++++++++ 8 files changed, 823 insertions(+), 119 deletions(-) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/schema-base.ts create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 8c71cf669a7bd..ce034798390a9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -78,6 +78,21 @@ The Bedrock Agent class supports the following properties. An action group defines functions your agent can call. The functions are Lambda functions. The action group uses an OpenAPI schema to tell the agent what your functions do and how to call them. +#### Action Group Properties + +The AgentActionGroup class supports the following properties. + +| Name | Type | Required | Description | +|---|---|---|---| +| name | string | No | The name of the action group. Defaults to a name generated in the format 'action_group_quick_start_UUID' | +| description | string | No | A description of the action group | +| apiSchema | ApiSchema | No | The OpenAPI schema that defines the functions in the action group | +| executor | ActionGroupExecutor | No | The Lambda function that executes the actions in the group | +| enabled | boolean | No | Whether the action group is enabled. Defaults to true | +| forceDelete | boolean | No | Whether to delete the resource even if it's in use. Defaults to false | +| functionSchema | FunctionSchema | No | Defines functions that each define parameters that the agent needs to invoke from the user | +| parentActionGroupSignature | ParentActionGroupSignature | No | The AWS Defined signature for enabling certain capabilities in your agent | + There are three ways to provide an API schema for your action group: From a local asset file (requires binding to scope): @@ -166,6 +181,81 @@ const actionGroup = new bedrock.AgentActionGroup({ }); ``` +### Using FunctionSchema with Action Groups + +As an alternative to using OpenAPI schemas, you can define functions directly using the `FunctionSchema` class. This approach provides a more structured way to define the functions that your agent can call. + +```ts fixture=default +const actionGroupFunction = new lambda.Function(this, 'ActionGroupFunction', { + runtime: lambda.Runtime.PYTHON_3_12, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, '../lambda/action-group')), +}); + +// Define a function schema with parameters +const functionSchema = new bedrock.FunctionSchema({ + functions: [ + { + name: 'searchBooks', + description: 'Search for books in the library catalog', + parameters: { + 'query': { + type: bedrock.ParameterType.STRING, + required: true, + description: 'The search query string', + }, + 'maxResults': { + type: bedrock.ParameterType.INTEGER, + required: false, + description: 'Maximum number of results to return', + }, + 'includeOutOfPrint': { + type: bedrock.ParameterType.BOOLEAN, + required: false, + description: 'Whether to include out-of-print books', + } + }, + requireConfirmation: bedrock.RequireConfirmation.DISABLED, + }, + { + name: 'getBookDetails', + description: 'Get detailed information about a specific book', + parameters: { + 'bookId': { + type: bedrock.ParameterType.STRING, + required: true, + description: 'The unique identifier of the book', + } + }, + requireConfirmation: bedrock.RequireConfirmation.ENABLED, + } + ] +}); + +// Create an action group using the function schema +const actionGroup = new bedrock.AgentActionGroup({ + name: 'library-functions', + description: 'Functions for interacting with the library catalog', + executor: bedrock.ActionGroupExecutor.fromLambda(actionGroupFunction), + functionSchema: functionSchema, + enabled: true, +}); + +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', + actionGroups: [actionGroup], +}); +``` + +The `FunctionSchema` approach offers several advantages: + +- Type-safe definition of functions and parameters +- Built-in validation of parameter names, descriptions, and other properties +- Clear structure that maps directly to the AWS Bedrock API +- Support for parameter types including string, number, integer, boolean, array, and object +- Option to require user confirmation before executing specific functions + If you chose to load your schema file from S3, the construct will provide the necessary permissions to your agent's execution role to access the schema file from the specific bucket. Similar to performing the operation through the console, the agent execution role will get a permission like: ```json @@ -245,11 +335,26 @@ agent.node.addDependency(deployement); The `Agent` constructs take an optional parameter `shouldPrepareAgent` to indicate that the Agent should be prepared after any updates to an agent or action group. This may increase the time to create and update those resources. By default, this value is false. +#### Prepare Agent Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| shouldPrepareAgent | boolean | No | Whether to automatically update the DRAFT version of the agent after making changes. Defaults to false | + Creating an agent alias will not prepare the agent, so if you create an alias using the `AgentAlias` resource then you should set `shouldPrepareAgent` to **_true_**. ### Prompt Override Configuration -Bedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. The implementation provides type-safe configurations for each step type, ensuring correct usage at compile time. The following steps can be configured: +Bedrock Agents allows you to customize the prompts and LLM configuration for different steps in the agent sequence. The implementation provides type-safe configurations for each step type, ensuring correct usage at compile time. + +#### Prompt Override Configuration Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| steps | PromptStepConfiguration[] | Yes | Array of step configurations for different parts of the agent sequence | +| parser | lambda.IFunction | No | Lambda function for custom parsing of agent responses | + +The following steps can be configured: - PRE_PROCESSING: Prepares the user input for orchestration - ORCHESTRATION: Main step that determines the agent's actions @@ -326,6 +431,13 @@ Foundation models can only be specified for the ROUTING_CLASSIFIER step. Agents can maintain context across multiple sessions and recall past interactions using memory. This feature is useful for creating a more coherent conversational experience. +#### Memory Configuration Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| maxRecentSessions | number | No | Maximum number of recent session summaries to retain | +| memoryDuration | Duration | No | How long to retain session summaries | + Example: ```ts fixture=default @@ -344,6 +456,22 @@ const agent = new bedrock.Agent(this, 'MyAgent', { Agent Collaboration enables multiple Bedrock Agents to work together on complex tasks. This feature allows agents to specialize in different areas and collaborate to provide more comprehensive responses to user queries. +#### Agent Collaboration Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| type | AgentCollaboratorType | Yes | Type of collaboration (SUPERVISOR or PEER) | +| collaborators | AgentCollaborator[] | Yes | List of agent collaborators | + +#### Agent Collaborator Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| agentAlias | AgentAlias | Yes | The agent alias to collaborate with | +| collaborationInstruction | string | Yes | Instructions for how to collaborate with this agent | +| collaboratorName | string | Yes | Name of the collaborator | +| relayConversationHistory | boolean | No | Whether to relay conversation history to the collaborator. Defaults to false | + Example: ```ts fixture=default @@ -383,6 +511,12 @@ Custom Orchestration allows you to override the default agent orchestration flow When you provide a customOrchestrationExecutor, the agent's orchestrationType is automatically set to CUSTOM_ORCHESTRATION. If no customOrchestrationExecutor is provided, the orchestrationType defaults to DEFAULT, using Amazon Bedrock's built-in orchestration. +#### Custom Orchestration Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| function | lambda.IFunction | Yes | The Lambda function that implements the custom orchestration logic | + Example: ```ts fixture=default @@ -407,6 +541,16 @@ To deploy your agent, you need to create an alias. During alias creation, Amazon By default, the Agent resource creates a test alias named 'AgentTestAlias' that points to the 'DRAFT' version. This test alias is accessible via the `testAlias` property of the agent. You can also create additional aliases for different environments using the AgentAlias construct. +#### Agent Alias Properties + +| Name | Type | Required | Description | +|---|---|---|---| +| agent | Agent | Yes | The agent to create an alias for | +| agentAliasName | string | No | The name of the agent alias. Defaults to a name generated by CDK | +| description | string | No | A description of the agent alias. Defaults to no description | +| routingConfiguration | AgentAliasRoutingConfiguration | No | Configuration for routing traffic between agent versions | +| agentVersion | string | No | The version of the agent to use. If not specified, a new version is created | + When redeploying an agent with changes, you must ensure the agent version is updated to avoid deployment failures with "agent already exists" errors. The recommended way to handle this is to include the `lastUpdated` property in the agent's description, which automatically updates whenever the agent is modified. This ensures a new version is created on each deployment. Example: diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts index 543fbe98f9a34..cca8461019b26 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/action-group.ts @@ -3,6 +3,7 @@ import * as crypto from 'crypto'; import { ActionGroupExecutor } from './api-executor'; import { ApiSchema } from './api-schema'; import { ValidationError } from './validation-helpers'; +import { FunctionSchema } from './function-schema'; /****************************************************************************** * Signatures @@ -89,7 +90,7 @@ export interface AgentActionGroupProps { * * @default undefined - No function schema is provided */ - readonly functionSchema?: CfnAgent.FunctionSchemaProperty; + readonly functionSchema?: FunctionSchema; /** * The AWS Defined signature for enabling certain capabilities in your agent. @@ -165,7 +166,7 @@ export class AgentActionGroup { /** * The function schema for this action group (if defined). */ - public readonly functionSchema?: CfnAgent.FunctionSchemaProperty; + public readonly functionSchema?: FunctionSchema; /** * The AWS Defined signature (if defined). */ @@ -209,7 +210,7 @@ export class AgentActionGroup { actionGroupState: this.enabled ? 'ENABLED' : 'DISABLED', apiSchema: this.apiSchema?._render(), description: this.description, - functionSchema: this.functionSchema, + functionSchema: this.functionSchema?._render(), parentActionGroupSignature: this.parentActionGroupSignature?.toString(), skipResourceInUseCheckOnDelete: this.forceDelete, }; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts index 60d44adad2429..b64d139327142 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/api-schema.ts @@ -2,6 +2,7 @@ import { Construct } from 'constructs'; import * as s3_assets from 'aws-cdk-lib/aws-s3-assets'; import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IBucket, Location } from 'aws-cdk-lib/aws-s3'; +import { ActionGroupSchema } from './schema-base'; /** * Error thrown when an ApiSchema is not properly initialized. @@ -19,7 +20,7 @@ class ApiSchemaError extends Error { /** * Represents the concept of an API Schema for a Bedrock Agent Action Group. */ -export abstract class ApiSchema { +export abstract class ApiSchema extends ActionGroupSchema { /** * Creates an API Schema from a local file. * @param path - the path to the local file containing the OpenAPI schema for the action group @@ -61,6 +62,7 @@ export abstract class ApiSchema { public readonly inlineSchema?: string; protected constructor(s3File?: Location, inlineSchema?: string) { + super(); this.s3File = s3File; this.inlineSchema = inlineSchema; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts new file mode 100644 index 0000000000000..569f3e93761b6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts @@ -0,0 +1,289 @@ +import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; +import * as validation from './validation-helpers'; +import { ActionGroupSchema } from './schema-base'; + +/** + * Enum for parameter types in function schemas + */ +export enum ParameterType { + /** + * String parameter type + */ + STRING = 'string', + + /** + * Number parameter type + */ + NUMBER = 'number', + + /** + * Integer parameter type + */ + INTEGER = 'integer', + + /** + * Boolean parameter type + */ + BOOLEAN = 'boolean', + + /** + * Array parameter type + */ + ARRAY = 'array', + + /** + * Object parameter type + */ + OBJECT = 'object', +} + +/** + * Enum for require confirmation state in function schemas + */ +export enum RequireConfirmation { + /** + * Confirmation is enabled + */ + ENABLED = 'ENABLED', + + /** + * Confirmation is disabled + */ + DISABLED = 'DISABLED', +} + +/** + * Properties for a function parameter + */ +export interface FunctionParameterProps { + /** + * The type of the parameter + */ + readonly type: ParameterType; + + /** + * Whether the parameter is required + * @default true + */ + readonly required?: boolean; + + /** + * Description of the parameter + * @default undefined no description will be present + */ + readonly description?: string; +} + +/** + * Properties for a function in a function schema + */ +export interface FunctionProps { + /** + * The name of the function + */ + readonly name: string; + + /** + * Description of the function + */ + readonly description: string; + + /** + * Parameters for the function as a record of parameter name to parameter properties + * @default {} + */ + readonly parameters?: Record; + + /** + * Whether to require confirmation before executing the function + * @default RequireConfirmation.DISABLED + */ + readonly requireConfirmation?: RequireConfirmation; +} + +/** + * Properties for a function schema + */ +export interface FunctionSchemaProps { + /** + * Functions defined in the schema + */ + readonly functions: FunctionProps[]; +} + +/** + * Represents a function parameter in a function schema + */ +export class FunctionParameter { + /** + * The type of the parameter + */ + public readonly type: ParameterType; + + /** + * Whether the parameter is required + */ + public readonly required: boolean; + + /** + * Description of the parameter + * @default undefined no description will be present + */ + public readonly description?: string; + + constructor(props: FunctionParameterProps) { + // Validate description if provided + if (props.description) { + const descErrors = validation.validateStringFieldLength({ + fieldName: 'parameter description', + value: props.description, + minLength: 0, + maxLength: 500, + }); + + if (descErrors.length > 0) { + throw new validation.ValidationError(descErrors.join('\n')); + } + } + + this.type = props.type; + this.required = props.required ?? true; + this.description = props.description; + } + + /** + * Render the parameter as a CloudFormation property + * @internal + */ + public _render(): any { + return { + type: this.type, + required: this.required, + description: this.description, + }; + } +} + +/** + * Represents a function in a function schema + */ +export class Function { + /** + * The name of the function + */ + public readonly name: string; + + /** + * Description of the function + */ + public readonly description: string; + + /** + * Parameters for the function + */ + public readonly parameters: Record; + + /** + * Whether to require confirmation before executing the function + */ + public readonly requireConfirmation: RequireConfirmation; + + constructor(props: FunctionProps) { + // Validate function name + const nameErrors = validation.validateStringFieldLength({ + fieldName: 'function name', + value: props.name, + minLength: 1, + maxLength: 100, + }); + + if (nameErrors.length > 0) { + throw new validation.ValidationError(nameErrors.join('\n')); + } + + // Validate function description + const descErrors = validation.validateStringFieldLength({ + fieldName: 'function description', + value: props.description, + minLength: 1, + maxLength: 500, + }); + + if (descErrors.length > 0) { + throw new validation.ValidationError(descErrors.join('\n')); + } + + this.name = props.name; + this.description = props.description; + + // Convert parameters object to a record of FunctionParameter instances + this.parameters = {}; + if (props.parameters) { + Object.entries(props.parameters).forEach(([name, paramProps]) => { + // Validate parameter name + const paramNameErrors = validation.validateStringFieldLength({ + fieldName: 'parameter name', + value: name, + minLength: 1, + maxLength: 100, + }); + + if (paramNameErrors.length > 0) { + throw new validation.ValidationError(paramNameErrors.join('\n')); + } + + this.parameters[name] = new FunctionParameter(paramProps); + }); + } + + this.requireConfirmation = props.requireConfirmation ?? RequireConfirmation.DISABLED; + } + + /** + * Render the function as a CloudFormation property + * @internal + */ + public _render(): any { + const parametersObj: Record = {}; + + Object.entries(this.parameters).forEach(([name, param]) => { + parametersObj[name] = param._render(); + }); + return { + name: this.name, + description: this.description, + parameters: parametersObj, + requireConfirmation: this.requireConfirmation, + }; + } +} + +/** + * Represents a function schema for a Bedrock Agent Action Group + */ +export class FunctionSchema extends ActionGroupSchema { + /** + * The functions defined in the schema + */ + public readonly functions: Function[]; + + constructor(props: FunctionSchemaProps) { + super(); + + if (!props.functions || props.functions.length === 0) { + throw new validation.ValidationError('At least one function must be defined in the function schema'); + } + + this.functions = props.functions.map(f => new Function(f)); + } + + /** + * Render the function schema as a CloudFormation property + * @internal + */ + public _render(): CfnAgent.FunctionSchemaProperty { + return { + functions: this.functions.map(f => f._render()), + }; + } +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/schema-base.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/schema-base.ts new file mode 100644 index 0000000000000..df1a7382a7a4b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/schema-base.ts @@ -0,0 +1,13 @@ +/** + * Base abstract class for all schema types used in Bedrock Agent Action Groups. + * This provides a common interface for both API schemas and function schemas. + * @internal + */ +export abstract class ActionGroupSchema { + /** + * Format as CFN properties + * + * @internal This is an internal core function and should not be called directly. + */ + public abstract _render(): any; +} diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts index 58a373002c9a6..7cd458e3713d9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/index.ts @@ -12,3 +12,4 @@ export * from './agents/agent-collaborator'; export * from './agents/agent-collaboration'; export * from './agents/orchestration-executor'; export * from './models'; +export * from './agents/function-schema'; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts index 8cd2a0a5f1405..78ff647b6fd7b 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-schema.test.ts @@ -1,136 +1,103 @@ -import { App } from 'aws-cdk-lib/core'; -import * as core from 'aws-cdk-lib/core'; +import { Stack } from 'aws-cdk-lib'; import * as s3 from 'aws-cdk-lib/aws-s3'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import { Template, Match } from 'aws-cdk-lib/assertions'; -import * as bedrock from '../../../lib'; +import { ApiSchema, AssetApiSchema, InlineApiSchema, S3ApiSchema } from '../../../bedrock/agents/api-schema'; describe('ApiSchema', () => { - let stack: core.Stack; + test('fromLocalAsset creates AssetApiSchema', () => { + const schema = ApiSchema.fromLocalAsset('path/to/schema.yaml'); + expect(schema).toBeInstanceOf(AssetApiSchema); + }); - beforeEach(() => { - const app = new App(); - stack = new core.Stack(app, 'test-stack'); + test('fromInline creates InlineApiSchema', () => { + const schema = ApiSchema.fromInline('{"openapi": "3.0.0"}'); + expect(schema).toBeInstanceOf(InlineApiSchema); }); - test('creates schema from inline content', () => { - const schema = bedrock.ApiSchema.fromInline(JSON.stringify({ - openapi: '3.0.0', - info: { title: 'Test API', version: '1.0.0' }, - paths: { - '/test': { - get: { - responses: { - 200: { - description: 'OK', - }, - }, - }, - }, - }, - })); + test('fromS3File creates S3ApiSchema', () => { + const bucket = s3.Bucket.fromBucketName(new Stack(), 'TestBucket', 'test-bucket'); + const schema = ApiSchema.fromS3File(bucket, 'path/to/schema.yaml'); + expect(schema).toBeInstanceOf(S3ApiSchema); + }); +}); - expect(schema._render()).toEqual({ - payload: JSON.stringify({ - openapi: '3.0.0', - info: { title: 'Test API', version: '1.0.0' }, - paths: { - '/test': { - get: { - responses: { - 200: { - description: 'OK', - }, - }, - }, - }, - }, - }), - }); +describe('AssetApiSchema', () => { + test('bind initializes asset', () => { + const stack = new Stack(); + const schema = new AssetApiSchema('test/bedrock/agents/test-schema.yaml'); + // Before binding, asset should be undefined + expect((schema as any).asset).toBeUndefined(); + schema.bind(stack); + // After binding, asset should be defined + expect((schema as any).asset).toBeDefined(); }); - test('creates schema from S3 location', () => { - const bucket = new s3.Bucket(stack, 'TestBucket'); - const schema = bedrock.ApiSchema.fromS3File(bucket, 'schema.json'); + test('bind only initializes asset once', () => { + const stack = new Stack(); + const schema = new AssetApiSchema('test/bedrock/agents/test-schema.yaml'); + schema.bind(stack); + const firstAsset = (schema as any).asset; + schema.bind(stack); + const secondAsset = (schema as any).asset; + // The asset should be the same instance + expect(firstAsset).toBe(secondAsset); + }); - const agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel: { - invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', - grantInvoke: (grantee) => { - return iam.Grant.addToPrincipal({ - grantee, - actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], - }); - }, - }, - }); + test('_render throws error if not bound', () => { + const schema = new AssetApiSchema('test/bedrock/agents/test-schema.yaml'); + expect(() => { + schema._render(); + }).toThrow('ApiSchema must be bound to a scope before rendering'); + }); - const actionGroup = new bedrock.AgentActionGroup({ - name: 'CustomAction', - enabled: true, - apiSchema: schema, - }); + test('_render returns correct structure after binding', () => { + const stack = new Stack(); + const schema = new AssetApiSchema('test/bedrock/agents/test-schema.yaml'); + schema.bind(stack); + const rendered = schema._render(); + expect(rendered).toHaveProperty('s3'); + expect(rendered.s3).toHaveProperty('s3BucketName'); + expect(rendered.s3).toHaveProperty('s3ObjectKey'); + }); +}); - agent.addActionGroup(actionGroup); +describe('InlineApiSchema', () => { + test('constructor sets inlineSchema', () => { + const schemaContent = '{"openapi": "3.0.0"}'; + const schema = new InlineApiSchema(schemaContent); + expect(schema.inlineSchema).toBe(schemaContent); + }); - expect(schema._render()).toEqual({ - s3: { - s3BucketName: bucket.bucketName, - s3ObjectKey: 'schema.json', - }, + test('_render returns payload property', () => { + const schemaContent = '{"openapi": "3.0.0"}'; + const schema = new InlineApiSchema(schemaContent); + const rendered = schema._render(); + expect(rendered).toEqual({ + payload: schemaContent, }); }); +}); - test('creates schema from inline content with minimal OpenAPI schema', () => { - const minimalSchema = { - openapi: '3.0.0', - info: { title: 'Minimal API', version: '1.0.0' }, - paths: {}, +describe('S3ApiSchema', () => { + test('constructor sets s3File', () => { + const location = { + bucketName: 'test-bucket', + objectKey: 'path/to/schema.yaml', }; - - const schema = bedrock.ApiSchema.fromInline(JSON.stringify(minimalSchema)); - expect(schema._render()).toEqual({ - payload: JSON.stringify(minimalSchema), - }); + const schema = new S3ApiSchema(location); + expect(schema.s3File).toBe(location); }); - test('grants read permissions to agent role', () => { - const bucket = new s3.Bucket(stack, 'TestBucket'); - const schema = bedrock.ApiSchema.fromS3File(bucket, 'schema.json'); - - const agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel: { - invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', - grantInvoke: (grantee) => { - return iam.Grant.addToPrincipal({ - grantee, - actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], - }); - }, - }, - }); - - const actionGroup = new bedrock.AgentActionGroup({ - name: 'CustomAction', - enabled: true, - apiSchema: schema, - }); - - agent.addActionGroup(actionGroup); - - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - PolicyDocument: { - Statement: Match.arrayWith([ - Match.objectLike({ - Action: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - Effect: 'Allow', - Resource: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', - }), - ]), + test('_render returns s3 property', () => { + const location = { + bucketName: 'test-bucket', + objectKey: 'path/to/schema.yaml', + }; + const schema = new S3ApiSchema(location); + const rendered = schema._render(); + expect(rendered).toEqual({ + s3: { + s3BucketName: 'test-bucket', + s3ObjectKey: 'path/to/schema.yaml', }, }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts new file mode 100644 index 0000000000000..f9c8079aef0f7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts @@ -0,0 +1,287 @@ +import { FunctionParameter, Function, FunctionSchema, ParameterType, RequireConfirmation } from '../../../bedrock/agents/function-schema'; +import { ValidationError } from '../../../bedrock/agents/validation-helpers'; + +describe('FunctionParameter', () => { + test('constructs with minimal properties', () => { + const param = new FunctionParameter({ + type: ParameterType.STRING, + }); + + expect(param.type).toEqual(ParameterType.STRING); + expect(param.required).toEqual(true); + expect(param.description).toBeUndefined(); + }); + + test('constructs with all properties', () => { + const param = new FunctionParameter({ + type: ParameterType.NUMBER, + required: false, + description: 'A test parameter', + }); + + expect(param.type).toEqual(ParameterType.NUMBER); + expect(param.required).toEqual(false); + expect(param.description).toEqual('A test parameter'); + }); + + test('validates description length', () => { + // Create a description that exceeds the max length of 500 + const longDescription = 'a'.repeat(501); + + expect(() => { + new FunctionParameter({ + type: ParameterType.STRING, + description: longDescription, + }); + }).toThrow(ValidationError); + }); + + test('renders correctly', () => { + const param = new FunctionParameter({ + type: ParameterType.BOOLEAN, + required: false, + description: 'A boolean parameter', + }); + + const rendered = param._render(); + expect(rendered).toEqual({ + type: ParameterType.BOOLEAN, + required: false, + description: 'A boolean parameter', + }); + }); + + test('renders without description', () => { + const param = new FunctionParameter({ + type: ParameterType.INTEGER, + required: true, + }); + + const rendered = param._render(); + expect(rendered).toEqual({ + type: ParameterType.INTEGER, + required: true, + description: undefined, + }); + }); +}); + +describe('Function', () => { + test('constructs with minimal properties', () => { + const func = new Function({ + name: 'testFunction', + description: 'A test function', + }); + + expect(func.name).toEqual('testFunction'); + expect(func.description).toEqual('A test function'); + expect(func.parameters).toEqual({}); + expect(func.requireConfirmation).toEqual(RequireConfirmation.DISABLED); + }); + + test('constructs with all properties', () => { + const func = new Function({ + name: 'testFunction', + description: 'A test function', + parameters: { + param1: { + type: ParameterType.STRING, + required: true, + description: 'A string parameter', + }, + param2: { + type: ParameterType.NUMBER, + required: false, + }, + }, + requireConfirmation: RequireConfirmation.ENABLED, + }); + + expect(func.name).toEqual('testFunction'); + expect(func.description).toEqual('A test function'); + expect(Object.keys(func.parameters)).toEqual(['param1', 'param2']); + expect(func.parameters.param1.type).toEqual(ParameterType.STRING); + expect(func.parameters.param2.required).toEqual(false); + expect(func.requireConfirmation).toEqual(RequireConfirmation.ENABLED); + }); + + test('validates function name length', () => { + // Create a name that exceeds the max length of 100 + const longName = 'a'.repeat(101); + + expect(() => { + new Function({ + name: longName, + description: 'A test function', + }); + }).toThrow(ValidationError); + }); + + test('validates function description length', () => { + // Create a description that exceeds the max length of 500 + const longDescription = 'a'.repeat(501); + + expect(() => { + new Function({ + name: 'testFunction', + description: longDescription, + }); + }).toThrow(ValidationError); + }); + + test('validates parameter name length', () => { + // Create a parameter name that exceeds the max length of 100 + const longParamName = 'a'.repeat(101); + + expect(() => { + new Function({ + name: 'testFunction', + description: 'A test function', + parameters: { + [longParamName]: { + type: ParameterType.STRING, + }, + }, + }); + }).toThrow(ValidationError); + }); + + test('renders correctly with parameters', () => { + const func = new Function({ + name: 'testFunction', + description: 'A test function', + parameters: { + param1: { + type: ParameterType.STRING, + description: 'A string parameter', + }, + param2: { + type: ParameterType.BOOLEAN, + required: false, + }, + }, + requireConfirmation: RequireConfirmation.ENABLED, + }); + + const rendered = func._render(); + expect(rendered).toEqual({ + name: 'testFunction', + description: 'A test function', + parameters: { + param1: { + type: ParameterType.STRING, + required: true, + description: 'A string parameter', + }, + param2: { + type: ParameterType.BOOLEAN, + required: false, + description: undefined, + }, + }, + requireConfirmation: RequireConfirmation.ENABLED, + }); + }); + + test('renders correctly without parameters', () => { + const func = new Function({ + name: 'testFunction', + description: 'A test function', + }); + + const rendered = func._render(); + expect(rendered).toEqual({ + name: 'testFunction', + description: 'A test function', + parameters: {}, + requireConfirmation: RequireConfirmation.DISABLED, + }); + }); +}); + +describe('FunctionSchema', () => { + test('constructs with functions', () => { + const schema = new FunctionSchema({ + functions: [ + { + name: 'function1', + description: 'First test function', + }, + { + name: 'function2', + description: 'Second test function', + parameters: { + param1: { + type: ParameterType.STRING, + }, + }, + }, + ], + }); + + expect(schema.functions.length).toEqual(2); + expect(schema.functions[0].name).toEqual('function1'); + expect(schema.functions[1].name).toEqual('function2'); + }); + + test('throws error when no functions provided', () => { + expect(() => { + new FunctionSchema({ + functions: [], + }); + }).toThrow(ValidationError); + }); + + test('renders correctly', () => { + const schema = new FunctionSchema({ + functions: [ + { + name: 'function1', + description: 'First test function', + }, + { + name: 'function2', + description: 'Second test function', + parameters: { + param1: { + type: ParameterType.STRING, + }, + }, + requireConfirmation: RequireConfirmation.ENABLED, + }, + ], + }); + + const rendered = schema._render(); + expect(rendered).toEqual({ + functions: [ + { + name: 'function1', + description: 'First test function', + parameters: {}, + requireConfirmation: RequireConfirmation.DISABLED, + }, + { + name: 'function2', + description: 'Second test function', + parameters: { + param1: { + type: ParameterType.STRING, + required: true, + description: undefined, + }, + }, + requireConfirmation: RequireConfirmation.ENABLED, + }, + ], + }); + }); + + test('handles undefined functions array', () => { + expect(() => { + new FunctionSchema({ + functions: undefined as any, + }); + }).toThrow(ValidationError); + }); +}); \ No newline at end of file From 7b4c4c66adbf92dfecd1dee4c8b24f8b7624a1f2 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 21 May 2025 10:30:43 -0400 Subject: [PATCH 29/39] fix(bedrockl2): added function schema to bedrock l2 --- .../test/bedrock/agents/function-schema.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts index f9c8079aef0f7..57d35eff09088 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/function-schema.test.ts @@ -284,4 +284,4 @@ describe('FunctionSchema', () => { }); }).toThrow(ValidationError); }); -}); \ No newline at end of file +}); From e2a47f800cdf5c6e3c61c71ea8cf6b90f58b41ca Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 26 May 2025 12:46:51 -0400 Subject: [PATCH 30/39] fix(bedrockl2): review comments implemented --- .../bedrock/agents/agent-collaborator.ts | 13 - .../aws-bedrock-alpha/bedrock/agents/agent.ts | 39 +- .../bedrock/agents/function-schema.ts | 2 +- .../bedrock/agents/agent-collaborator.test.ts | 55 - ...efaultTestDeployAssert1DDDDC57.assets.json | 20 - ...aultTestDeployAssert1DDDDC57.template.json | 36 - .../schema/s3-api-schema.json | 33 - .../index.js | 1 - ...7ec9abfe095d23781b749728b998315f3ad732.zip | 3 - .../index.py | 388 ------ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 - .../aws-cdk-bedrock-api-schema-1.assets.json | 90 -- ...aws-cdk-bedrock-api-schema-1.template.json | 1065 ----------------- .../integ.api-schema.js.snapshot/cdk.out | 1 - .../integ.api-schema.js.snapshot/integ.json | 13 - .../manifest.json | 716 ----------- .../integ.api-schema.js.snapshot/tree.json | 1 - 17 files changed, 27 insertions(+), 2469 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts index a1c3ee5796b7a..25bc47fb0eda1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -109,22 +109,9 @@ export class AgentCollaborator { } private validateProps(props: AgentCollaboratorProps) { - // Validate required properties - if (!props.agentAlias) { - throw new ValidationError('agentAlias is required for AgentCollaborator'); - } - if (props.agentAlias.aliasId === 'TSTALIASID') { throw new ValidationError('Agent cannot collaborate with TSTALIASID alias of another agent'); } - - if (!props.collaborationInstruction || props.collaborationInstruction.trim() === '') { - throw new ValidationError('collaborationInstruction is required and cannot be empty'); - } - - if (!props.collaboratorName || props.collaboratorName.trim() === '') { - throw new ValidationError('collaboratorName is required and cannot be empty'); - } } /** diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index baaad379a7d77..183b40c732b77 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -586,23 +586,36 @@ export class Agent extends AgentBase implements IAgent { // Handle permissions to access the schema file from S3 if (actionGroup.apiSchema instanceof AssetApiSchema) { const rendered = actionGroup.apiSchema._render(); - if ('s3' in rendered && rendered.s3) { - const s3Config = rendered.s3; - if ('s3BucketName' in s3Config && 's3ObjectKey' in s3Config) { - const bucketName = s3Config.s3BucketName; - const objectKey = s3Config.s3ObjectKey; - if (bucketName && objectKey) { - const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, bucketName); - bucket.grantRead(this.role, objectKey); - } - } + if (!('s3' in rendered) || !rendered.s3) { + throw new ValidationError('S3 configuration is missing in AssetApiSchema', this); } + const s3Config = rendered.s3; + if (!('s3BucketName' in s3Config) || !('s3ObjectKey' in s3Config)) { + throw new ValidationError('S3 bucket name and object key are required in AssetApiSchema', this); + } + const bucketName = s3Config.s3BucketName; + const objectKey = s3Config.s3ObjectKey; + if (!bucketName || bucketName.trim() === '') { + throw new ValidationError('S3 bucket name cannot be empty in AssetApiSchema', this); + } + if (!objectKey || objectKey.trim() === '') { + throw new ValidationError('S3 object key cannot be empty in AssetApiSchema', this); + } + const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, bucketName); + bucket.grantRead(this.role, objectKey); } else if (actionGroup.apiSchema instanceof S3ApiSchema) { const s3File = actionGroup.apiSchema.s3File; - if (s3File && s3File.bucketName && s3File.objectKey) { - const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, s3File.bucketName); - bucket.grantRead(this.role, s3File.objectKey); + if (!s3File) { + throw new ValidationError('S3 file configuration is missing in S3ApiSchema', this); + } + if (!s3File.bucketName || s3File.bucketName.trim() === '') { + throw new ValidationError('S3 bucket name cannot be empty in S3ApiSchema', this); + } + if (!s3File.objectKey || s3File.objectKey.trim() === '') { + throw new ValidationError('S3 object key cannot be empty in S3ApiSchema', this); } + const bucket = s3.Bucket.fromBucketName(this, `${actionGroup.name}SchemaBucket`, s3File.bucketName); + bucket.grantRead(this.role, s3File.objectKey); } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts index 569f3e93761b6..5f5fbab75c8d9 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/function-schema.ts @@ -137,7 +137,7 @@ export class FunctionParameter { const descErrors = validation.validateStringFieldLength({ fieldName: 'parameter description', value: props.description, - minLength: 0, + minLength: 1, maxLength: 500, }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts index fd5a2754fb3ab..7db8fa1d674d4 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts @@ -46,17 +46,6 @@ describe('AgentCollaborator', () => { expect(collaborator.relayConversationHistory).toBe(true); }); - test('throws error when agentAlias is missing', () => { - // THEN - expect(() => { - new AgentCollaborator({ - agentAlias: undefined as any, - collaborationInstruction: 'Test instruction', - collaboratorName: 'Test collaborator', - }); - }).toThrow('agentAlias is required for AgentCollaborator'); - }); - test('throws error when using TSTALIASID', () => { // GIVEN const testAlias = { @@ -74,50 +63,6 @@ describe('AgentCollaborator', () => { }).toThrow('Agent cannot collaborate with TSTALIASID alias of another agent'); }); - test('throws error when collaborationInstruction is empty', () => { - // THEN - expect(() => { - new AgentCollaborator({ - agentAlias: mockAgentAlias, - collaborationInstruction: '', - collaboratorName: 'Test collaborator', - }); - }).toThrow('collaborationInstruction is required and cannot be empty'); - }); - - test('throws error when collaborationInstruction is whitespace', () => { - // THEN - expect(() => { - new AgentCollaborator({ - agentAlias: mockAgentAlias, - collaborationInstruction: ' ', - collaboratorName: 'Test collaborator', - }); - }).toThrow('collaborationInstruction is required and cannot be empty'); - }); - - test('throws error when collaboratorName is empty', () => { - // THEN - expect(() => { - new AgentCollaborator({ - agentAlias: mockAgentAlias, - collaborationInstruction: 'Test instruction', - collaboratorName: '', - }); - }).toThrow('collaboratorName is required and cannot be empty'); - }); - - test('throws error when collaboratorName is whitespace', () => { - // THEN - expect(() => { - new AgentCollaborator({ - agentAlias: mockAgentAlias, - collaborationInstruction: 'Test instruction', - collaboratorName: ' ', - }); - }).toThrow('collaboratorName is required and cannot be empty'); - }); - test('renders with relayConversationHistory true', () => { // GIVEN const collaborator = new AgentCollaborator({ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json deleted file mode 100644 index 686fe01004943..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", - "source": { - "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json deleted file mode 100644 index a9d7497c0610b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "S3 API Schema", - "version": "1.0.0" - }, - "paths": { - "/s3hello": { - "get": { - "operationId": "s3HelloWorld", - "summary": "Say hello from S3", - "description": "Returns a greeting message from S3-stored schema", - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js deleted file mode 100644 index 1002ba018e9fb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip deleted file mode 100644 index 27701642bd351..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cb535ed82989fc5837b1e6feae1b9a4f6f7e8bfe828e3d3878a98f4ca57486d -size 19914833 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py deleted file mode 100644 index aeb2132fc67bb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py +++ /dev/null @@ -1,388 +0,0 @@ -import contextlib -import json -import logging -import os -import shutil -import subprocess -import tempfile -import urllib.parse -from urllib.request import Request, urlopen -from uuid import uuid4 -from zipfile import ZipFile - -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -cloudfront = boto3.client('cloudfront') -s3 = boto3.client('s3') - -CFN_SUCCESS = "SUCCESS" -CFN_FAILED = "FAILED" -ENV_KEY_MOUNT_PATH = "MOUNT_PATH" -ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" - -AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" -CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" - -os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) - -def handler(event, context): - - def cfn_error(message=None): - if message: - logger.error("| cfn_error: %s" % message.encode()) - cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) - - - try: - # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper - # with the response CloudFormation sees from this Custom Resource execution. - logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) - - # cloudformation request type (create/update/delete) - request_type = event['RequestType'] - - # extract resource properties - props = event['ResourceProperties'] - old_props = event.get('OldResourceProperties', {}) - physical_id = event.get('PhysicalResourceId', None) - - try: - source_bucket_names = props['SourceBucketNames'] - source_object_keys = props['SourceObjectKeys'] - source_markers = props.get('SourceMarkers', None) - source_markers_config = props.get('SourceMarkersConfig', None) - dest_bucket_name = props['DestinationBucketName'] - dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') - extract = props.get('Extract', 'true') == 'true' - retain_on_delete = props.get('RetainOnDelete', "true") == "true" - distribution_id = props.get('DistributionId', '') - user_metadata = props.get('UserMetadata', {}) - system_metadata = props.get('SystemMetadata', {}) - prune = props.get('Prune', 'true').lower() == 'true' - exclude = props.get('Exclude', []) - include = props.get('Include', []) - sign_content = props.get('SignContent', 'false').lower() == 'true' - output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' - - # backwards compatibility - if "SourceMarkers" is not specified, - # assume all sources have an empty market map - if source_markers is None: - source_markers = [{} for i in range(len(source_bucket_names))] - if source_markers_config is None: - source_markers_config = [{} for i in range(len(source_bucket_names))] - - default_distribution_path = dest_bucket_prefix - if not default_distribution_path.endswith("/"): - default_distribution_path += "/" - if not default_distribution_path.startswith("/"): - default_distribution_path = "/" + default_distribution_path - default_distribution_path += "*" - - distribution_paths = props.get('DistributionPaths', [default_distribution_path]) - except KeyError as e: - cfn_error("missing request resource property %s. props: %s" % (str(e), props)) - return - - # configure aws cli options after resetting back to the defaults for each request - if os.path.exists(AWS_CLI_CONFIG_FILE): - os.remove(AWS_CLI_CONFIG_FILE) - if sign_content: - aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") - - # treat "/" as if no prefix was specified - if dest_bucket_prefix == "/": - dest_bucket_prefix = "" - - s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) - s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) - old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) - - - # obviously this is not - if old_s3_dest == "s3:///": - old_s3_dest = None - - logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) - logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) - - # if we are creating a new resource, allocate a physical id for it - # otherwise, we expect physical id to be relayed by cloudformation - if request_type == "Create": - physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) - else: - if not physical_id: - cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) - return - - # delete or create/update (only if "retain_on_delete" is false) - if request_type == "Delete" and not retain_on_delete: - if not bucket_owned(dest_bucket_name, dest_bucket_prefix): - aws_command("s3", "rm", s3_dest, "--recursive") - - # if we are updating without retention and the destination changed, delete first - if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: - if not old_s3_dest: - logger.warn("cannot delete old resource without old resource properties") - return - - aws_command("s3", "rm", old_s3_dest, "--recursive") - - if request_type == "Update" or request_type == "Create": - s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) - - if distribution_id: - cloudfront_invalidate(distribution_id, distribution_paths) - - cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ - # Passing through the ARN sequences dependencees on the deployment - 'DestinationBucketArn': props.get('DestinationBucketArn'), - **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) - }) - except KeyError as e: - cfn_error("invalid request. Missing key %s" % str(e)) - except Exception as e: - logger.exception(e) - cfn_error(str(e)) - -#--------------------------------------------------------------------------------------------------- -# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities -def sanitize_message(message): - if not message: - return message - - # Sanitize the message to prevent log injection and HTTP response splitting - sanitized_message = message.replace('\n', '').replace('\r', '') - - # Encode the message to handle special characters - encoded_message = urllib.parse.quote(sanitized_message) - - return encoded_message - -#--------------------------------------------------------------------------------------------------- -# populate all files from s3_source_zips to a destination bucket -def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): - # list lengths are equal - if len(s3_source_zips) != len(source_markers): - raise Exception("'source_markers' and 's3_source_zips' must be the same length") - - # create a temporary working directory in /tmp or if enabled an attached efs volume - if ENV_KEY_MOUNT_PATH in os.environ: - workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) - os.mkdir(workdir) - else: - workdir = tempfile.mkdtemp() - - logger.info("| workdir: %s" % workdir) - - # create a directory into which we extract the contents of the zip file - contents_dir=os.path.join(workdir, 'contents') - os.mkdir(contents_dir) - - try: - # download the archive from the source and extract to "contents" - for i in range(len(s3_source_zips)): - s3_source_zip = s3_source_zips[i] - markers = source_markers[i] - markers_config = source_markers_config[i] - - if extract: - archive=os.path.join(workdir, str(uuid4())) - logger.info("archive: %s" % archive) - aws_command("s3", "cp", s3_source_zip, archive) - logger.info("| extracting archive to: %s\n" % contents_dir) - logger.info("| markers: %s" % markers) - extract_and_replace_markers(archive, contents_dir, markers, markers_config) - else: - logger.info("| copying archive to: %s\n" % contents_dir) - aws_command("s3", "cp", s3_source_zip, contents_dir) - - # sync from "contents" to destination - - s3_command = ["s3", "sync"] - - if prune: - s3_command.append("--delete") - - if exclude: - for filter in exclude: - s3_command.extend(["--exclude", filter]) - - if include: - for filter in include: - s3_command.extend(["--include", filter]) - - s3_command.extend([contents_dir, s3_dest]) - s3_command.extend(create_metadata_args(user_metadata, system_metadata)) - aws_command(*s3_command) - finally: - if not os.getenv(ENV_KEY_SKIP_CLEANUP): - shutil.rmtree(workdir) - -#--------------------------------------------------------------------------------------------------- -# invalidate files in the CloudFront distribution edge caches -def cloudfront_invalidate(distribution_id, distribution_paths): - invalidation_resp = cloudfront.create_invalidation( - DistributionId=distribution_id, - InvalidationBatch={ - 'Paths': { - 'Quantity': len(distribution_paths), - 'Items': distribution_paths - }, - 'CallerReference': str(uuid4()), - }) - # by default, will wait up to 10 minutes - cloudfront.get_waiter('invalidation_completed').wait( - DistributionId=distribution_id, - Id=invalidation_resp['Invalidation']['Id']) - -#--------------------------------------------------------------------------------------------------- -# set metadata -def create_metadata_args(raw_user_metadata, raw_system_metadata): - if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: - return [] - - format_system_metadata_key = lambda k: k.lower() - format_user_metadata_key = lambda k: k.lower() - - system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } - user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } - - flatten = lambda l: [item for sublist in l for item in sublist] - system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) - user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] - - return system_args + user_args + ["--metadata-directive", "REPLACE"] - -#--------------------------------------------------------------------------------------------------- -# executes an "aws" cli command -def aws_command(*args): - aws="/opt/awscli/aws" # from AwsCliLayer - logger.info("| aws %s" % ' '.join(args)) - subprocess.check_call([aws] + list(args)) - -#--------------------------------------------------------------------------------------------------- -# sends a response to cloudformation -def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): - - responseUrl = event['ResponseURL'] - - responseBody = {} - responseBody['Status'] = responseStatus - responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) - responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name - responseBody['StackId'] = event['StackId'] - responseBody['RequestId'] = event['RequestId'] - responseBody['LogicalResourceId'] = event['LogicalResourceId'] - responseBody['NoEcho'] = noEcho - responseBody['Data'] = responseData - - body = json.dumps(responseBody) - logger.info("| response body:\n" + body) - - headers = { - 'content-type' : '', - 'content-length' : str(len(body)) - } - - try: - request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) - with contextlib.closing(urlopen(request)) as response: - logger.info("| status code: " + response.reason) - except Exception as e: - logger.error("| unable to send response to CloudFormation") - logger.exception(e) - - -#--------------------------------------------------------------------------------------------------- -# check if bucket is owned by a custom resource -# if it is then we don't want to delete content -def bucket_owned(bucketName, keyPrefix): - tag = CUSTOM_RESOURCE_OWNER_TAG - if keyPrefix != "": - tag = tag + ':' + keyPrefix - try: - request = s3.get_bucket_tagging( - Bucket=bucketName, - ) - return any((x["Key"].startswith(tag)) for x in request["TagSet"]) - except Exception as e: - logger.info("| error getting tags from bucket") - logger.exception(e) - return False - -# extract archive and replace markers in output files -def extract_and_replace_markers(archive, contents_dir, markers, markers_config): - with ZipFile(archive, "r") as zip: - zip.extractall(contents_dir) - - # replace markers for this source - for file in zip.namelist(): - file_path = os.path.join(contents_dir, file) - if os.path.isdir(file_path): continue - replace_markers(file_path, markers, markers_config) - -def prepare_json_safe_markers(markers): - """Pre-process markers to ensure JSON-safe values""" - safe_markers = {} - for key, value in markers.items(): - # Serialize the value as JSON to handle escaping if the value is a string - serialized = json.dumps(value) - if serialized.startswith('"') and serialized.endswith('"'): - json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes - else: - json_safe_value = serialized - safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') - return safe_markers - -def replace_markers(filename, markers, markers_config): - """Replace markers in a file, with special handling for JSON files.""" - # if there are no markers, skip - if not markers: - return - - outfile = filename + '.new' - json_escape = markers_config.get('jsonEscape', 'false').lower() - if json_escape == 'true': - replace_tokens = prepare_json_safe_markers(markers) - else: - replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) - - # Handle content with line-by-line binary replacement - with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: - # Process line by line to handle large files - for line in fi: - for token, replacement in replace_tokens.items(): - line = line.replace(token, replacement) - fo.write(line) - - # Delete the original file and rename the new one to the original - os.remove(filename) - os.rename(outfile, filename) - -def replace_markers_in_json(json_object, replace_tokens): - """Replace markers in JSON content with proper escaping.""" - try: - def replace_in_structure(obj): - if isinstance(obj, str): - # Convert string to bytes for consistent replacement - result = obj.encode('utf-8') - for token, replacement in replace_tokens.items(): - result = result.replace(token, replacement) - # Convert back to string - return result.decode('utf-8') - elif isinstance(obj, dict): - return {k: replace_in_structure(v) for k, v in obj.items()} - elif isinstance(obj, list): - return [replace_in_structure(item) for item in obj] - return obj - - # Process the whole structure - processed = replace_in_structure(json_object) - return json.dumps(processed) - except Exception as e: - logger.error(f'Error processing JSON: {e}') - logger.exception(e) - return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml deleted file mode 100644 index 4accd4cadb267..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.3 -info: - title: Asset API Schema - version: 1.0.0 -paths: - /asset: - get: - operationId: assetHelloWorld - summary: Say hello from asset - description: Returns a greeting message from asset-stored schema - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - message: - type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json deleted file mode 100644 index 96da65f2211ba..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { - "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", - "source": { - "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732": { - "displayName": "DeploySchema/AwsCliLayer/Code", - "source": { - "path": "asset.8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { - "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", - "source": { - "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { - "displayName": "DeploySchema/Asset1", - "source": { - "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { - "displayName": "Schema", - "source": { - "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45": { - "displayName": "aws-cdk-bedrock-api-schema-1 Template", - "source": { - "path": "aws-cdk-bedrock-api-schema-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json deleted file mode 100644 index 822fe670f8bd1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json +++ /dev/null @@ -1,1065 +0,0 @@ -{ - "Resources": { - "AssetActionGroupFunctionServiceRoleC53BA920": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "AssetActionGroupFunction98EC70AB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "AssetActionGroupFunctionServiceRoleC53BA920", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "AssetActionGroupFunctionServiceRoleC53BA920" - ] - }, - "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "InlineActionGroupFunctionServiceRole5543D9A3": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "InlineActionGroupFunction566CD00A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "InlineActionGroupFunctionServiceRole5543D9A3", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "InlineActionGroupFunctionServiceRole5543D9A3" - ] - }, - "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "S3ActionGroupFunctionServiceRole7E4C5A58": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "S3ActionGroupFunctionA4648C25": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionServiceRole7E4C5A58", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "S3ActionGroupFunctionServiceRole7E4C5A58" - ] - }, - "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "SchemaBucket79EE2269": { - "Type": "AWS::S3::Bucket", - "Properties": { - "Tags": [ - { - "Key": "aws-cdk:auto-delete-objects", - "Value": "true" - }, - { - "Key": "aws-cdk:cr-owned:911f5017", - "Value": "true" - } - ] - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "SchemaBucketPolicy557840E2": { - "Type": "AWS::S3::BucketPolicy", - "Properties": { - "Bucket": { - "Ref": "SchemaBucket79EE2269" - }, - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:List*", - "s3:PutBucketPolicy" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - } - }, - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - } - } - }, - "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { - "Type": "Custom::S3AutoDeleteObjects", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", - "Arn" - ] - }, - "BucketName": { - "Ref": "SchemaBucket79EE2269" - } - }, - "DependsOn": [ - "SchemaBucketPolicy557840E2" - ], - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ] - }, - "ManagedPolicyArns": [ - { - "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - } - ] - } - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" - }, - "Timeout": 900, - "MemorySize": 128, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - }, - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, - "Description": { - "Fn::Join": [ - "", - [ - "Lambda function for auto-deleting objects in ", - { - "Ref": "SchemaBucket79EE2269" - }, - " S3 bucket." - ] - ] - } - }, - "DependsOn": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - ] - }, - "DeploySchemaAwsCliLayerD0D0BA6E": { - "Type": "AWS::Lambda::LayerVersion", - "Properties": { - "Content": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip" - }, - "Description": "/opt/awscli/aws" - } - }, - "DeploySchemaCustomResource277E9836": { - "Type": "Custom::CDKBucketDeployment", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn" - ] - }, - "SourceBucketNames": [ - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ], - "SourceObjectKeys": [ - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" - ], - "SourceMarkers": [ - {} - ], - "DestinationBucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "Prune": true, - "OutputObjectKeys": true - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - } - ] - }, - { - "Action": [ - "s3:Abort*", - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*", - "s3:PutObject", - "s3:PutObjectLegalHold", - "s3:PutObjectRetention", - "s3:PutObjectTagging", - "s3:PutObjectVersionTagging" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "Roles": [ - { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" - }, - "Environment": { - "Variables": { - "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" - } - }, - "Handler": "index.handler", - "Layers": [ - { - "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "Role": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - "Arn" - ] - }, - "Runtime": "python3.11", - "Timeout": 900 - }, - "DependsOn": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - ] - }, - "ApiSchemaAgentRole636AC572": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - }, - "/schema/s3-api-schema.json" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - } - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "Roles": [ - { - "Ref": "ApiSchemaAgentRole636AC572" - } - ] - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgent8E965D9C": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - } - }, - "ActionGroupName": "AssetApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - } - }, - "Description": "An action group using a local asset API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - } - }, - "ActionGroupName": "InlineApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group using an inline API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - } - }, - "ActionGroupName": "S3ApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "S3ObjectKey": "schema/s3-api-schema.json" - } - }, - "Description": "An action group using an S3-based API schema", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "api-schema-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "ApiSchemaAgentRole636AC572", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - } - }, - "Mappings": { - "LatestNodeRuntimeMap": { - "af-south-1": { - "value": "nodejs20.x" - }, - "ap-east-1": { - "value": "nodejs20.x" - }, - "ap-east-2": { - "value": "nodejs20.x" - }, - "ap-northeast-1": { - "value": "nodejs20.x" - }, - "ap-northeast-2": { - "value": "nodejs20.x" - }, - "ap-northeast-3": { - "value": "nodejs20.x" - }, - "ap-south-1": { - "value": "nodejs20.x" - }, - "ap-south-2": { - "value": "nodejs20.x" - }, - "ap-southeast-1": { - "value": "nodejs20.x" - }, - "ap-southeast-2": { - "value": "nodejs20.x" - }, - "ap-southeast-3": { - "value": "nodejs20.x" - }, - "ap-southeast-4": { - "value": "nodejs20.x" - }, - "ap-southeast-5": { - "value": "nodejs20.x" - }, - "ap-southeast-7": { - "value": "nodejs20.x" - }, - "ca-central-1": { - "value": "nodejs20.x" - }, - "ca-west-1": { - "value": "nodejs20.x" - }, - "cn-north-1": { - "value": "nodejs20.x" - }, - "cn-northwest-1": { - "value": "nodejs20.x" - }, - "eu-central-1": { - "value": "nodejs20.x" - }, - "eu-central-2": { - "value": "nodejs20.x" - }, - "eu-isoe-west-1": { - "value": "nodejs18.x" - }, - "eu-north-1": { - "value": "nodejs20.x" - }, - "eu-south-1": { - "value": "nodejs20.x" - }, - "eu-south-2": { - "value": "nodejs20.x" - }, - "eu-west-1": { - "value": "nodejs20.x" - }, - "eu-west-2": { - "value": "nodejs20.x" - }, - "eu-west-3": { - "value": "nodejs20.x" - }, - "il-central-1": { - "value": "nodejs20.x" - }, - "me-central-1": { - "value": "nodejs20.x" - }, - "me-south-1": { - "value": "nodejs20.x" - }, - "mx-central-1": { - "value": "nodejs20.x" - }, - "sa-east-1": { - "value": "nodejs20.x" - }, - "us-east-1": { - "value": "nodejs20.x" - }, - "us-east-2": { - "value": "nodejs20.x" - }, - "us-gov-east-1": { - "value": "nodejs20.x" - }, - "us-gov-west-1": { - "value": "nodejs20.x" - }, - "us-iso-east-1": { - "value": "nodejs18.x" - }, - "us-iso-west-1": { - "value": "nodejs18.x" - }, - "us-isob-east-1": { - "value": "nodejs18.x" - }, - "us-isob-west-1": { - "value": "nodejs18.x" - }, - "us-west-1": { - "value": "nodejs20.x" - }, - "us-west-2": { - "value": "nodejs20.x" - } - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json deleted file mode 100644 index d600c50c982b6..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockApiSchema/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-api-schema-1" - ], - "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", - "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json deleted file mode 100644 index 776515753cf3f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json +++ /dev/null @@ -1,716 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-api-schema-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-api-schema-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-api-schema-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7db79be6c96c6a2d791d61417a7c708882286afde944785eea3edb7ac7889a45.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionServiceRoleC53BA920" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunction98EC70AB" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionServiceRole5543D9A3" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunction566CD00A" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionServiceRole7E4C5A58" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionA4648C25" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "removalPolicy": "destroy", - "autoDeleteObjects": true - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucket79EE2269" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "bucket": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketPolicy557840E2" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" - } - ], - "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ - { - "type": "aws:cdk:logicalId", - "data": "LatestNodeRuntimeMap" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ - { - "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", - "data": true - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ - { - "type": "aws:cdk:analytics:construct", - "data": {} - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "uuid": "*", - "layers": [ - "*" - ], - "environment": "*", - "lambdaPurpose": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - true - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - "*" - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaCustomResource277E9836" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "layers": [ - "*" - ], - "environment": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addEnvironment": [ - "*", - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addLayers": [ - "*" - ] - } - }, - { - "type": "aws:cdk:is-custom-resource-handler-singleton", - "data": true - }, - { - "type": "aws:cdk:is-custom-resource-handler-runtime-family", - "data": 2 - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRole636AC572" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgent8E965D9C" - } - ], - "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-api-schema-1" - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "metadata": { - "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1015.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json deleted file mode 100644 index 7033cdf5d8356..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"8a84a8f465fbe0c48af2c256847ec9abfe095d23781b749728b998315f3ad732.zip"},"description":"/opt/awscli/aws"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From bfe3cfd232fde98bc8a9e07531cba7141bd8b0d9 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 26 May 2025 15:05:24 -0400 Subject: [PATCH 31/39] fix(bedrockl2): pushed yarn.lock --- yarn.lock | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index d55c9569da7dd..a24d9bf18869e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -88,7 +88,7 @@ jsonschema "~1.4.1" semver "^7.7.1" -"@aws-cdk/integ-runner@^2.186.9": +"@aws-cdk/integ-runner@^2.186.0", "@aws-cdk/integ-runner@^2.186.9": version "2.186.9" resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.9.tgz#f87f79edf739e43edecab3aa8802882d56484920" integrity sha512-0LCmb7bONOxCdF3nxBOOpQtwlOlGyEo9YmnGsYwDbvoYHGM4vHUYJP1F5m0ZjC9uolN2q2JFjIE9W7zePhVe4w== @@ -5354,11 +5354,17 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-cdk@2.1007.0: + version "2.1007.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" + integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== + optionalDependencies: + fsevents "2.3.2" + aws-cdk@2.1016.1: version "2.1016.1" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1016.1.tgz#09df749f3c35ec7b858277711e1b5456688fb2bc" - integrity sha512-248TBiluT8jHUjkpzvWJOHv2fS+An9fiII3eji8H7jwfTu5yMBk7on4B/AVNr9A1GXJk9I32qf9Q0A3rLWRYPQ== - + integrity sha512-248TBiluT8jHUjkpzvWJOHv2fS+An9fiII3eji8H7jwfTu5yMBk7on4B/AVNr9A1GXJk9I32qf9Q0A3rLWRYPQ== optionalDependencies: fsevents "2.3.2" @@ -13758,7 +13764,7 @@ ts-api-utils@^2.1.0: resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== -ts-jest@^29, ts-jest@^29.3.4: +ts-jest@^29, ts-jest@^29.2.5, ts-jest@^29.3.4: version "29.3.4" resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.4.tgz#9354472aceae1d3867a80e8e02014ea5901aee41" integrity sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA== From 4bf03509d26c62ef8b92f2e3f5ba5761d5f5a766 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Mon, 26 May 2025 15:35:01 -0400 Subject: [PATCH 32/39] fix(bedrockl2): added integ test case for apischema --- ...efaultTestDeployAssert1DDDDC57.assets.json | 20 + ...aultTestDeployAssert1DDDDC57.template.json | 36 + .../schema/s3-api-schema.json | 33 + .../index.js | 1 + .../index.py | 388 ++++++ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 + ...a1c3a55395746c48b28c003b08bc1d08688f3e.zip | 3 + .../aws-cdk-bedrock-api-schema-1.assets.json | 90 ++ ...aws-cdk-bedrock-api-schema-1.template.json | 1065 +++++++++++++++++ .../integ.api-schema.js.snapshot/cdk.out | 1 + .../integ.api-schema.js.snapshot/integ.json | 13 + .../manifest.json | 716 +++++++++++ .../integ.api-schema.js.snapshot/tree.json | 1 + 13 files changed, 2387 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json new file mode 100644 index 0000000000000..0aa925a7c6b21 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json @@ -0,0 +1,20 @@ +{ + "version": "43.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", + "source": { + "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json new file mode 100644 index 0000000000000..a9d7497c0610b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json @@ -0,0 +1,33 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py new file mode 100644 index 0000000000000..aeb2132fc67bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py @@ -0,0 +1,388 @@ +import contextlib +import json +import logging +import os +import shutil +import subprocess +import tempfile +import urllib.parse +from urllib.request import Request, urlopen +from uuid import uuid4 +from zipfile import ZipFile + +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +cloudfront = boto3.client('cloudfront') +s3 = boto3.client('s3') + +CFN_SUCCESS = "SUCCESS" +CFN_FAILED = "FAILED" +ENV_KEY_MOUNT_PATH = "MOUNT_PATH" +ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" + +AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" +CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" + +os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) + +def handler(event, context): + + def cfn_error(message=None): + if message: + logger.error("| cfn_error: %s" % message.encode()) + cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) + + + try: + # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper + # with the response CloudFormation sees from this Custom Resource execution. + logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) + + # cloudformation request type (create/update/delete) + request_type = event['RequestType'] + + # extract resource properties + props = event['ResourceProperties'] + old_props = event.get('OldResourceProperties', {}) + physical_id = event.get('PhysicalResourceId', None) + + try: + source_bucket_names = props['SourceBucketNames'] + source_object_keys = props['SourceObjectKeys'] + source_markers = props.get('SourceMarkers', None) + source_markers_config = props.get('SourceMarkersConfig', None) + dest_bucket_name = props['DestinationBucketName'] + dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') + extract = props.get('Extract', 'true') == 'true' + retain_on_delete = props.get('RetainOnDelete', "true") == "true" + distribution_id = props.get('DistributionId', '') + user_metadata = props.get('UserMetadata', {}) + system_metadata = props.get('SystemMetadata', {}) + prune = props.get('Prune', 'true').lower() == 'true' + exclude = props.get('Exclude', []) + include = props.get('Include', []) + sign_content = props.get('SignContent', 'false').lower() == 'true' + output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' + + # backwards compatibility - if "SourceMarkers" is not specified, + # assume all sources have an empty market map + if source_markers is None: + source_markers = [{} for i in range(len(source_bucket_names))] + if source_markers_config is None: + source_markers_config = [{} for i in range(len(source_bucket_names))] + + default_distribution_path = dest_bucket_prefix + if not default_distribution_path.endswith("/"): + default_distribution_path += "/" + if not default_distribution_path.startswith("/"): + default_distribution_path = "/" + default_distribution_path + default_distribution_path += "*" + + distribution_paths = props.get('DistributionPaths', [default_distribution_path]) + except KeyError as e: + cfn_error("missing request resource property %s. props: %s" % (str(e), props)) + return + + # configure aws cli options after resetting back to the defaults for each request + if os.path.exists(AWS_CLI_CONFIG_FILE): + os.remove(AWS_CLI_CONFIG_FILE) + if sign_content: + aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") + + # treat "/" as if no prefix was specified + if dest_bucket_prefix == "/": + dest_bucket_prefix = "" + + s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) + s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) + old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) + + + # obviously this is not + if old_s3_dest == "s3:///": + old_s3_dest = None + + logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) + logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) + + # if we are creating a new resource, allocate a physical id for it + # otherwise, we expect physical id to be relayed by cloudformation + if request_type == "Create": + physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) + else: + if not physical_id: + cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) + return + + # delete or create/update (only if "retain_on_delete" is false) + if request_type == "Delete" and not retain_on_delete: + if not bucket_owned(dest_bucket_name, dest_bucket_prefix): + aws_command("s3", "rm", s3_dest, "--recursive") + + # if we are updating without retention and the destination changed, delete first + if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: + if not old_s3_dest: + logger.warn("cannot delete old resource without old resource properties") + return + + aws_command("s3", "rm", old_s3_dest, "--recursive") + + if request_type == "Update" or request_type == "Create": + s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) + + if distribution_id: + cloudfront_invalidate(distribution_id, distribution_paths) + + cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ + # Passing through the ARN sequences dependencees on the deployment + 'DestinationBucketArn': props.get('DestinationBucketArn'), + **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) + }) + except KeyError as e: + cfn_error("invalid request. Missing key %s" % str(e)) + except Exception as e: + logger.exception(e) + cfn_error(str(e)) + +#--------------------------------------------------------------------------------------------------- +# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities +def sanitize_message(message): + if not message: + return message + + # Sanitize the message to prevent log injection and HTTP response splitting + sanitized_message = message.replace('\n', '').replace('\r', '') + + # Encode the message to handle special characters + encoded_message = urllib.parse.quote(sanitized_message) + + return encoded_message + +#--------------------------------------------------------------------------------------------------- +# populate all files from s3_source_zips to a destination bucket +def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): + # list lengths are equal + if len(s3_source_zips) != len(source_markers): + raise Exception("'source_markers' and 's3_source_zips' must be the same length") + + # create a temporary working directory in /tmp or if enabled an attached efs volume + if ENV_KEY_MOUNT_PATH in os.environ: + workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) + os.mkdir(workdir) + else: + workdir = tempfile.mkdtemp() + + logger.info("| workdir: %s" % workdir) + + # create a directory into which we extract the contents of the zip file + contents_dir=os.path.join(workdir, 'contents') + os.mkdir(contents_dir) + + try: + # download the archive from the source and extract to "contents" + for i in range(len(s3_source_zips)): + s3_source_zip = s3_source_zips[i] + markers = source_markers[i] + markers_config = source_markers_config[i] + + if extract: + archive=os.path.join(workdir, str(uuid4())) + logger.info("archive: %s" % archive) + aws_command("s3", "cp", s3_source_zip, archive) + logger.info("| extracting archive to: %s\n" % contents_dir) + logger.info("| markers: %s" % markers) + extract_and_replace_markers(archive, contents_dir, markers, markers_config) + else: + logger.info("| copying archive to: %s\n" % contents_dir) + aws_command("s3", "cp", s3_source_zip, contents_dir) + + # sync from "contents" to destination + + s3_command = ["s3", "sync"] + + if prune: + s3_command.append("--delete") + + if exclude: + for filter in exclude: + s3_command.extend(["--exclude", filter]) + + if include: + for filter in include: + s3_command.extend(["--include", filter]) + + s3_command.extend([contents_dir, s3_dest]) + s3_command.extend(create_metadata_args(user_metadata, system_metadata)) + aws_command(*s3_command) + finally: + if not os.getenv(ENV_KEY_SKIP_CLEANUP): + shutil.rmtree(workdir) + +#--------------------------------------------------------------------------------------------------- +# invalidate files in the CloudFront distribution edge caches +def cloudfront_invalidate(distribution_id, distribution_paths): + invalidation_resp = cloudfront.create_invalidation( + DistributionId=distribution_id, + InvalidationBatch={ + 'Paths': { + 'Quantity': len(distribution_paths), + 'Items': distribution_paths + }, + 'CallerReference': str(uuid4()), + }) + # by default, will wait up to 10 minutes + cloudfront.get_waiter('invalidation_completed').wait( + DistributionId=distribution_id, + Id=invalidation_resp['Invalidation']['Id']) + +#--------------------------------------------------------------------------------------------------- +# set metadata +def create_metadata_args(raw_user_metadata, raw_system_metadata): + if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: + return [] + + format_system_metadata_key = lambda k: k.lower() + format_user_metadata_key = lambda k: k.lower() + + system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } + user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } + + flatten = lambda l: [item for sublist in l for item in sublist] + system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) + user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] + + return system_args + user_args + ["--metadata-directive", "REPLACE"] + +#--------------------------------------------------------------------------------------------------- +# executes an "aws" cli command +def aws_command(*args): + aws="/opt/awscli/aws" # from AwsCliLayer + logger.info("| aws %s" % ' '.join(args)) + subprocess.check_call([aws] + list(args)) + +#--------------------------------------------------------------------------------------------------- +# sends a response to cloudformation +def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): + + responseUrl = event['ResponseURL'] + + responseBody = {} + responseBody['Status'] = responseStatus + responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) + responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name + responseBody['StackId'] = event['StackId'] + responseBody['RequestId'] = event['RequestId'] + responseBody['LogicalResourceId'] = event['LogicalResourceId'] + responseBody['NoEcho'] = noEcho + responseBody['Data'] = responseData + + body = json.dumps(responseBody) + logger.info("| response body:\n" + body) + + headers = { + 'content-type' : '', + 'content-length' : str(len(body)) + } + + try: + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) + except Exception as e: + logger.error("| unable to send response to CloudFormation") + logger.exception(e) + + +#--------------------------------------------------------------------------------------------------- +# check if bucket is owned by a custom resource +# if it is then we don't want to delete content +def bucket_owned(bucketName, keyPrefix): + tag = CUSTOM_RESOURCE_OWNER_TAG + if keyPrefix != "": + tag = tag + ':' + keyPrefix + try: + request = s3.get_bucket_tagging( + Bucket=bucketName, + ) + return any((x["Key"].startswith(tag)) for x in request["TagSet"]) + except Exception as e: + logger.info("| error getting tags from bucket") + logger.exception(e) + return False + +# extract archive and replace markers in output files +def extract_and_replace_markers(archive, contents_dir, markers, markers_config): + with ZipFile(archive, "r") as zip: + zip.extractall(contents_dir) + + # replace markers for this source + for file in zip.namelist(): + file_path = os.path.join(contents_dir, file) + if os.path.isdir(file_path): continue + replace_markers(file_path, markers, markers_config) + +def prepare_json_safe_markers(markers): + """Pre-process markers to ensure JSON-safe values""" + safe_markers = {} + for key, value in markers.items(): + # Serialize the value as JSON to handle escaping if the value is a string + serialized = json.dumps(value) + if serialized.startswith('"') and serialized.endswith('"'): + json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes + else: + json_safe_value = serialized + safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') + return safe_markers + +def replace_markers(filename, markers, markers_config): + """Replace markers in a file, with special handling for JSON files.""" + # if there are no markers, skip + if not markers: + return + + outfile = filename + '.new' + json_escape = markers_config.get('jsonEscape', 'false').lower() + if json_escape == 'true': + replace_tokens = prepare_json_safe_markers(markers) + else: + replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) + + # Handle content with line-by-line binary replacement + with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: + # Process line by line to handle large files + for line in fi: + for token, replacement in replace_tokens.items(): + line = line.replace(token, replacement) + fo.write(line) + + # Delete the original file and rename the new one to the original + os.remove(filename) + os.rename(outfile, filename) + +def replace_markers_in_json(json_object, replace_tokens): + """Replace markers in JSON content with proper escaping.""" + try: + def replace_in_structure(obj): + if isinstance(obj, str): + # Convert string to bytes for consistent replacement + result = obj.encode('utf-8') + for token, replacement in replace_tokens.items(): + result = result.replace(token, replacement) + # Convert back to string + return result.decode('utf-8') + elif isinstance(obj, dict): + return {k: replace_in_structure(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [replace_in_structure(item) for item in obj] + return obj + + # Process the whole structure + processed = replace_in_structure(json_object) + return json.dumps(processed) + except Exception as e: + logger.error(f'Error processing JSON: {e}') + logger.exception(e) + return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml new file mode 100644 index 0000000000000..4accd4cadb267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.3 +info: + title: Asset API Schema + version: 1.0.0 +paths: + /asset: + get: + operationId: assetHelloWorld + summary: Say hello from asset + description: Returns a greeting message from asset-stored schema + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip new file mode 100644 index 0000000000000..42b96d8fc1b3c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc63a5b65bd5c8f0e3819f5c9f3b9f7335f35f35fac6ce8829606a6dc52ff0b +size 19940332 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json new file mode 100644 index 0000000000000..f7af8eaa95391 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json @@ -0,0 +1,90 @@ +{ + "version": "43.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e": { + "displayName": "DeploySchema/AwsCliLayer/Code", + "source": { + "path": "asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { + "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", + "source": { + "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { + "displayName": "DeploySchema/Asset1", + "source": { + "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { + "displayName": "Schema", + "source": { + "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582": { + "displayName": "aws-cdk-bedrock-api-schema-1 Template", + "source": { + "path": "aws-cdk-bedrock-api-schema-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json new file mode 100644 index 0000000000000..5cd3748c8be11 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json @@ -0,0 +1,1065 @@ +{ + "Resources": { + "AssetActionGroupFunctionServiceRoleC53BA920": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AssetActionGroupFunction98EC70AB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "AssetActionGroupFunctionServiceRoleC53BA920", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "AssetActionGroupFunctionServiceRoleC53BA920" + ] + }, + "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "InlineActionGroupFunctionServiceRole5543D9A3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "InlineActionGroupFunction566CD00A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "InlineActionGroupFunctionServiceRole5543D9A3", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "InlineActionGroupFunctionServiceRole5543D9A3" + ] + }, + "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "S3ActionGroupFunctionServiceRole7E4C5A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "S3ActionGroupFunctionA4648C25": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionServiceRole7E4C5A58", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "S3ActionGroupFunctionServiceRole7E4C5A58" + ] + }, + "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "SchemaBucket79EE2269": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + }, + { + "Key": "aws-cdk:cr-owned:911f5017", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SchemaBucketPolicy557840E2": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "SchemaBucket79EE2269" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "SchemaBucket79EE2269" + } + }, + "DependsOn": [ + "SchemaBucketPolicy557840E2" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": { + "Fn::FindInMap": [ + "LatestNodeRuntimeMap", + { + "Ref": "AWS::Region" + }, + "value" + ] + }, + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "SchemaBucket79EE2269" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "DeploySchemaAwsCliLayerD0D0BA6E": { + "Type": "AWS::Lambda::LayerVersion", + "Properties": { + "Content": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip" + }, + "Description": "/opt/awscli/aws" + } + }, + "DeploySchemaCustomResource277E9836": { + "Type": "Custom::CDKBucketDeployment", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn" + ] + }, + "SourceBucketNames": [ + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ], + "SourceObjectKeys": [ + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" + ], + "SourceMarkers": [ + {} + ], + "DestinationBucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "Prune": true, + "OutputObjectKeys": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": [ + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" + }, + "Environment": { + "Variables": { + "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + } + }, + "Handler": "index.handler", + "Layers": [ + { + "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "Role": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn" + ] + }, + "Runtime": "python3.11", + "Timeout": 900 + }, + "DependsOn": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + ] + }, + "ApiSchemaAgentRole636AC572": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + }, + "/schema/s3-api-schema.json" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + } + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "Roles": [ + { + "Ref": "ApiSchemaAgentRole636AC572" + } + ] + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgent8E965D9C": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + } + }, + "ActionGroupName": "AssetApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + } + }, + "Description": "An action group using a local asset API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + } + }, + "ActionGroupName": "InlineApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group using an inline API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + } + }, + "ActionGroupName": "S3ApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "S3ObjectKey": "schema/s3-api-schema.json" + } + }, + "Description": "An action group using an S3-based API schema", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "api-schema-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "ApiSchemaAgentRole636AC572", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + } + }, + "Mappings": { + "LatestNodeRuntimeMap": { + "af-south-1": { + "value": "nodejs22.x" + }, + "ap-east-1": { + "value": "nodejs22.x" + }, + "ap-east-2": { + "value": "nodejs22.x" + }, + "ap-northeast-1": { + "value": "nodejs22.x" + }, + "ap-northeast-2": { + "value": "nodejs22.x" + }, + "ap-northeast-3": { + "value": "nodejs22.x" + }, + "ap-south-1": { + "value": "nodejs22.x" + }, + "ap-south-2": { + "value": "nodejs22.x" + }, + "ap-southeast-1": { + "value": "nodejs22.x" + }, + "ap-southeast-2": { + "value": "nodejs22.x" + }, + "ap-southeast-3": { + "value": "nodejs22.x" + }, + "ap-southeast-4": { + "value": "nodejs22.x" + }, + "ap-southeast-5": { + "value": "nodejs22.x" + }, + "ap-southeast-7": { + "value": "nodejs22.x" + }, + "ca-central-1": { + "value": "nodejs22.x" + }, + "ca-west-1": { + "value": "nodejs22.x" + }, + "cn-north-1": { + "value": "nodejs22.x" + }, + "cn-northwest-1": { + "value": "nodejs22.x" + }, + "eu-central-1": { + "value": "nodejs22.x" + }, + "eu-central-2": { + "value": "nodejs22.x" + }, + "eu-isoe-west-1": { + "value": "nodejs18.x" + }, + "eu-north-1": { + "value": "nodejs22.x" + }, + "eu-south-1": { + "value": "nodejs22.x" + }, + "eu-south-2": { + "value": "nodejs22.x" + }, + "eu-west-1": { + "value": "nodejs22.x" + }, + "eu-west-2": { + "value": "nodejs22.x" + }, + "eu-west-3": { + "value": "nodejs22.x" + }, + "il-central-1": { + "value": "nodejs22.x" + }, + "me-central-1": { + "value": "nodejs22.x" + }, + "me-south-1": { + "value": "nodejs22.x" + }, + "mx-central-1": { + "value": "nodejs22.x" + }, + "sa-east-1": { + "value": "nodejs22.x" + }, + "us-east-1": { + "value": "nodejs22.x" + }, + "us-east-2": { + "value": "nodejs22.x" + }, + "us-gov-east-1": { + "value": "nodejs22.x" + }, + "us-gov-west-1": { + "value": "nodejs22.x" + }, + "us-iso-east-1": { + "value": "nodejs18.x" + }, + "us-iso-west-1": { + "value": "nodejs18.x" + }, + "us-isob-east-1": { + "value": "nodejs18.x" + }, + "us-isob-west-1": { + "value": "nodejs18.x" + }, + "us-west-1": { + "value": "nodejs22.x" + }, + "us-west-2": { + "value": "nodejs22.x" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out new file mode 100644 index 0000000000000..16f49249c859a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"43.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json new file mode 100644 index 0000000000000..bbaacf299813c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "43.0.0", + "testCases": { + "BedrockApiSchema/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-api-schema-1" + ], + "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", + "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" + } + }, + "minimumCliVersion": "2.1014.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json new file mode 100644 index 0000000000000..78939c27ca13e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json @@ -0,0 +1,716 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-api-schema-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-api-schema-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-api-schema-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionServiceRoleC53BA920" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunction98EC70AB" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionServiceRole5543D9A3" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunction566CD00A" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionServiceRole7E4C5A58" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionA4648C25" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucket79EE2269" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketPolicy557840E2" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" + } + ], + "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ + { + "type": "aws:cdk:logicalId", + "data": "LatestNodeRuntimeMap" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "uuid": "*", + "layers": [ + "*" + ], + "environment": "*", + "lambdaPurpose": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + true + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + "*" + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaCustomResource277E9836" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "layers": [ + "*" + ], + "environment": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addEnvironment": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addLayers": [ + "*" + ] + } + }, + { + "type": "aws:cdk:is-custom-resource-handler-singleton", + "data": true + }, + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 2 + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRole636AC572" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgent8E965D9C" + } + ], + "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-api-schema-1" + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "metadata": { + "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json new file mode 100644 index 0000000000000..f721c41c640b9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"},"children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip"},"description":"/opt/awscli/aws"}}}}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}}}}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}}}}}}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file From 985b944e1e8702f63208ab9f0b35c3d659821a03 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 28 May 2025 17:19:33 -0400 Subject: [PATCH 33/39] fix(bedrockl2): updated agent.ts with review comments --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 39 + .../bedrock/agents/agent-collaborator.ts | 2 +- .../aws-bedrock-alpha/bedrock/agents/agent.ts | 21 +- .../bedrock/agents/agent-collaborator.test.ts | 8 +- .../test/bedrock/agents/agent.test.ts | 281 ----- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 - ...aultTestDeployAssertE2AFA81B.template.json | 36 - ...aws-cdk-bedrock-action-group-1.assets.json | 20 - ...s-cdk-bedrock-action-group-1.template.json | 283 ----- .../integ.action-group.js.snapshot/cdk.out | 1 - .../integ.action-group.js.snapshot/integ.json | 13 - .../manifest.json | 264 ---- .../integ.action-group.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert1DDDDC57.assets.json | 20 - ...aultTestDeployAssert1DDDDC57.template.json | 36 - .../schema/s3-api-schema.json | 33 - .../index.js | 1 - .../index.py | 388 ------ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 - ...a1c3a55395746c48b28c003b08bc1d08688f3e.zip | 3 - .../aws-cdk-bedrock-api-schema-1.assets.json | 90 -- ...aws-cdk-bedrock-api-schema-1.template.json | 1065 ----------------- .../integ.api-schema.js.snapshot/cdk.out | 1 - .../integ.api-schema.js.snapshot/integ.json | 13 - .../manifest.json | 716 ----------- .../integ.api-schema.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert5AD90360.assets.json | 20 - ...aultTestDeployAssert5AD90360.template.json | 36 - .../aws-cdk-bedrock-memory-1.assets.json | 20 - .../aws-cdk-bedrock-memory-1.template.json | 546 --------- .../agents/integ.memory.js.snapshot/cdk.out | 1 - .../integ.memory.js.snapshot/integ.json | 13 - .../integ.memory.js.snapshot/manifest.json | 420 ------- .../agents/integ.memory.js.snapshot/tree.json | 1 - ...efaultTestDeployAssertACFAFF30.assets.json | 20 - ...aultTestDeployAssertACFAFF30.template.json | 36 - ...ws-cdk-bedrock-orchestration-1.assets.json | 20 - ...-cdk-bedrock-orchestration-1.template.json | 282 ----- .../integ.orchestration.js.snapshot/cdk.out | 1 - .../integ.json | 13 - .../manifest.json | 264 ---- .../integ.orchestration.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert7D38F1F4.assets.json | 20 - ...aultTestDeployAssert7D38F1F4.template.json | 36 - ...-cdk-bedrock-prompt-override-1.assets.json | 20 - ...dk-bedrock-prompt-override-1.template.json | 644 ---------- .../integ.prompt-override.js.snapshot/cdk.out | 1 - .../integ.json | 13 - .../manifest.json | 464 ------- .../tree.json | 1 - 50 files changed, 58 insertions(+), 6211 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index ce034798390a9..2e16f4756883b 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -158,6 +158,13 @@ const actionGroup = new bedrock.AgentActionGroup({ enabled: true, apiSchema: inlineSchema, }); + +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); + +agent.addActionGroup(actionGroup); ``` From an existing S3 file: @@ -179,6 +186,13 @@ const actionGroup = new bedrock.AgentActionGroup({ enabled: true, apiSchema: s3Schema, }); + +const agent = new bedrock.Agent(this, 'Agent', { + foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_HAIKU_V1_0, + instruction: 'You are a helpful and friendly agent that answers questions about literature.', +}); + +agent.addActionGroup(actionGroup); ``` ### Using FunctionSchema with Action Groups @@ -354,6 +368,31 @@ Bedrock Agents allows you to customize the prompts and LLM configuration for dif | steps | PromptStepConfiguration[] | Yes | Array of step configurations for different parts of the agent sequence | | parser | lambda.IFunction | No | Lambda function for custom parsing of agent responses | +#### Prompt Step Configuration Properties + +Each step in the `steps` array supports the following properties: + +| Name | Type | Required | Description | +|---|---|---|---| +| stepType | AgentStepType | Yes | The type of step being configured (PRE_PROCESSING, ORCHESTRATION, POST_PROCESSING, ROUTING_CLASSIFIER, MEMORY_SUMMARIZATION, KNOWLEDGE_BASE_RESPONSE_GENERATION) | +| stepEnabled | boolean | No | Whether this step is enabled. Defaults to true | +| customPromptTemplate | string | No | Custom prompt template to use for this step | +| inferenceConfig | InferenceConfiguration | No | Configuration for model inference parameters | +| foundationModel | BedrockFoundationModel | No | Alternative foundation model to use for this step (only valid for ROUTING_CLASSIFIER step) | +| useCustomParser | boolean | No | Whether to use a custom parser for this step. Requires parser to be provided in PromptOverrideConfiguration | + +#### Inference Configuration Properties + +When providing `inferenceConfig`, the following properties are supported: + +| Name | Type | Required | Description | +|---|---|---|---| +| temperature | number | No | Controls randomness in the model's output (0.0-1.0) | +| topP | number | No | Controls diversity via nucleus sampling (0.0-1.0) | +| topK | number | No | Controls diversity by limiting the cumulative probability | +| maximumLength | number | No | Maximum length of generated text | +| stopSequences | string[] | No | Sequences where the model should stop generating | + The following steps can be configured: - PRE_PROCESSING: Prepares the user input for orchestration diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts index 25bc47fb0eda1..184da0d5e3bc2 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent-collaborator.ts @@ -27,7 +27,7 @@ export enum AgentCollaboratorType { * Enum for collaborator's relay conversation history types. * @internal */ -export enum RelayConversationHistoryType { +enum RelayConversationHistoryType { /** * Sending to the collaborator. */ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 183b40c732b77..24eba68940047 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -129,15 +129,22 @@ export abstract class AgentBase extends Resource implements IAgent { * - detail: { 'agent-id': [this.agentId] } * @returns An EventBridge Rule configured for agent events */ - public onEvent(id: string, options: events.OnEventOptions= {}): events.Rule { - const rule = new events.Rule(this, id, options); - rule.addTarget(options.target); - rule.addEventPattern({ - source: ['aws.bedrock'], - detail: { - 'agent-id': [this.agentId], + public onEvent(id: string, options: events.OnEventOptions = {}): events.Rule { + // Create rule with minimal props and event pattern + const rule = new events.Rule(this, id, { + description: options.description, + eventPattern: { + source: ['aws.bedrock'], + detail: { + 'agent-id': [this.agentId], + }, }, }); + + // Add target if provided + if (options.target) { + rule.addTarget(options.target); + } return rule; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts index 7db8fa1d674d4..c9d953831bcc1 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent-collaborator.test.ts @@ -1,6 +1,6 @@ import { Stack } from 'aws-cdk-lib'; import * as iam from 'aws-cdk-lib/aws-iam'; -import { AgentCollaborator, RelayConversationHistoryType } from '../../../bedrock/agents/agent-collaborator'; +import { AgentCollaborator } from '../../../bedrock/agents/agent-collaborator'; import { IAgentAlias } from '../../../bedrock/agents/agent-alias'; describe('AgentCollaborator', () => { @@ -82,7 +82,7 @@ describe('AgentCollaborator', () => { }, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', - relayConversationHistory: RelayConversationHistoryType.TO_COLLABORATOR, + relayConversationHistory: 'TO_COLLABORATOR', }); }); @@ -105,7 +105,7 @@ describe('AgentCollaborator', () => { }, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', - relayConversationHistory: RelayConversationHistoryType.DISABLED, + relayConversationHistory: 'DISABLED', }); }); @@ -127,7 +127,7 @@ describe('AgentCollaborator', () => { }, collaborationInstruction: 'Test instruction', collaboratorName: 'Test collaborator', - relayConversationHistory: RelayConversationHistoryType.DISABLED, + relayConversationHistory: 'DISABLED', }); }); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts deleted file mode 100644 index 2f7ee7bb88aa7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { App } from 'aws-cdk-lib/core'; -import * as core from 'aws-cdk-lib/core'; -import * as iam from 'aws-cdk-lib/aws-iam'; -import * as lambda from 'aws-cdk-lib/aws-lambda'; -import * as kms from 'aws-cdk-lib/aws-kms'; -import { Template, Match } from 'aws-cdk-lib/assertions'; -import * as bedrock from '../../../bedrock'; - -describe('Agent', () => { - let stack: core.Stack; - let foundationModel: bedrock.IInvokable; - - beforeEach(() => { - const app = new App(); - stack = new core.Stack(app, 'test-stack'); - foundationModel = { - invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', - grantInvoke: (grantee) => { - return iam.Grant.addToPrincipal({ - grantee, - actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], - resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], - }); - }, - }; - }); - - test('creates agent with default name when agentName is not provided', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentName: Match.stringLikeRegexp('agent-teststack-testagent-8d92f3fe-bedrockagent'), - }); - }); - - test('creates agent with basic properties', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), - FoundationModel: foundationModel.invokableArn, - IdleSessionTTLInSeconds: 600, - AutoPrepare: false, - Description: Match.absent(), - CustomerEncryptionKeyArn: Match.absent(), - }); - }); - - test('creates agent with all properties', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - agentName: 'MyTestAgent', - description: 'Test agent description', - shouldPrepareAgent: true, - idleSessionTTL: core.Duration.minutes(30), - userInputEnabled: true, - codeInterpreterEnabled: true, - forceDelete: true, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentName: 'MyTestAgent', - Description: 'Test agent description', - Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), - FoundationModel: foundationModel.invokableArn, - IdleSessionTTLInSeconds: 1800, - AutoPrepare: true, - SkipResourceInUseCheckOnDelete: true, - }); - }); - - test('creates an IAM role with correct trust policy', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { - AssumeRolePolicyDocument: { - Statement: [ - { - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { - Service: 'bedrock.amazonaws.com', - }, - Condition: { - StringEquals: { - 'aws:SourceAccount': Match.objectLike({ Ref: 'AWS::AccountId' }), - }, - ArnLike: { - 'aws:SourceArn': { - 'Fn::Join': ['', [ - 'arn:', - { Ref: 'AWS::Partition' }, - ':bedrock:', - { Ref: 'AWS::Region' }, - ':', - { Ref: 'AWS::AccountId' }, - ':agent/*', - ]], - }, - }, - }, - }, - ], - }, - }); - }); - - test('correctly adds bedrock:InvokeAgent permissions when grantInvoke() is called', () => { - const agent = new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - }); - - const role = new iam.Role(stack, 'Role', { - assumedBy: new iam.AnyPrincipal(), - }); - - agent.grantInvoke(role); - - Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { - PolicyDocument: { - Statement: Match.arrayWith([ - Match.objectLike({ - Action: 'bedrock:InvokeAgent', - Effect: 'Allow', - Resource: { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], - }, - }), - ]), - }, - }); - }); - - test('cannot be created with instruction less than 40 characters', () => { - expect(() => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'Too short', - foundationModel, - }); - }).toThrow(/instruction must be at least 40 characters/); - }); - - test('does not fail validation if instruction is a late-bound value', () => { - const parameter = new core.CfnParameter(stack, 'Parameter'); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: parameter.valueAsString, - foundationModel, - }); - }); - - describe('custom orchestration', () => { - test('sets custom orchestration and grants necessary permissions', () => { - const fn = new lambda.Function(stack, 'TestFunction', { - runtime: lambda.Runtime.NODEJS_18_X, - handler: 'index.handler', - code: lambda.Code.fromInline('exports.handler = async () => {};'), - }); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - customOrchestrationExecutor: bedrock.CustomOrchestrationExecutor.fromLambda(fn), - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - OrchestrationType: 'CUSTOM_ORCHESTRATION', - CustomOrchestration: { - Executor: { - Lambda: { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], - }, - }, - }, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { - Action: 'lambda:InvokeFunction', - FunctionName: { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], - }, - Principal: 'bedrock.amazonaws.com', - SourceArn: { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], - }, - SourceAccount: { - Ref: 'AWS::AccountId', - }, - }); - }); - }); - - test('sets KMS key correctly', () => { - const key = new kms.Key(stack, 'TestKey'); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - kmsKey: key, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - CustomerEncryptionKeyArn: { - 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], - }, - }); - }); - - test('uses existing role correctly', () => { - const role = new iam.Role(stack, 'ExistingRole', { - assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), - }); - - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - existingRole: role, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentResourceRoleArn: { - 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], - }, - }); - }); - - describe('edge cases', () => { - test('handles undefined agentCollaborators', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - agentCollaboration: new bedrock.AgentCollaboration({ - type: bedrock.AgentCollaboratorType.SUPERVISOR, - collaborators: [], - }), - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - AgentCollaboration: 'SUPERVISOR', - AgentCollaborators: Match.absent(), - }); - }); - - test('handles disabled default action groups', () => { - new bedrock.Agent(stack, 'TestAgent', { - instruction: 'This is a test instruction that must be at least 40 characters long to be valid', - foundationModel, - userInputEnabled: false, - codeInterpreterEnabled: false, - }); - - Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { - ActionGroups: [ - { - ActionGroupName: 'UserInputAction', - ActionGroupState: 'DISABLED', - ParentActionGroupSignature: 'AMAZON.UserInput', - SkipResourceInUseCheckOnDelete: false, - }, - { - ActionGroupName: 'CodeInterpreterAction', - ActionGroupState: 'DISABLED', - ParentActionGroupSignature: 'AMAZON.CodeInterpreter', - SkipResourceInUseCheckOnDelete: false, - }, - ], - }); - }); - }); -}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json deleted file mode 100644 index aa619c2ef0040..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", - "source": { - "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json deleted file mode 100644 index 28ee150277d1a..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de": { - "displayName": "aws-cdk-bedrock-action-group-1 Template", - "source": { - "path": "aws-cdk-bedrock-action-group-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json deleted file mode 100644 index e9def5c443dd6..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json +++ /dev/null @@ -1,283 +0,0 @@ -{ - "Resources": { - "ActionGroupFunctionServiceRole77660D62": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ActionGroupFunctionFE14D1CB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ActionGroupFunctionServiceRole77660D62", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ActionGroupFunctionServiceRole77660D62" - ] - }, - "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "MyAgentRoleE8318EBB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" - } - }, - "MyAgentRoleDefaultPolicy30DBC7AC": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", - "Roles": [ - { - "Ref": "MyAgentRoleE8318EBB" - } - ] - } - }, - "MyAgent039CC8B3": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - } - }, - "ActionGroupName": "CustomActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" - }, - "Description": "A custom action group for testing", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "test-action-group-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "MyAgentRoleE8318EBB", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "MyAgentRoleDefaultPolicy30DBC7AC" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json deleted file mode 100644 index 99aecebe78b1c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockActionGroup/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-action-group-1" - ], - "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", - "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json deleted file mode 100644 index 62cd0281d1850..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-action-group-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-action-group-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-action-group-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-action-group-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionServiceRole77660D62" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionFE14D1CB" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleE8318EBB" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleDefaultPolicy30DBC7AC" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgent039CC8B3" - } - ], - "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-action-group-1" - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "metadata": { - "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1015.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json deleted file mode 100644 index 945bebee21900..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json deleted file mode 100644 index 0aa925a7c6b21..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "43.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", - "source": { - "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json deleted file mode 100644 index a9d7497c0610b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "S3 API Schema", - "version": "1.0.0" - }, - "paths": { - "/s3hello": { - "get": { - "operationId": "s3HelloWorld", - "summary": "Say hello from S3", - "description": "Returns a greeting message from S3-stored schema", - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js deleted file mode 100644 index 1002ba018e9fb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py deleted file mode 100644 index aeb2132fc67bb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py +++ /dev/null @@ -1,388 +0,0 @@ -import contextlib -import json -import logging -import os -import shutil -import subprocess -import tempfile -import urllib.parse -from urllib.request import Request, urlopen -from uuid import uuid4 -from zipfile import ZipFile - -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -cloudfront = boto3.client('cloudfront') -s3 = boto3.client('s3') - -CFN_SUCCESS = "SUCCESS" -CFN_FAILED = "FAILED" -ENV_KEY_MOUNT_PATH = "MOUNT_PATH" -ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" - -AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" -CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" - -os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) - -def handler(event, context): - - def cfn_error(message=None): - if message: - logger.error("| cfn_error: %s" % message.encode()) - cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) - - - try: - # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper - # with the response CloudFormation sees from this Custom Resource execution. - logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) - - # cloudformation request type (create/update/delete) - request_type = event['RequestType'] - - # extract resource properties - props = event['ResourceProperties'] - old_props = event.get('OldResourceProperties', {}) - physical_id = event.get('PhysicalResourceId', None) - - try: - source_bucket_names = props['SourceBucketNames'] - source_object_keys = props['SourceObjectKeys'] - source_markers = props.get('SourceMarkers', None) - source_markers_config = props.get('SourceMarkersConfig', None) - dest_bucket_name = props['DestinationBucketName'] - dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') - extract = props.get('Extract', 'true') == 'true' - retain_on_delete = props.get('RetainOnDelete', "true") == "true" - distribution_id = props.get('DistributionId', '') - user_metadata = props.get('UserMetadata', {}) - system_metadata = props.get('SystemMetadata', {}) - prune = props.get('Prune', 'true').lower() == 'true' - exclude = props.get('Exclude', []) - include = props.get('Include', []) - sign_content = props.get('SignContent', 'false').lower() == 'true' - output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' - - # backwards compatibility - if "SourceMarkers" is not specified, - # assume all sources have an empty market map - if source_markers is None: - source_markers = [{} for i in range(len(source_bucket_names))] - if source_markers_config is None: - source_markers_config = [{} for i in range(len(source_bucket_names))] - - default_distribution_path = dest_bucket_prefix - if not default_distribution_path.endswith("/"): - default_distribution_path += "/" - if not default_distribution_path.startswith("/"): - default_distribution_path = "/" + default_distribution_path - default_distribution_path += "*" - - distribution_paths = props.get('DistributionPaths', [default_distribution_path]) - except KeyError as e: - cfn_error("missing request resource property %s. props: %s" % (str(e), props)) - return - - # configure aws cli options after resetting back to the defaults for each request - if os.path.exists(AWS_CLI_CONFIG_FILE): - os.remove(AWS_CLI_CONFIG_FILE) - if sign_content: - aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") - - # treat "/" as if no prefix was specified - if dest_bucket_prefix == "/": - dest_bucket_prefix = "" - - s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) - s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) - old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) - - - # obviously this is not - if old_s3_dest == "s3:///": - old_s3_dest = None - - logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) - logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) - - # if we are creating a new resource, allocate a physical id for it - # otherwise, we expect physical id to be relayed by cloudformation - if request_type == "Create": - physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) - else: - if not physical_id: - cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) - return - - # delete or create/update (only if "retain_on_delete" is false) - if request_type == "Delete" and not retain_on_delete: - if not bucket_owned(dest_bucket_name, dest_bucket_prefix): - aws_command("s3", "rm", s3_dest, "--recursive") - - # if we are updating without retention and the destination changed, delete first - if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: - if not old_s3_dest: - logger.warn("cannot delete old resource without old resource properties") - return - - aws_command("s3", "rm", old_s3_dest, "--recursive") - - if request_type == "Update" or request_type == "Create": - s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) - - if distribution_id: - cloudfront_invalidate(distribution_id, distribution_paths) - - cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ - # Passing through the ARN sequences dependencees on the deployment - 'DestinationBucketArn': props.get('DestinationBucketArn'), - **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) - }) - except KeyError as e: - cfn_error("invalid request. Missing key %s" % str(e)) - except Exception as e: - logger.exception(e) - cfn_error(str(e)) - -#--------------------------------------------------------------------------------------------------- -# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities -def sanitize_message(message): - if not message: - return message - - # Sanitize the message to prevent log injection and HTTP response splitting - sanitized_message = message.replace('\n', '').replace('\r', '') - - # Encode the message to handle special characters - encoded_message = urllib.parse.quote(sanitized_message) - - return encoded_message - -#--------------------------------------------------------------------------------------------------- -# populate all files from s3_source_zips to a destination bucket -def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): - # list lengths are equal - if len(s3_source_zips) != len(source_markers): - raise Exception("'source_markers' and 's3_source_zips' must be the same length") - - # create a temporary working directory in /tmp or if enabled an attached efs volume - if ENV_KEY_MOUNT_PATH in os.environ: - workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) - os.mkdir(workdir) - else: - workdir = tempfile.mkdtemp() - - logger.info("| workdir: %s" % workdir) - - # create a directory into which we extract the contents of the zip file - contents_dir=os.path.join(workdir, 'contents') - os.mkdir(contents_dir) - - try: - # download the archive from the source and extract to "contents" - for i in range(len(s3_source_zips)): - s3_source_zip = s3_source_zips[i] - markers = source_markers[i] - markers_config = source_markers_config[i] - - if extract: - archive=os.path.join(workdir, str(uuid4())) - logger.info("archive: %s" % archive) - aws_command("s3", "cp", s3_source_zip, archive) - logger.info("| extracting archive to: %s\n" % contents_dir) - logger.info("| markers: %s" % markers) - extract_and_replace_markers(archive, contents_dir, markers, markers_config) - else: - logger.info("| copying archive to: %s\n" % contents_dir) - aws_command("s3", "cp", s3_source_zip, contents_dir) - - # sync from "contents" to destination - - s3_command = ["s3", "sync"] - - if prune: - s3_command.append("--delete") - - if exclude: - for filter in exclude: - s3_command.extend(["--exclude", filter]) - - if include: - for filter in include: - s3_command.extend(["--include", filter]) - - s3_command.extend([contents_dir, s3_dest]) - s3_command.extend(create_metadata_args(user_metadata, system_metadata)) - aws_command(*s3_command) - finally: - if not os.getenv(ENV_KEY_SKIP_CLEANUP): - shutil.rmtree(workdir) - -#--------------------------------------------------------------------------------------------------- -# invalidate files in the CloudFront distribution edge caches -def cloudfront_invalidate(distribution_id, distribution_paths): - invalidation_resp = cloudfront.create_invalidation( - DistributionId=distribution_id, - InvalidationBatch={ - 'Paths': { - 'Quantity': len(distribution_paths), - 'Items': distribution_paths - }, - 'CallerReference': str(uuid4()), - }) - # by default, will wait up to 10 minutes - cloudfront.get_waiter('invalidation_completed').wait( - DistributionId=distribution_id, - Id=invalidation_resp['Invalidation']['Id']) - -#--------------------------------------------------------------------------------------------------- -# set metadata -def create_metadata_args(raw_user_metadata, raw_system_metadata): - if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: - return [] - - format_system_metadata_key = lambda k: k.lower() - format_user_metadata_key = lambda k: k.lower() - - system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } - user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } - - flatten = lambda l: [item for sublist in l for item in sublist] - system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) - user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] - - return system_args + user_args + ["--metadata-directive", "REPLACE"] - -#--------------------------------------------------------------------------------------------------- -# executes an "aws" cli command -def aws_command(*args): - aws="/opt/awscli/aws" # from AwsCliLayer - logger.info("| aws %s" % ' '.join(args)) - subprocess.check_call([aws] + list(args)) - -#--------------------------------------------------------------------------------------------------- -# sends a response to cloudformation -def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): - - responseUrl = event['ResponseURL'] - - responseBody = {} - responseBody['Status'] = responseStatus - responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) - responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name - responseBody['StackId'] = event['StackId'] - responseBody['RequestId'] = event['RequestId'] - responseBody['LogicalResourceId'] = event['LogicalResourceId'] - responseBody['NoEcho'] = noEcho - responseBody['Data'] = responseData - - body = json.dumps(responseBody) - logger.info("| response body:\n" + body) - - headers = { - 'content-type' : '', - 'content-length' : str(len(body)) - } - - try: - request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) - with contextlib.closing(urlopen(request)) as response: - logger.info("| status code: " + response.reason) - except Exception as e: - logger.error("| unable to send response to CloudFormation") - logger.exception(e) - - -#--------------------------------------------------------------------------------------------------- -# check if bucket is owned by a custom resource -# if it is then we don't want to delete content -def bucket_owned(bucketName, keyPrefix): - tag = CUSTOM_RESOURCE_OWNER_TAG - if keyPrefix != "": - tag = tag + ':' + keyPrefix - try: - request = s3.get_bucket_tagging( - Bucket=bucketName, - ) - return any((x["Key"].startswith(tag)) for x in request["TagSet"]) - except Exception as e: - logger.info("| error getting tags from bucket") - logger.exception(e) - return False - -# extract archive and replace markers in output files -def extract_and_replace_markers(archive, contents_dir, markers, markers_config): - with ZipFile(archive, "r") as zip: - zip.extractall(contents_dir) - - # replace markers for this source - for file in zip.namelist(): - file_path = os.path.join(contents_dir, file) - if os.path.isdir(file_path): continue - replace_markers(file_path, markers, markers_config) - -def prepare_json_safe_markers(markers): - """Pre-process markers to ensure JSON-safe values""" - safe_markers = {} - for key, value in markers.items(): - # Serialize the value as JSON to handle escaping if the value is a string - serialized = json.dumps(value) - if serialized.startswith('"') and serialized.endswith('"'): - json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes - else: - json_safe_value = serialized - safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') - return safe_markers - -def replace_markers(filename, markers, markers_config): - """Replace markers in a file, with special handling for JSON files.""" - # if there are no markers, skip - if not markers: - return - - outfile = filename + '.new' - json_escape = markers_config.get('jsonEscape', 'false').lower() - if json_escape == 'true': - replace_tokens = prepare_json_safe_markers(markers) - else: - replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) - - # Handle content with line-by-line binary replacement - with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: - # Process line by line to handle large files - for line in fi: - for token, replacement in replace_tokens.items(): - line = line.replace(token, replacement) - fo.write(line) - - # Delete the original file and rename the new one to the original - os.remove(filename) - os.rename(outfile, filename) - -def replace_markers_in_json(json_object, replace_tokens): - """Replace markers in JSON content with proper escaping.""" - try: - def replace_in_structure(obj): - if isinstance(obj, str): - # Convert string to bytes for consistent replacement - result = obj.encode('utf-8') - for token, replacement in replace_tokens.items(): - result = result.replace(token, replacement) - # Convert back to string - return result.decode('utf-8') - elif isinstance(obj, dict): - return {k: replace_in_structure(v) for k, v in obj.items()} - elif isinstance(obj, list): - return [replace_in_structure(item) for item in obj] - return obj - - # Process the whole structure - processed = replace_in_structure(json_object) - return json.dumps(processed) - except Exception as e: - logger.error(f'Error processing JSON: {e}') - logger.exception(e) - return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml deleted file mode 100644 index 4accd4cadb267..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.3 -info: - title: Asset API Schema - version: 1.0.0 -paths: - /asset: - get: - operationId: assetHelloWorld - summary: Say hello from asset - description: Returns a greeting message from asset-stored schema - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - message: - type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip deleted file mode 100644 index 42b96d8fc1b3c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ffc63a5b65bd5c8f0e3819f5c9f3b9f7335f35f35fac6ce8829606a6dc52ff0b -size 19940332 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json deleted file mode 100644 index f7af8eaa95391..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": "43.0.0", - "files": { - "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { - "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", - "source": { - "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e": { - "displayName": "DeploySchema/AwsCliLayer/Code", - "source": { - "path": "asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { - "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", - "source": { - "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { - "displayName": "DeploySchema/Asset1", - "source": { - "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { - "displayName": "Schema", - "source": { - "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582": { - "displayName": "aws-cdk-bedrock-api-schema-1 Template", - "source": { - "path": "aws-cdk-bedrock-api-schema-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json deleted file mode 100644 index 5cd3748c8be11..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json +++ /dev/null @@ -1,1065 +0,0 @@ -{ - "Resources": { - "AssetActionGroupFunctionServiceRoleC53BA920": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "AssetActionGroupFunction98EC70AB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "AssetActionGroupFunctionServiceRoleC53BA920", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "AssetActionGroupFunctionServiceRoleC53BA920" - ] - }, - "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "InlineActionGroupFunctionServiceRole5543D9A3": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "InlineActionGroupFunction566CD00A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "InlineActionGroupFunctionServiceRole5543D9A3", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "InlineActionGroupFunctionServiceRole5543D9A3" - ] - }, - "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "S3ActionGroupFunctionServiceRole7E4C5A58": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "S3ActionGroupFunctionA4648C25": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionServiceRole7E4C5A58", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "S3ActionGroupFunctionServiceRole7E4C5A58" - ] - }, - "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "SchemaBucket79EE2269": { - "Type": "AWS::S3::Bucket", - "Properties": { - "Tags": [ - { - "Key": "aws-cdk:auto-delete-objects", - "Value": "true" - }, - { - "Key": "aws-cdk:cr-owned:911f5017", - "Value": "true" - } - ] - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "SchemaBucketPolicy557840E2": { - "Type": "AWS::S3::BucketPolicy", - "Properties": { - "Bucket": { - "Ref": "SchemaBucket79EE2269" - }, - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:List*", - "s3:PutBucketPolicy" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - } - }, - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - } - } - }, - "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { - "Type": "Custom::S3AutoDeleteObjects", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", - "Arn" - ] - }, - "BucketName": { - "Ref": "SchemaBucket79EE2269" - } - }, - "DependsOn": [ - "SchemaBucketPolicy557840E2" - ], - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ] - }, - "ManagedPolicyArns": [ - { - "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - } - ] - } - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" - }, - "Timeout": 900, - "MemorySize": 128, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - }, - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, - "Description": { - "Fn::Join": [ - "", - [ - "Lambda function for auto-deleting objects in ", - { - "Ref": "SchemaBucket79EE2269" - }, - " S3 bucket." - ] - ] - } - }, - "DependsOn": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - ] - }, - "DeploySchemaAwsCliLayerD0D0BA6E": { - "Type": "AWS::Lambda::LayerVersion", - "Properties": { - "Content": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip" - }, - "Description": "/opt/awscli/aws" - } - }, - "DeploySchemaCustomResource277E9836": { - "Type": "Custom::CDKBucketDeployment", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn" - ] - }, - "SourceBucketNames": [ - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ], - "SourceObjectKeys": [ - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" - ], - "SourceMarkers": [ - {} - ], - "DestinationBucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "Prune": true, - "OutputObjectKeys": true - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - } - ] - }, - { - "Action": [ - "s3:Abort*", - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*", - "s3:PutObject", - "s3:PutObjectLegalHold", - "s3:PutObjectRetention", - "s3:PutObjectTagging", - "s3:PutObjectVersionTagging" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "Roles": [ - { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" - }, - "Environment": { - "Variables": { - "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" - } - }, - "Handler": "index.handler", - "Layers": [ - { - "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "Role": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - "Arn" - ] - }, - "Runtime": "python3.11", - "Timeout": 900 - }, - "DependsOn": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - ] - }, - "ApiSchemaAgentRole636AC572": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - }, - "/schema/s3-api-schema.json" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - } - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "Roles": [ - { - "Ref": "ApiSchemaAgentRole636AC572" - } - ] - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgent8E965D9C": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - } - }, - "ActionGroupName": "AssetApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - } - }, - "Description": "An action group using a local asset API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - } - }, - "ActionGroupName": "InlineApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group using an inline API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - } - }, - "ActionGroupName": "S3ApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "S3ObjectKey": "schema/s3-api-schema.json" - } - }, - "Description": "An action group using an S3-based API schema", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "api-schema-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "ApiSchemaAgentRole636AC572", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - } - }, - "Mappings": { - "LatestNodeRuntimeMap": { - "af-south-1": { - "value": "nodejs22.x" - }, - "ap-east-1": { - "value": "nodejs22.x" - }, - "ap-east-2": { - "value": "nodejs22.x" - }, - "ap-northeast-1": { - "value": "nodejs22.x" - }, - "ap-northeast-2": { - "value": "nodejs22.x" - }, - "ap-northeast-3": { - "value": "nodejs22.x" - }, - "ap-south-1": { - "value": "nodejs22.x" - }, - "ap-south-2": { - "value": "nodejs22.x" - }, - "ap-southeast-1": { - "value": "nodejs22.x" - }, - "ap-southeast-2": { - "value": "nodejs22.x" - }, - "ap-southeast-3": { - "value": "nodejs22.x" - }, - "ap-southeast-4": { - "value": "nodejs22.x" - }, - "ap-southeast-5": { - "value": "nodejs22.x" - }, - "ap-southeast-7": { - "value": "nodejs22.x" - }, - "ca-central-1": { - "value": "nodejs22.x" - }, - "ca-west-1": { - "value": "nodejs22.x" - }, - "cn-north-1": { - "value": "nodejs22.x" - }, - "cn-northwest-1": { - "value": "nodejs22.x" - }, - "eu-central-1": { - "value": "nodejs22.x" - }, - "eu-central-2": { - "value": "nodejs22.x" - }, - "eu-isoe-west-1": { - "value": "nodejs18.x" - }, - "eu-north-1": { - "value": "nodejs22.x" - }, - "eu-south-1": { - "value": "nodejs22.x" - }, - "eu-south-2": { - "value": "nodejs22.x" - }, - "eu-west-1": { - "value": "nodejs22.x" - }, - "eu-west-2": { - "value": "nodejs22.x" - }, - "eu-west-3": { - "value": "nodejs22.x" - }, - "il-central-1": { - "value": "nodejs22.x" - }, - "me-central-1": { - "value": "nodejs22.x" - }, - "me-south-1": { - "value": "nodejs22.x" - }, - "mx-central-1": { - "value": "nodejs22.x" - }, - "sa-east-1": { - "value": "nodejs22.x" - }, - "us-east-1": { - "value": "nodejs22.x" - }, - "us-east-2": { - "value": "nodejs22.x" - }, - "us-gov-east-1": { - "value": "nodejs22.x" - }, - "us-gov-west-1": { - "value": "nodejs22.x" - }, - "us-iso-east-1": { - "value": "nodejs18.x" - }, - "us-iso-west-1": { - "value": "nodejs18.x" - }, - "us-isob-east-1": { - "value": "nodejs18.x" - }, - "us-isob-west-1": { - "value": "nodejs18.x" - }, - "us-west-1": { - "value": "nodejs22.x" - }, - "us-west-2": { - "value": "nodejs22.x" - } - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out deleted file mode 100644 index 16f49249c859a..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"43.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json deleted file mode 100644 index bbaacf299813c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "43.0.0", - "testCases": { - "BedrockApiSchema/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-api-schema-1" - ], - "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", - "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" - } - }, - "minimumCliVersion": "2.1014.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json deleted file mode 100644 index 78939c27ca13e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json +++ /dev/null @@ -1,716 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-api-schema-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-api-schema-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-api-schema-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionServiceRoleC53BA920" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunction98EC70AB" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionServiceRole5543D9A3" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunction566CD00A" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionServiceRole7E4C5A58" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionA4648C25" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "removalPolicy": "destroy", - "autoDeleteObjects": true - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucket79EE2269" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "bucket": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketPolicy557840E2" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" - } - ], - "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ - { - "type": "aws:cdk:logicalId", - "data": "LatestNodeRuntimeMap" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ - { - "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", - "data": true - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ - { - "type": "aws:cdk:analytics:construct", - "data": {} - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "uuid": "*", - "layers": [ - "*" - ], - "environment": "*", - "lambdaPurpose": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - true - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - "*" - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaCustomResource277E9836" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "layers": [ - "*" - ], - "environment": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addEnvironment": [ - "*", - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addLayers": [ - "*" - ] - } - }, - { - "type": "aws:cdk:is-custom-resource-handler-singleton", - "data": true - }, - { - "type": "aws:cdk:is-custom-resource-handler-runtime-family", - "data": 2 - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRole636AC572" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgent8E965D9C" - } - ], - "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-api-schema-1" - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "metadata": { - "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json deleted file mode 100644 index f721c41c640b9..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"},"children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip"},"description":"/opt/awscli/aws"}}}}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}}}}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}}}}}}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json deleted file mode 100644 index 1a10110ba1360..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", - "source": { - "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json deleted file mode 100644 index d8d85a00fd0dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524": { - "displayName": "aws-cdk-bedrock-memory-1 Template", - "source": { - "path": "aws-cdk-bedrock-memory-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json deleted file mode 100644 index e0d85494ad511..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json +++ /dev/null @@ -1,546 +0,0 @@ -{ - "Resources": { - "DefaultMemoryFunctionServiceRoleD8C5CDAF": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "DefaultMemoryFunctionAC6D5374": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF" - ] - }, - "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomMemoryFunctionServiceRoleA64B0AD5": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomMemoryFunctionB4B5CB9A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomMemoryFunctionServiceRoleA64B0AD5", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomMemoryFunctionServiceRoleA64B0AD5" - ] - }, - "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "AgentWithDefaultMemoryRole0AEE1FD1": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" - } - }, - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", - "Roles": [ - { - "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ] - } - }, - "AgentWithDefaultMemoryA1F31830": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - } - }, - "ActionGroupName": "DefaultMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing default memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-default-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithDefaultMemoryRole0AEE1FD1", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 20 - }, - "StorageDays": 30 - }, - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - ] - }, - "AgentWithCustomMemoryRole3B7BD09F": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" - } - }, - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", - "Roles": [ - { - "Ref": "AgentWithCustomMemoryRole3B7BD09F" - } - ] - } - }, - "AgentWithCustomMemoryD0BD498B": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomMemoryRole3B7BD09F", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 5 - }, - "StorageDays": 15 - }, - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json deleted file mode 100644 index d4ab305a0e573..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockMemory/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-memory-1" - ], - "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", - "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json deleted file mode 100644 index 01a0e8ea7d9ce..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json +++ /dev/null @@ -1,420 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-memory-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-memory-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-memory-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-memory-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionAC6D5374" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionServiceRoleA64B0AD5" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionB4B5CB9A" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryA1F31830" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRole3B7BD09F" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryD0BD498B" - } - ], - "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-memory-1" - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "metadata": { - "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockMemory/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1015.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json deleted file mode 100644 index 3b04fc7b10d83..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json deleted file mode 100644 index 8a135a7ec895c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", - "source": { - "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json deleted file mode 100644 index 46749d1780b08..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d": { - "displayName": "aws-cdk-bedrock-orchestration-1 Template", - "source": { - "path": "aws-cdk-bedrock-orchestration-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json deleted file mode 100644 index c737305fb8782..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "Resources": { - "OrchestrationFunctionServiceRole12D0673A": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "OrchestrationFunction2F3851C6": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "OrchestrationFunctionServiceRole12D0673A", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "OrchestrationFunctionServiceRole12D0673A" - ] - }, - "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - }, - "SourceArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentDC6CC131", - "AgentArn" - ] - } - } - }, - "CustomOrchestrationAgentRole85710213": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" - } - }, - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", - "Roles": [ - { - "Ref": "CustomOrchestrationAgentRole85710213" - } - ] - } - }, - "CustomOrchestrationAgentDC6CC131": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "custom-orchestration-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentRole85710213", - "Arn" - ] - }, - "AutoPrepare": false, - "CustomOrchestration": { - "Executor": { - "Lambda": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - } - } - }, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", - "OrchestrationType": "CUSTOM_ORCHESTRATION", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json deleted file mode 100644 index 6f18039793ab7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockOrchestration/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-orchestration-1" - ], - "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", - "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json deleted file mode 100644 index c3c314bda8552..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-orchestration-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-orchestration-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-orchestration-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionServiceRole12D0673A" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunction2F3851C6" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRole85710213" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentDC6CC131" - } - ], - "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-orchestration-1" - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "metadata": { - "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1015.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json deleted file mode 100644 index 68f0dc216a5f0..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json deleted file mode 100644 index ad7678636bede..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", - "source": { - "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json deleted file mode 100644 index 4eebeaef2a0e9..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514": { - "displayName": "aws-cdk-bedrock-prompt-override-1 Template", - "source": { - "path": "aws-cdk-bedrock-prompt-override-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json deleted file mode 100644 index 69b1f2a548dd4..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json +++ /dev/null @@ -1,644 +0,0 @@ -{ - "Resources": { - "PromptOverrideFunctionServiceRoleB1ACDEAD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "PromptOverrideFunctionD82AB437": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD" - ] - }, - "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomParserActionFunctionServiceRoleEE676A1C": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomParserActionFunction3DAF0C7A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomParserActionFunctionServiceRoleEE676A1C", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomParserActionFunctionServiceRoleEE676A1C" - ] - }, - "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "ParserFunctionServiceRole59DD83FB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ParserFunctionE8A187F2": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ParserFunctionServiceRole59DD83FB", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ParserFunctionServiceRole59DD83FB" - ] - }, - "AgentWithPromptOverrideRoleA0EB6013": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" - } - }, - "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", - "Roles": [ - { - "Ref": "AgentWithPromptOverrideRoleA0EB6013" - } - ] - } - }, - "AgentWithPromptOverride13B28AED": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - } - }, - "ActionGroupName": "PromptOverrideActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing prompt override configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-prompt-override", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithPromptOverrideRoleA0EB6013", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "PromptOverrideConfiguration": { - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 2048, - "StopSequences": [], - "Temperature": 0.2, - "TopK": 250, - "TopP": 0.9 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0.1, - "TopK": 100, - "TopP": 0.95 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "POST_PROCESSING" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - ] - }, - "AgentWithCustomParserRole29295FCD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" - } - }, - "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", - "Roles": [ - { - "Ref": "AgentWithCustomParserRole29295FCD" - } - ] - } - }, - "AgentWithCustomParser73E443B8": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomParserActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom parser configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-parser", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomParserRole29295FCD", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "PromptOverrideConfiguration": { - "OverrideLambda": { - "Fn::GetAtt": [ - "ParserFunctionE8A187F2", - "Arn" - ] - }, - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 2048, - "StopSequences": [], - "Temperature": 0.2, - "TopK": 250, - "TopP": 0.9 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0.1, - "TopK": 100, - "TopP": 0.95 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "MEMORY_SUMMARIZATION" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json deleted file mode 100644 index ae9f15f1d6d0f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockPromptOverride/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-prompt-override-1" - ], - "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", - "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json deleted file mode 100644 index 1fe691460a44b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-prompt-override-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-prompt-override-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-prompt-override-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionD82AB437" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionServiceRoleEE676A1C" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunction3DAF0C7A" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionServiceRole59DD83FB" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionE8A187F2" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleA0EB6013" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverride13B28AED" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRole29295FCD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParser73E443B8" - } - ], - "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-prompt-override-1" - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "metadata": { - "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1015.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json deleted file mode 100644 index 6203796acf345..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]}}},"constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}},"constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}},"constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}},"constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"}}},"constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}},"constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"}}} \ No newline at end of file From a8af671e439d6597227e9536063509e11944fae1 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 29 May 2025 10:21:37 -0400 Subject: [PATCH 34/39] fix(bedrockl2): increased code coverage --- .../test/bedrock/agents/agent.test.ts | 603 ++++++++++++++++++ 1 file changed, 603 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts new file mode 100644 index 0000000000000..0de7ff484c6fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -0,0 +1,603 @@ +import { App } from 'aws-cdk-lib/core'; +import * as core from 'aws-cdk-lib/core'; +import * as iam from 'aws-cdk-lib/aws-iam'; +import * as lambda from 'aws-cdk-lib/aws-lambda'; +import * as kms from 'aws-cdk-lib/aws-kms'; +import { Template, Match } from 'aws-cdk-lib/assertions'; +import * as bedrock from '../../../bedrock'; + +describe('Agent', () => { + let stack: core.Stack; + let foundationModel: bedrock.IInvokable; + + beforeEach(() => { + const app = new App(); + stack = new core.Stack(app, 'test-stack'); + foundationModel = { + invokableArn: 'arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2', + grantInvoke: (grantee) => { + return iam.Grant.addToPrincipal({ + grantee, + actions: ['bedrock:InvokeModel*', 'bedrock:GetFoundationModel'], + resourceArns: ['arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-v2'], + }); + }, + }; + }); + + test('creates agent with default name when agentName is not provided', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentName: Match.stringLikeRegexp('agent-teststack-testagent-8d92f3fe-bedrockagent'), + }); + }); + + test('creates agent with basic properties', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), + FoundationModel: foundationModel.invokableArn, + IdleSessionTTLInSeconds: 600, + AutoPrepare: false, + Description: Match.absent(), + CustomerEncryptionKeyArn: Match.absent(), + }); + }); + + test('creates agent with all properties', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentName: 'MyTestAgent', + description: 'Test agent description', + shouldPrepareAgent: true, + idleSessionTTL: core.Duration.minutes(30), + userInputEnabled: true, + codeInterpreterEnabled: true, + forceDelete: true, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentName: 'MyTestAgent', + Description: 'Test agent description', + Instruction: Match.stringLikeRegexp('.*at least 40 characters.*'), + FoundationModel: foundationModel.invokableArn, + IdleSessionTTLInSeconds: 1800, + AutoPrepare: true, + SkipResourceInUseCheckOnDelete: true, + }); + }); + + test('creates an IAM role with correct trust policy', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Role', { + AssumeRolePolicyDocument: { + Statement: [ + { + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { + Service: 'bedrock.amazonaws.com', + }, + Condition: { + StringEquals: { + 'aws:SourceAccount': Match.objectLike({ Ref: 'AWS::AccountId' }), + }, + ArnLike: { + 'aws:SourceArn': { + 'Fn::Join': ['', [ + 'arn:', + { Ref: 'AWS::Partition' }, + ':bedrock:', + { Ref: 'AWS::Region' }, + ':', + { Ref: 'AWS::AccountId' }, + ':agent/*', + ]], + }, + }, + }, + }, + ], + }, + }); + }); + + test('correctly adds bedrock:InvokeAgent permissions when grantInvoke() is called', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const role = new iam.Role(stack, 'Role', { + assumedBy: new iam.AnyPrincipal(), + }); + + agent.grantInvoke(role); + + Template.fromStack(stack).hasResourceProperties('AWS::IAM::Policy', { + PolicyDocument: { + Statement: Match.arrayWith([ + Match.objectLike({ + Action: 'bedrock:InvokeAgent', + Effect: 'Allow', + Resource: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], + }, + }), + ]), + }, + }); + }); + + test('cannot be created with instruction less than 40 characters', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'Too short', + foundationModel, + }); + }).toThrow(/instruction must be at least 40 characters/); + }); + + test('does not fail validation if instruction is a late-bound value', () => { + const parameter = new core.CfnParameter(stack, 'Parameter'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: parameter.valueAsString, + foundationModel, + }); + }); + + describe('custom orchestration', () => { + test('sets custom orchestration and grants necessary permissions', () => { + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + customOrchestrationExecutor: bedrock.CustomOrchestrationExecutor.fromLambda(fn), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + OrchestrationType: 'CUSTOM_ORCHESTRATION', + CustomOrchestration: { + Executor: { + Lambda: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + }, + }, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Lambda::Permission', { + Action: 'lambda:InvokeFunction', + FunctionName: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestFunction[A-Z0-9]+'), 'Arn'], + }, + Principal: 'bedrock.amazonaws.com', + SourceArn: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentArn'], + }, + SourceAccount: { + Ref: 'AWS::AccountId', + }, + }); + }); + }); + + test('sets KMS key correctly', () => { + const key = new kms.Key(stack, 'TestKey'); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + kmsKey: key, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + CustomerEncryptionKeyArn: { + 'Fn::GetAtt': [Match.stringLikeRegexp('TestKey[A-Z0-9]+'), 'Arn'], + }, + }); + }); + + test('uses existing role correctly', () => { + const role = new iam.Role(stack, 'ExistingRole', { + assumedBy: new iam.ServicePrincipal('bedrock.amazonaws.com'), + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + existingRole: role, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentResourceRoleArn: { + 'Fn::GetAtt': [Match.stringLikeRegexp('ExistingRole[A-Z0-9]+'), 'Arn'], + }, + }); + }); + + describe('static methods', () => { + test('fromAgentAttributes creates agent from attributes', () => { + const importedAgent = bedrock.Agent.fromAgentAttributes(stack, 'ImportedAgent', { + agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/test-agent-id', + roleArn: 'arn:aws:iam::123456789012:role/test-role', + kmsKeyArn: 'arn:aws:kms:us-east-1:123456789012:key/test-key-id', + lastUpdated: '2023-01-01T00:00:00Z', + agentVersion: '1', + }); + + expect(importedAgent.agentArn).toBe('arn:aws:bedrock:us-east-1:123456789012:agent/test-agent-id'); + expect(importedAgent.agentId).toBe('test-agent-id'); + expect(importedAgent.lastUpdated).toBe('2023-01-01T00:00:00Z'); + // Note: agentVersion is not available on IAgent interface, only on concrete Agent class + expect((importedAgent as any).agentVersion).toBe('1'); + expect(importedAgent.kmsKey).toBeDefined(); + }); + + test('fromAgentAttributes uses default version when not provided', () => { + const importedAgent = bedrock.Agent.fromAgentAttributes(stack, 'ImportedAgent', { + agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/test-agent-id', + roleArn: 'arn:aws:iam::123456789012:role/test-role', + }); + + expect((importedAgent as any).agentVersion).toBe('DRAFT'); + expect(importedAgent.kmsKey).toBeUndefined(); + expect(importedAgent.lastUpdated).toBeUndefined(); + }); + }); + + describe('event and metrics methods', () => { + test('onEvent creates EventBridge rule with default configuration', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const rule = agent.onEvent('TestRule'); + + expect(rule).toBeDefined(); + Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { + EventPattern: { + source: ['aws.bedrock'], + detail: { + 'agent-id': [{ 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentId'] }], + }, + }, + }); + }); + + test('onEvent creates EventBridge rule with custom options', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const rule = agent.onEvent('TestRule', { + description: 'Custom rule description', + }); + + expect(rule).toBeDefined(); + Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { + Description: 'Custom rule description', + EventPattern: { + source: ['aws.bedrock'], + detail: { + 'agent-id': [{ 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentId'] }], + }, + }, + }); + }); + + test('metricCount creates CloudWatch metric with default configuration', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const metric = agent.metricCount(); + + expect(metric.namespace).toBe('AWS/Bedrock'); + expect(metric.metricName).toBe('Invocations'); + expect(metric.dimensions).toEqual({ + AgentId: agent.agentId, + }); + }); + + test('metricCount creates CloudWatch metric with custom options', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const metric = agent.metricCount({ + statistic: 'Sum', + period: core.Duration.minutes(5), + }); + + expect(metric.namespace).toBe('AWS/Bedrock'); + expect(metric.metricName).toBe('Invocations'); + expect(metric.statistic).toBe('Sum'); + expect(metric.period?.toSeconds()).toBe(300); + }); + }); + + describe('validation', () => { + test('validates idleSessionTTL range - too low', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + idleSessionTTL: core.Duration.seconds(30), + }); + }).toThrow(/cannot be converted into a whole number of minutes/); + }); + + test('validates idleSessionTTL range - too high', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + idleSessionTTL: core.Duration.minutes(65), + }); + }).toThrow(/idleSessionTTL must be between 1 and 60 minutes/); + }); + + test('accepts valid idleSessionTTL values', () => { + expect(() => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + idleSessionTTL: core.Duration.minutes(30), + }); + }).not.toThrow(); + }); + }); + + describe('action groups', () => { + test('addActionGroups method adds multiple action groups', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const fn1 = new lambda.Function(stack, 'TestFunction1', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + const fn2 = new lambda.Function(stack, 'TestFunction2', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'TestActionGroup1', + description: 'Test action group 1', + executor: bedrock.ActionGroupExecutor.fromLambda(fn1), + enabled: true, + }); + + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'TestActionGroup2', + description: 'Test action group 2', + executor: bedrock.ActionGroupExecutor.fromLambda(fn2), + enabled: true, + }); + + agent.addActionGroups(actionGroup1, actionGroup2); + + expect(agent.actionGroups).toHaveLength(4); // 2 default + 2 added + }); + + test('throws error when adding duplicate action group names', () => { + const agent = new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + }); + + const fn = new lambda.Function(stack, 'TestFunction', { + runtime: lambda.Runtime.NODEJS_18_X, + handler: 'index.handler', + code: lambda.Code.fromInline('exports.handler = async () => {};'), + }); + + const actionGroup1 = new bedrock.AgentActionGroup({ + name: 'DuplicateName', + description: 'Test action group 1', + executor: bedrock.ActionGroupExecutor.fromLambda(fn), + enabled: true, + }); + + const actionGroup2 = new bedrock.AgentActionGroup({ + name: 'DuplicateName', + description: 'Test action group 2', + executor: bedrock.ActionGroupExecutor.fromLambda(fn), + enabled: true, + }); + + agent.addActionGroup(actionGroup1); + + expect(() => { + agent.addActionGroup(actionGroup2); + }).toThrow(/Action group already exists/); + }); + }); + + describe('memory configuration', () => { + test('creates agent with memory configuration', () => { + const memory = bedrock.Memory.sessionSummary({ + memoryDuration: core.Duration.days(30), + maxRecentSessions: 20, + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + MemoryConfiguration: { + EnabledMemoryTypes: ['SESSION_SUMMARY'], + StorageDays: 30, + SessionSummaryConfiguration: { + MaxRecentSessions: 20, + }, + }, + }); + }); + + test('creates agent with default memory configuration', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + memory: bedrock.Memory.SESSION_SUMMARY, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + MemoryConfiguration: { + EnabledMemoryTypes: ['SESSION_SUMMARY'], + StorageDays: 30, + SessionSummaryConfiguration: { + MaxRecentSessions: 20, + }, + }, + }); + }); + }); + + describe('edge cases', () => { + test('handles undefined agentCollaborators', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentCollaboration: new bedrock.AgentCollaboration({ + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [], + }), + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentCollaboration: 'SUPERVISOR', + AgentCollaborators: Match.absent(), + }); + }); + + test('handles disabled default action groups', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + userInputEnabled: false, + codeInterpreterEnabled: false, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + ActionGroups: [ + { + ActionGroupName: 'UserInputAction', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.UserInput', + SkipResourceInUseCheckOnDelete: false, + }, + { + ActionGroupName: 'CodeInterpreterAction', + ActionGroupState: 'DISABLED', + ParentActionGroupSignature: 'AMAZON.CodeInterpreter', + SkipResourceInUseCheckOnDelete: false, + }, + ], + }); + }); + + test('creates agent with description', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + description: 'This is a test agent with a custom description', + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + Description: 'This is a test agent with a custom description', + }); + }); + + test('creates agent with custom agent name', () => { + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentName: 'MyCustomAgentName', + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentName: 'MyCustomAgentName', + }); + }); + + test('creates agent with agent collaboration', () => { + const collaboratorAlias = bedrock.AgentAlias.fromAttributes(stack, 'CollaboratorAlias', { + aliasId: 'test-alias-id', + aliasName: 'TestAlias', + agentVersion: '1', + agent: bedrock.Agent.fromAgentAttributes(stack, 'CollaboratorAgent', { + agentArn: 'arn:aws:bedrock:us-east-1:123456789012:agent/collaborator-agent-id', + roleArn: 'arn:aws:iam::123456789012:role/collaborator-role', + }), + }); + + const collaborator = new bedrock.AgentCollaborator({ + agentAlias: collaboratorAlias, + collaborationInstruction: 'Help with data analysis tasks', + collaboratorName: 'DataAnalyst', + relayConversationHistory: true, + }); + + const agentCollaboration = new bedrock.AgentCollaboration({ + type: bedrock.AgentCollaboratorType.SUPERVISOR, + collaborators: [collaborator], + }); + + new bedrock.Agent(stack, 'TestAgent', { + instruction: 'This is a test instruction that must be at least 40 characters long to be valid', + foundationModel, + agentCollaboration, + }); + + Template.fromStack(stack).hasResourceProperties('AWS::Bedrock::Agent', { + AgentCollaboration: 'SUPERVISOR', + AgentCollaborators: [ + { + AgentDescriptor: { + AliasArn: Match.objectLike({ + 'Fn::Join': Match.anyValue(), + }), + }, + CollaborationInstruction: 'Help with data analysis tasks', + CollaboratorName: 'DataAnalyst', + RelayConversationHistory: 'TO_COLLABORATOR', + }, + ], + }); + }); + }); +}); From 9a879c3d5cf90f15867ca45cfe4af5abdc5e1f46 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 29 May 2025 12:20:36 -0400 Subject: [PATCH 35/39] fix(bedrockl2): updated integ test --- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 + ...aultTestDeployAssertE2AFA81B.template.json | 36 + ...aws-cdk-bedrock-action-group-1.assets.json | 20 + ...s-cdk-bedrock-action-group-1.template.json | 302 +++++ .../integ.action-group.js.snapshot/cdk.out | 1 + .../integ.action-group.js.snapshot/integ.json | 13 + .../manifest.json | 278 ++++ .../integ.action-group.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert1DDDDC57.assets.json | 20 + ...aultTestDeployAssert1DDDDC57.template.json | 36 + .../schema/s3-api-schema.json | 33 + .../index.js | 1 + .../index.py | 388 ++++++ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 + ...a1c3a55395746c48b28c003b08bc1d08688f3e.zip | 3 + .../aws-cdk-bedrock-api-schema-1.assets.json | 90 ++ ...aws-cdk-bedrock-api-schema-1.template.json | 1141 +++++++++++++++++ .../integ.api-schema.js.snapshot/cdk.out | 1 + .../integ.api-schema.js.snapshot/integ.json | 13 + .../manifest.json | 772 +++++++++++ .../integ.api-schema.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert5AD90360.assets.json | 20 + ...aultTestDeployAssert5AD90360.template.json | 36 + .../aws-cdk-bedrock-memory-1.assets.json | 20 + .../aws-cdk-bedrock-memory-1.template.json | 584 +++++++++ .../agents/integ.memory.js.snapshot/cdk.out | 1 + .../integ.memory.js.snapshot/integ.json | 13 + .../integ.memory.js.snapshot/manifest.json | 448 +++++++ .../agents/integ.memory.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertACFAFF30.assets.json | 20 + ...aultTestDeployAssertACFAFF30.template.json | 36 + ...ws-cdk-bedrock-orchestration-1.assets.json | 20 + ...-cdk-bedrock-orchestration-1.template.json | 301 +++++ .../integ.orchestration.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 278 ++++ .../integ.orchestration.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert7D38F1F4.assets.json | 20 + ...aultTestDeployAssert7D38F1F4.template.json | 36 + ...-cdk-bedrock-prompt-override-1.assets.json | 20 + ...dk-bedrock-prompt-override-1.template.json | 701 ++++++++++ .../integ.prompt-override.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 506 ++++++++ .../tree.json | 1 + 45 files changed, 6281 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json new file mode 100644 index 0000000000000..aa619c2ef0040 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", + "source": { + "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json new file mode 100644 index 0000000000000..527016654903f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2": { + "displayName": "aws-cdk-bedrock-action-group-1 Template", + "source": { + "path": "aws-cdk-bedrock-action-group-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json new file mode 100644 index 0000000000000..ec4a3201520a7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json @@ -0,0 +1,302 @@ +{ + "Resources": { + "ActionGroupFunctionServiceRole77660D62": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ActionGroupFunctionFE14D1CB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ActionGroupFunctionServiceRole77660D62", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ActionGroupFunctionServiceRole77660D62" + ] + }, + "ActionGroupFunctionLogGroup05A58C56": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "ActionGroupFunctionFE14D1CB" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + } + }, + "ActionGroupName": "CustomActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" + }, + "Description": "A custom action group for testing", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-action-group-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json new file mode 100644 index 0000000000000..99aecebe78b1c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockActionGroup/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-action-group-1" + ], + "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", + "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json new file mode 100644 index 0000000000000..d3efc70dc8865 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json @@ -0,0 +1,278 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-action-group-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-action-group-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-action-group-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-action-group-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionServiceRole77660D62" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionFE14D1CB" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionLogGroup05A58C56" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-action-group-1" + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "metadata": { + "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json new file mode 100644 index 0000000000000..c924b94139fee --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ActionGroupFunctionFE14D1CB"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json new file mode 100644 index 0000000000000..686fe01004943 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", + "source": { + "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json new file mode 100644 index 0000000000000..a9d7497c0610b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json @@ -0,0 +1,33 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py new file mode 100644 index 0000000000000..aeb2132fc67bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py @@ -0,0 +1,388 @@ +import contextlib +import json +import logging +import os +import shutil +import subprocess +import tempfile +import urllib.parse +from urllib.request import Request, urlopen +from uuid import uuid4 +from zipfile import ZipFile + +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +cloudfront = boto3.client('cloudfront') +s3 = boto3.client('s3') + +CFN_SUCCESS = "SUCCESS" +CFN_FAILED = "FAILED" +ENV_KEY_MOUNT_PATH = "MOUNT_PATH" +ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" + +AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" +CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" + +os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) + +def handler(event, context): + + def cfn_error(message=None): + if message: + logger.error("| cfn_error: %s" % message.encode()) + cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) + + + try: + # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper + # with the response CloudFormation sees from this Custom Resource execution. + logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) + + # cloudformation request type (create/update/delete) + request_type = event['RequestType'] + + # extract resource properties + props = event['ResourceProperties'] + old_props = event.get('OldResourceProperties', {}) + physical_id = event.get('PhysicalResourceId', None) + + try: + source_bucket_names = props['SourceBucketNames'] + source_object_keys = props['SourceObjectKeys'] + source_markers = props.get('SourceMarkers', None) + source_markers_config = props.get('SourceMarkersConfig', None) + dest_bucket_name = props['DestinationBucketName'] + dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') + extract = props.get('Extract', 'true') == 'true' + retain_on_delete = props.get('RetainOnDelete', "true") == "true" + distribution_id = props.get('DistributionId', '') + user_metadata = props.get('UserMetadata', {}) + system_metadata = props.get('SystemMetadata', {}) + prune = props.get('Prune', 'true').lower() == 'true' + exclude = props.get('Exclude', []) + include = props.get('Include', []) + sign_content = props.get('SignContent', 'false').lower() == 'true' + output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' + + # backwards compatibility - if "SourceMarkers" is not specified, + # assume all sources have an empty market map + if source_markers is None: + source_markers = [{} for i in range(len(source_bucket_names))] + if source_markers_config is None: + source_markers_config = [{} for i in range(len(source_bucket_names))] + + default_distribution_path = dest_bucket_prefix + if not default_distribution_path.endswith("/"): + default_distribution_path += "/" + if not default_distribution_path.startswith("/"): + default_distribution_path = "/" + default_distribution_path + default_distribution_path += "*" + + distribution_paths = props.get('DistributionPaths', [default_distribution_path]) + except KeyError as e: + cfn_error("missing request resource property %s. props: %s" % (str(e), props)) + return + + # configure aws cli options after resetting back to the defaults for each request + if os.path.exists(AWS_CLI_CONFIG_FILE): + os.remove(AWS_CLI_CONFIG_FILE) + if sign_content: + aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") + + # treat "/" as if no prefix was specified + if dest_bucket_prefix == "/": + dest_bucket_prefix = "" + + s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) + s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) + old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) + + + # obviously this is not + if old_s3_dest == "s3:///": + old_s3_dest = None + + logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) + logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) + + # if we are creating a new resource, allocate a physical id for it + # otherwise, we expect physical id to be relayed by cloudformation + if request_type == "Create": + physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) + else: + if not physical_id: + cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) + return + + # delete or create/update (only if "retain_on_delete" is false) + if request_type == "Delete" and not retain_on_delete: + if not bucket_owned(dest_bucket_name, dest_bucket_prefix): + aws_command("s3", "rm", s3_dest, "--recursive") + + # if we are updating without retention and the destination changed, delete first + if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: + if not old_s3_dest: + logger.warn("cannot delete old resource without old resource properties") + return + + aws_command("s3", "rm", old_s3_dest, "--recursive") + + if request_type == "Update" or request_type == "Create": + s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) + + if distribution_id: + cloudfront_invalidate(distribution_id, distribution_paths) + + cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ + # Passing through the ARN sequences dependencees on the deployment + 'DestinationBucketArn': props.get('DestinationBucketArn'), + **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) + }) + except KeyError as e: + cfn_error("invalid request. Missing key %s" % str(e)) + except Exception as e: + logger.exception(e) + cfn_error(str(e)) + +#--------------------------------------------------------------------------------------------------- +# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities +def sanitize_message(message): + if not message: + return message + + # Sanitize the message to prevent log injection and HTTP response splitting + sanitized_message = message.replace('\n', '').replace('\r', '') + + # Encode the message to handle special characters + encoded_message = urllib.parse.quote(sanitized_message) + + return encoded_message + +#--------------------------------------------------------------------------------------------------- +# populate all files from s3_source_zips to a destination bucket +def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): + # list lengths are equal + if len(s3_source_zips) != len(source_markers): + raise Exception("'source_markers' and 's3_source_zips' must be the same length") + + # create a temporary working directory in /tmp or if enabled an attached efs volume + if ENV_KEY_MOUNT_PATH in os.environ: + workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) + os.mkdir(workdir) + else: + workdir = tempfile.mkdtemp() + + logger.info("| workdir: %s" % workdir) + + # create a directory into which we extract the contents of the zip file + contents_dir=os.path.join(workdir, 'contents') + os.mkdir(contents_dir) + + try: + # download the archive from the source and extract to "contents" + for i in range(len(s3_source_zips)): + s3_source_zip = s3_source_zips[i] + markers = source_markers[i] + markers_config = source_markers_config[i] + + if extract: + archive=os.path.join(workdir, str(uuid4())) + logger.info("archive: %s" % archive) + aws_command("s3", "cp", s3_source_zip, archive) + logger.info("| extracting archive to: %s\n" % contents_dir) + logger.info("| markers: %s" % markers) + extract_and_replace_markers(archive, contents_dir, markers, markers_config) + else: + logger.info("| copying archive to: %s\n" % contents_dir) + aws_command("s3", "cp", s3_source_zip, contents_dir) + + # sync from "contents" to destination + + s3_command = ["s3", "sync"] + + if prune: + s3_command.append("--delete") + + if exclude: + for filter in exclude: + s3_command.extend(["--exclude", filter]) + + if include: + for filter in include: + s3_command.extend(["--include", filter]) + + s3_command.extend([contents_dir, s3_dest]) + s3_command.extend(create_metadata_args(user_metadata, system_metadata)) + aws_command(*s3_command) + finally: + if not os.getenv(ENV_KEY_SKIP_CLEANUP): + shutil.rmtree(workdir) + +#--------------------------------------------------------------------------------------------------- +# invalidate files in the CloudFront distribution edge caches +def cloudfront_invalidate(distribution_id, distribution_paths): + invalidation_resp = cloudfront.create_invalidation( + DistributionId=distribution_id, + InvalidationBatch={ + 'Paths': { + 'Quantity': len(distribution_paths), + 'Items': distribution_paths + }, + 'CallerReference': str(uuid4()), + }) + # by default, will wait up to 10 minutes + cloudfront.get_waiter('invalidation_completed').wait( + DistributionId=distribution_id, + Id=invalidation_resp['Invalidation']['Id']) + +#--------------------------------------------------------------------------------------------------- +# set metadata +def create_metadata_args(raw_user_metadata, raw_system_metadata): + if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: + return [] + + format_system_metadata_key = lambda k: k.lower() + format_user_metadata_key = lambda k: k.lower() + + system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } + user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } + + flatten = lambda l: [item for sublist in l for item in sublist] + system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) + user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] + + return system_args + user_args + ["--metadata-directive", "REPLACE"] + +#--------------------------------------------------------------------------------------------------- +# executes an "aws" cli command +def aws_command(*args): + aws="/opt/awscli/aws" # from AwsCliLayer + logger.info("| aws %s" % ' '.join(args)) + subprocess.check_call([aws] + list(args)) + +#--------------------------------------------------------------------------------------------------- +# sends a response to cloudformation +def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): + + responseUrl = event['ResponseURL'] + + responseBody = {} + responseBody['Status'] = responseStatus + responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) + responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name + responseBody['StackId'] = event['StackId'] + responseBody['RequestId'] = event['RequestId'] + responseBody['LogicalResourceId'] = event['LogicalResourceId'] + responseBody['NoEcho'] = noEcho + responseBody['Data'] = responseData + + body = json.dumps(responseBody) + logger.info("| response body:\n" + body) + + headers = { + 'content-type' : '', + 'content-length' : str(len(body)) + } + + try: + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) + except Exception as e: + logger.error("| unable to send response to CloudFormation") + logger.exception(e) + + +#--------------------------------------------------------------------------------------------------- +# check if bucket is owned by a custom resource +# if it is then we don't want to delete content +def bucket_owned(bucketName, keyPrefix): + tag = CUSTOM_RESOURCE_OWNER_TAG + if keyPrefix != "": + tag = tag + ':' + keyPrefix + try: + request = s3.get_bucket_tagging( + Bucket=bucketName, + ) + return any((x["Key"].startswith(tag)) for x in request["TagSet"]) + except Exception as e: + logger.info("| error getting tags from bucket") + logger.exception(e) + return False + +# extract archive and replace markers in output files +def extract_and_replace_markers(archive, contents_dir, markers, markers_config): + with ZipFile(archive, "r") as zip: + zip.extractall(contents_dir) + + # replace markers for this source + for file in zip.namelist(): + file_path = os.path.join(contents_dir, file) + if os.path.isdir(file_path): continue + replace_markers(file_path, markers, markers_config) + +def prepare_json_safe_markers(markers): + """Pre-process markers to ensure JSON-safe values""" + safe_markers = {} + for key, value in markers.items(): + # Serialize the value as JSON to handle escaping if the value is a string + serialized = json.dumps(value) + if serialized.startswith('"') and serialized.endswith('"'): + json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes + else: + json_safe_value = serialized + safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') + return safe_markers + +def replace_markers(filename, markers, markers_config): + """Replace markers in a file, with special handling for JSON files.""" + # if there are no markers, skip + if not markers: + return + + outfile = filename + '.new' + json_escape = markers_config.get('jsonEscape', 'false').lower() + if json_escape == 'true': + replace_tokens = prepare_json_safe_markers(markers) + else: + replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) + + # Handle content with line-by-line binary replacement + with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: + # Process line by line to handle large files + for line in fi: + for token, replacement in replace_tokens.items(): + line = line.replace(token, replacement) + fo.write(line) + + # Delete the original file and rename the new one to the original + os.remove(filename) + os.rename(outfile, filename) + +def replace_markers_in_json(json_object, replace_tokens): + """Replace markers in JSON content with proper escaping.""" + try: + def replace_in_structure(obj): + if isinstance(obj, str): + # Convert string to bytes for consistent replacement + result = obj.encode('utf-8') + for token, replacement in replace_tokens.items(): + result = result.replace(token, replacement) + # Convert back to string + return result.decode('utf-8') + elif isinstance(obj, dict): + return {k: replace_in_structure(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [replace_in_structure(item) for item in obj] + return obj + + # Process the whole structure + processed = replace_in_structure(json_object) + return json.dumps(processed) + except Exception as e: + logger.error(f'Error processing JSON: {e}') + logger.exception(e) + return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml new file mode 100644 index 0000000000000..4accd4cadb267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.3 +info: + title: Asset API Schema + version: 1.0.0 +paths: + /asset: + get: + operationId: assetHelloWorld + summary: Say hello from asset + description: Returns a greeting message from asset-stored schema + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip new file mode 100644 index 0000000000000..42b96d8fc1b3c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc63a5b65bd5c8f0e3819f5c9f3b9f7335f35f35fac6ce8829606a6dc52ff0b +size 19940332 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json new file mode 100644 index 0000000000000..131e4a7bb4295 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json @@ -0,0 +1,90 @@ +{ + "version": "41.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e": { + "displayName": "DeploySchema/AwsCliLayer/Code", + "source": { + "path": "asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { + "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", + "source": { + "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { + "displayName": "DeploySchema/Asset1", + "source": { + "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { + "displayName": "Schema", + "source": { + "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb": { + "displayName": "aws-cdk-bedrock-api-schema-1 Template", + "source": { + "path": "aws-cdk-bedrock-api-schema-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json new file mode 100644 index 0000000000000..3565a25933ec3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json @@ -0,0 +1,1141 @@ +{ + "Resources": { + "AssetActionGroupFunctionServiceRoleC53BA920": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AssetActionGroupFunction98EC70AB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "AssetActionGroupFunctionServiceRoleC53BA920", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "AssetActionGroupFunctionServiceRoleC53BA920" + ] + }, + "AssetActionGroupFunctionLogGroup3638096F": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "AssetActionGroupFunction98EC70AB" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "InlineActionGroupFunctionServiceRole5543D9A3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "InlineActionGroupFunction566CD00A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "InlineActionGroupFunctionServiceRole5543D9A3", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "InlineActionGroupFunctionServiceRole5543D9A3" + ] + }, + "InlineActionGroupFunctionLogGroup58BAB9BB": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "InlineActionGroupFunction566CD00A" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "S3ActionGroupFunctionServiceRole7E4C5A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "S3ActionGroupFunctionA4648C25": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionServiceRole7E4C5A58", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "S3ActionGroupFunctionServiceRole7E4C5A58" + ] + }, + "S3ActionGroupFunctionLogGroup79BCEE92": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "S3ActionGroupFunctionA4648C25" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "SchemaBucket79EE2269": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + }, + { + "Key": "aws-cdk:cr-owned:911f5017", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SchemaBucketPolicy557840E2": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "SchemaBucket79EE2269" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "SchemaBucket79EE2269" + } + }, + "DependsOn": [ + "SchemaBucketPolicy557840E2" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": { + "Fn::FindInMap": [ + "LatestNodeRuntimeMap", + { + "Ref": "AWS::Region" + }, + "value" + ] + }, + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "SchemaBucket79EE2269" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "DeploySchemaAwsCliLayerD0D0BA6E": { + "Type": "AWS::Lambda::LayerVersion", + "Properties": { + "Content": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip" + }, + "Description": "/opt/awscli/aws" + } + }, + "DeploySchemaCustomResource277E9836": { + "Type": "Custom::CDKBucketDeployment", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn" + ] + }, + "SourceBucketNames": [ + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ], + "SourceObjectKeys": [ + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" + ], + "SourceMarkers": [ + {} + ], + "DestinationBucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "Prune": true, + "OutputObjectKeys": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": [ + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" + }, + "Environment": { + "Variables": { + "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + } + }, + "Handler": "index.handler", + "Layers": [ + { + "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "Role": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn" + ] + }, + "Runtime": "python3.11", + "Timeout": 900 + }, + "DependsOn": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + ] + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CLogGroup817B64E9": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "ApiSchemaAgentRole636AC572": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + }, + "/schema/s3-api-schema.json" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + } + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "Roles": [ + { + "Ref": "ApiSchemaAgentRole636AC572" + } + ] + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgent8E965D9C": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + } + }, + "ActionGroupName": "AssetApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + } + }, + "Description": "An action group using a local asset API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + } + }, + "ActionGroupName": "InlineApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group using an inline API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + } + }, + "ActionGroupName": "S3ApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "S3ObjectKey": "schema/s3-api-schema.json" + } + }, + "Description": "An action group using an S3-based API schema", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "api-schema-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "ApiSchemaAgentRole636AC572", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + } + }, + "Mappings": { + "LatestNodeRuntimeMap": { + "af-south-1": { + "value": "nodejs22.x" + }, + "ap-east-1": { + "value": "nodejs22.x" + }, + "ap-east-2": { + "value": "nodejs22.x" + }, + "ap-northeast-1": { + "value": "nodejs22.x" + }, + "ap-northeast-2": { + "value": "nodejs22.x" + }, + "ap-northeast-3": { + "value": "nodejs22.x" + }, + "ap-south-1": { + "value": "nodejs22.x" + }, + "ap-south-2": { + "value": "nodejs22.x" + }, + "ap-southeast-1": { + "value": "nodejs22.x" + }, + "ap-southeast-2": { + "value": "nodejs22.x" + }, + "ap-southeast-3": { + "value": "nodejs22.x" + }, + "ap-southeast-4": { + "value": "nodejs22.x" + }, + "ap-southeast-5": { + "value": "nodejs22.x" + }, + "ap-southeast-7": { + "value": "nodejs22.x" + }, + "ca-central-1": { + "value": "nodejs22.x" + }, + "ca-west-1": { + "value": "nodejs22.x" + }, + "cn-north-1": { + "value": "nodejs22.x" + }, + "cn-northwest-1": { + "value": "nodejs22.x" + }, + "eu-central-1": { + "value": "nodejs22.x" + }, + "eu-central-2": { + "value": "nodejs22.x" + }, + "eu-isoe-west-1": { + "value": "nodejs18.x" + }, + "eu-north-1": { + "value": "nodejs22.x" + }, + "eu-south-1": { + "value": "nodejs22.x" + }, + "eu-south-2": { + "value": "nodejs22.x" + }, + "eu-west-1": { + "value": "nodejs22.x" + }, + "eu-west-2": { + "value": "nodejs22.x" + }, + "eu-west-3": { + "value": "nodejs22.x" + }, + "il-central-1": { + "value": "nodejs22.x" + }, + "me-central-1": { + "value": "nodejs22.x" + }, + "me-south-1": { + "value": "nodejs22.x" + }, + "mx-central-1": { + "value": "nodejs22.x" + }, + "sa-east-1": { + "value": "nodejs22.x" + }, + "us-east-1": { + "value": "nodejs22.x" + }, + "us-east-2": { + "value": "nodejs22.x" + }, + "us-gov-east-1": { + "value": "nodejs22.x" + }, + "us-gov-west-1": { + "value": "nodejs22.x" + }, + "us-iso-east-1": { + "value": "nodejs18.x" + }, + "us-iso-west-1": { + "value": "nodejs18.x" + }, + "us-isob-east-1": { + "value": "nodejs18.x" + }, + "us-isob-west-1": { + "value": "nodejs18.x" + }, + "us-west-1": { + "value": "nodejs22.x" + }, + "us-west-2": { + "value": "nodejs22.x" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json new file mode 100644 index 0000000000000..d600c50c982b6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockApiSchema/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-api-schema-1" + ], + "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", + "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json new file mode 100644 index 0000000000000..9720538d44078 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json @@ -0,0 +1,772 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-api-schema-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-api-schema-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-api-schema-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionServiceRoleC53BA920" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunction98EC70AB" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionLogGroup3638096F" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionServiceRole5543D9A3" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunction566CD00A" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLogGroup58BAB9BB" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionServiceRole7E4C5A58" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionA4648C25" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLogGroup79BCEE92" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucket79EE2269" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketPolicy557840E2" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" + } + ], + "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ + { + "type": "aws:cdk:logicalId", + "data": "LatestNodeRuntimeMap" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "uuid": "*", + "layers": [ + "*" + ], + "environment": "*", + "lambdaPurpose": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + true + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + "*" + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaCustomResource277E9836" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "layers": [ + "*" + ], + "environment": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addEnvironment": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addLayers": [ + "*" + ] + } + }, + { + "type": "aws:cdk:is-custom-resource-handler-singleton", + "data": true + }, + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 2 + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CLogGroup817B64E9" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRole636AC572" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgent8E965D9C" + } + ], + "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-api-schema-1" + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "metadata": { + "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json new file mode 100644 index 0000000000000..972274b5b66d5 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"AssetActionGroupFunction98EC70AB"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"InlineActionGroupFunction566CD00A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"S3ActionGroupFunctionA4648C25"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"},"children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip"},"description":"/opt/awscli/aws"}}}}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536"}]]},"retentionInDays":731}}}}}}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}}}}}}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json new file mode 100644 index 0000000000000..1a10110ba1360 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", + "source": { + "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json new file mode 100644 index 0000000000000..11c8a8190c50a --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2": { + "displayName": "aws-cdk-bedrock-memory-1 Template", + "source": { + "path": "aws-cdk-bedrock-memory-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json new file mode 100644 index 0000000000000..9ee246acddd0e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json @@ -0,0 +1,584 @@ +{ + "Resources": { + "DefaultMemoryFunctionServiceRoleD8C5CDAF": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "DefaultMemoryFunctionAC6D5374": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF" + ] + }, + "DefaultMemoryFunctionLogGroupD9F7BD3F": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "DefaultMemoryFunctionAC6D5374" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomMemoryFunctionServiceRoleA64B0AD5": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomMemoryFunctionB4B5CB9A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomMemoryFunctionServiceRoleA64B0AD5", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomMemoryFunctionServiceRoleA64B0AD5" + ] + }, + "CustomMemoryFunctionLogGroup61F2359A": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "CustomMemoryFunctionB4B5CB9A" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "AgentWithDefaultMemoryRole0AEE1FD1": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" + } + }, + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", + "Roles": [ + { + "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ] + } + }, + "AgentWithDefaultMemoryA1F31830": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + } + }, + "ActionGroupName": "DefaultMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing default memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-default-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithDefaultMemoryRole0AEE1FD1", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 20 + }, + "StorageDays": 30 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + ] + }, + "AgentWithCustomMemoryRole3B7BD09F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" + } + }, + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", + "Roles": [ + { + "Ref": "AgentWithCustomMemoryRole3B7BD09F" + } + ] + } + }, + "AgentWithCustomMemoryD0BD498B": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomMemoryRole3B7BD09F", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 5 + }, + "StorageDays": 15 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json new file mode 100644 index 0000000000000..d4ab305a0e573 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockMemory/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-memory-1" + ], + "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", + "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json new file mode 100644 index 0000000000000..9465847498a30 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json @@ -0,0 +1,448 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-memory-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-memory-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-memory-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-memory-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionAC6D5374" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionLogGroupD9F7BD3F" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionServiceRoleA64B0AD5" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionB4B5CB9A" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionLogGroup61F2359A" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryA1F31830" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRole3B7BD09F" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryD0BD498B" + } + ], + "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-memory-1" + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "metadata": { + "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockMemory/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json new file mode 100644 index 0000000000000..267627aa5b9f1 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"DefaultMemoryFunctionAC6D5374"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomMemoryFunctionB4B5CB9A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json new file mode 100644 index 0000000000000..8a135a7ec895c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", + "source": { + "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json new file mode 100644 index 0000000000000..8cf2b0884e2d7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a": { + "displayName": "aws-cdk-bedrock-orchestration-1 Template", + "source": { + "path": "aws-cdk-bedrock-orchestration-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json new file mode 100644 index 0000000000000..f3cca8729d5d6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json @@ -0,0 +1,301 @@ +{ + "Resources": { + "OrchestrationFunctionServiceRole12D0673A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "OrchestrationFunction2F3851C6": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "OrchestrationFunctionServiceRole12D0673A", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "OrchestrationFunctionServiceRole12D0673A" + ] + }, + "OrchestrationFunctionLogGroup07F3FD44": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "OrchestrationFunction2F3851C6" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + }, + "SourceArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentDC6CC131", + "AgentArn" + ] + } + } + }, + "CustomOrchestrationAgentRole85710213": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" + } + }, + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", + "Roles": [ + { + "Ref": "CustomOrchestrationAgentRole85710213" + } + ] + } + }, + "CustomOrchestrationAgentDC6CC131": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "custom-orchestration-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentRole85710213", + "Arn" + ] + }, + "AutoPrepare": false, + "CustomOrchestration": { + "Executor": { + "Lambda": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + } + } + }, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", + "OrchestrationType": "CUSTOM_ORCHESTRATION", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json new file mode 100644 index 0000000000000..6f18039793ab7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockOrchestration/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-orchestration-1" + ], + "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", + "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json new file mode 100644 index 0000000000000..0108c07c714c5 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json @@ -0,0 +1,278 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-orchestration-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-orchestration-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-orchestration-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionServiceRole12D0673A" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunction2F3851C6" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionLogGroup07F3FD44" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRole85710213" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentDC6CC131" + } + ], + "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-orchestration-1" + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "metadata": { + "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json new file mode 100644 index 0000000000000..8cccbee79c4ec --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"OrchestrationFunction2F3851C6"}]]},"retentionInDays":731}}}}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}}}}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json new file mode 100644 index 0000000000000..ad7678636bede --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", + "source": { + "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json new file mode 100644 index 0000000000000..9975e7b362726 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "41.0.0", + "files": { + "842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333": { + "displayName": "aws-cdk-bedrock-prompt-override-1 Template", + "source": { + "path": "aws-cdk-bedrock-prompt-override-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json new file mode 100644 index 0000000000000..2530f68f72bf7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json @@ -0,0 +1,701 @@ +{ + "Resources": { + "PromptOverrideFunctionServiceRoleB1ACDEAD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "PromptOverrideFunctionD82AB437": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD" + ] + }, + "PromptOverrideFunctionLogGroupB1001805": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "PromptOverrideFunctionD82AB437" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomParserActionFunctionServiceRoleEE676A1C": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomParserActionFunction3DAF0C7A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomParserActionFunctionServiceRoleEE676A1C", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomParserActionFunctionServiceRoleEE676A1C" + ] + }, + "CustomParserActionFunctionLogGroupD54EA446": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "CustomParserActionFunction3DAF0C7A" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "ParserFunctionServiceRole59DD83FB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ParserFunctionE8A187F2": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ParserFunctionServiceRole59DD83FB", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ParserFunctionServiceRole59DD83FB" + ] + }, + "ParserFunctionLogGroup947036DC": { + "Type": "AWS::Logs::LogGroup", + "Properties": { + "LogGroupName": { + "Fn::Join": [ + "", + [ + "/aws/lambda/", + { + "Ref": "ParserFunctionE8A187F2" + } + ] + ] + }, + "RetentionInDays": 731 + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "AgentWithPromptOverrideRoleA0EB6013": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" + } + }, + "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", + "Roles": [ + { + "Ref": "AgentWithPromptOverrideRoleA0EB6013" + } + ] + } + }, + "AgentWithPromptOverride13B28AED": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + } + }, + "ActionGroupName": "PromptOverrideActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing prompt override configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-prompt-override", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithPromptOverrideRoleA0EB6013", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "POST_PROCESSING" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + ] + }, + "AgentWithCustomParserRole29295FCD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" + } + }, + "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", + "Roles": [ + { + "Ref": "AgentWithCustomParserRole29295FCD" + } + ] + } + }, + "AgentWithCustomParser73E443B8": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomParserActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom parser configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-parser", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomParserRole29295FCD", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "OverrideLambda": { + "Fn::GetAtt": [ + "ParserFunctionE8A187F2", + "Arn" + ] + }, + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "MEMORY_SUMMARIZATION" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out new file mode 100644 index 0000000000000..188478b55560e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json new file mode 100644 index 0000000000000..ae9f15f1d6d0f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "41.0.0", + "testCases": { + "BedrockPromptOverride/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-prompt-override-1" + ], + "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", + "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" + } + }, + "minimumCliVersion": "2.1005.0" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json new file mode 100644 index 0000000000000..f7f6ae4c3fc29 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json @@ -0,0 +1,506 @@ +{ + "version": "43.0.0", + "artifacts": { + "aws-cdk-bedrock-prompt-override-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-prompt-override-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-prompt-override-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionD82AB437" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionLogGroupB1001805" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionServiceRoleEE676A1C" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunction3DAF0C7A" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionLogGroupD54EA446" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionServiceRole59DD83FB" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionE8A187F2" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "logGroupName": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionLogGroup947036DC" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleA0EB6013" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverride13B28AED" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRole29295FCD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParser73E443B8" + } + ], + "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-prompt-override-1" + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "metadata": { + "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1016.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json new file mode 100644 index 0000000000000..f42c91ee8e7bc --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"PromptOverrideFunctionD82AB437"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomParserActionFunction3DAF0C7A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ParserFunctionE8A187F2"}]]},"retentionInDays":731}}}}}}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file From 8042e5cc593399bf0d2aaab7a0018a77fbd3c421 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 4 Jun 2025 11:02:16 -0400 Subject: [PATCH 36/39] fix(bedrockl2): merged yarn.lock file with main --- yarn.lock | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 50d9099909dfd..beed21163723d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,14 +64,6 @@ "@aws-cdk/aws-lambda-python-alpha@file:packages/@aws-cdk/aws-lambda-python-alpha": version "0.0.0" -"@aws-cdk/aws-service-spec@0.1.73": - version "0.1.73" - resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.73.tgz#bc34d318b2b153331a2dcdb2857583e761dc6a90" - integrity sha512-heSDSEYOCwHMdSrdb0DqifxRPqXE84uTNZn55bIKQAYmpT+E9wkVNH77jYYxSxgvaun555ck7lIiG9U8wHIiCg== - dependencies: - "@aws-cdk/service-spec-types" "^0.0.139" - "@cdklabs/tskb" "^0.0.3" - "@aws-cdk/aws-service-spec@0.1.76": version "0.1.76" resolved "https://registry.npmjs.org/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.76.tgz#bbca16e92a824a10616b9d31a9d289a4bb741f6c" @@ -96,7 +88,7 @@ jsonschema "~1.4.1" semver "^7.7.2" -"@aws-cdk/integ-runner@^2.186.11": +"@aws-cdk/integ-runner@^2.186.0", "@aws-cdk/integ-runner@^2.186.11": version "2.186.11" resolved "https://registry.npmjs.org/@aws-cdk/integ-runner/-/integ-runner-2.186.11.tgz#1174047d4227bde08a9d411310273b63d502bce6" integrity sha512-dfp1/MZqhP2m3GLnkap/rMkLUdew5XLFNIlTkB5v+Ntdqj4OEiwmcI0diSVS2kmI5em3FOfJ70n0GE9xJatDVA== @@ -5354,6 +5346,13 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" +aws-cdk@2.1007.0: + version "2.1007.0" + resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1007.0.tgz#cdeca2bd3a4a628c73c9dab3ac37f29d3f63b223" + integrity sha512-/UOYOTGWUm+pP9qxg03tID5tL6euC+pb+xo0RBue+xhnUWwj/Bbsw6DbqbpOPMrNzTUxmM723/uMEQmM6S26dw== + optionalDependencies: + fsevents "2.3.2" + aws-cdk@2.1017.1: version "2.1017.1" resolved "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1017.1.tgz#3091e8f295c3fda397f3e691f5ffad8ad4be5d96" From 013e1ce0dfe2b51d917817bb26ceed2ee36a446e Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 4 Jun 2025 11:51:45 -0400 Subject: [PATCH 37/39] fix(bedrockl2): removed integ test --- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 - ...aultTestDeployAssertE2AFA81B.template.json | 36 - ...aws-cdk-bedrock-action-group-1.assets.json | 20 - ...s-cdk-bedrock-action-group-1.template.json | 302 ----- .../integ.action-group.js.snapshot/cdk.out | 1 - .../integ.action-group.js.snapshot/integ.json | 13 - .../manifest.json | 278 ---- .../integ.action-group.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert1DDDDC57.assets.json | 20 - ...aultTestDeployAssert1DDDDC57.template.json | 36 - .../schema/s3-api-schema.json | 33 - .../index.js | 1 - .../index.py | 388 ------ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 - ...a1c3a55395746c48b28c003b08bc1d08688f3e.zip | 3 - .../aws-cdk-bedrock-api-schema-1.assets.json | 90 -- ...aws-cdk-bedrock-api-schema-1.template.json | 1141 ----------------- .../integ.api-schema.js.snapshot/cdk.out | 1 - .../integ.api-schema.js.snapshot/integ.json | 13 - .../manifest.json | 772 ----------- .../integ.api-schema.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert5AD90360.assets.json | 20 - ...aultTestDeployAssert5AD90360.template.json | 36 - .../aws-cdk-bedrock-memory-1.assets.json | 20 - .../aws-cdk-bedrock-memory-1.template.json | 584 --------- .../agents/integ.memory.js.snapshot/cdk.out | 1 - .../integ.memory.js.snapshot/integ.json | 13 - .../integ.memory.js.snapshot/manifest.json | 448 ------- .../agents/integ.memory.js.snapshot/tree.json | 1 - ...efaultTestDeployAssertACFAFF30.assets.json | 20 - ...aultTestDeployAssertACFAFF30.template.json | 36 - ...ws-cdk-bedrock-orchestration-1.assets.json | 20 - ...-cdk-bedrock-orchestration-1.template.json | 301 ----- .../integ.orchestration.js.snapshot/cdk.out | 1 - .../integ.json | 13 - .../manifest.json | 278 ---- .../integ.orchestration.js.snapshot/tree.json | 1 - ...efaultTestDeployAssert7D38F1F4.assets.json | 20 - ...aultTestDeployAssert7D38F1F4.template.json | 36 - ...-cdk-bedrock-prompt-override-1.assets.json | 20 - ...dk-bedrock-prompt-override-1.template.json | 701 ---------- .../integ.prompt-override.js.snapshot/cdk.out | 1 - .../integ.json | 13 - .../manifest.json | 506 -------- .../tree.json | 1 - 45 files changed, 6281 deletions(-) delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json delete mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json deleted file mode 100644 index aa619c2ef0040..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", - "source": { - "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json deleted file mode 100644 index 527016654903f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2": { - "displayName": "aws-cdk-bedrock-action-group-1 Template", - "source": { - "path": "aws-cdk-bedrock-action-group-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json deleted file mode 100644 index ec4a3201520a7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "Resources": { - "ActionGroupFunctionServiceRole77660D62": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ActionGroupFunctionFE14D1CB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ActionGroupFunctionServiceRole77660D62", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ActionGroupFunctionServiceRole77660D62" - ] - }, - "ActionGroupFunctionLogGroup05A58C56": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "ActionGroupFunctionFE14D1CB" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "MyAgentRoleE8318EBB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" - } - }, - "MyAgentRoleDefaultPolicy30DBC7AC": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", - "Roles": [ - { - "Ref": "MyAgentRoleE8318EBB" - } - ] - } - }, - "MyAgent039CC8B3": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "ENABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "ActionGroupFunctionFE14D1CB", - "Arn" - ] - } - }, - "ActionGroupName": "CustomActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" - }, - "Description": "A custom action group for testing", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "test-action-group-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "MyAgentRoleE8318EBB", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "MyAgentRoleDefaultPolicy30DBC7AC" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json deleted file mode 100644 index 99aecebe78b1c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockActionGroup/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-action-group-1" - ], - "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", - "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json deleted file mode 100644 index d3efc70dc8865..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-action-group-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-action-group-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-action-group-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-action-group-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/0d3b77b8dd648654f90d4fd47af9f1f6264effb635b7de401378aeace377e3d2.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-action-group-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionServiceRole77660D62" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionFE14D1CB" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionLogGroup05A58C56" - } - ], - "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ - { - "type": "aws:cdk:logicalId", - "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleE8318EBB" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgentRoleDefaultPolicy30DBC7AC" - } - ], - "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "MyAgent039CC8B3" - } - ], - "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-action-group-1" - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" - ], - "metadata": { - "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json deleted file mode 100644 index c924b94139fee..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ActionGroupFunctionFE14D1CB"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json deleted file mode 100644 index 686fe01004943..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", - "source": { - "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json deleted file mode 100644 index a9d7497c0610b..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "S3 API Schema", - "version": "1.0.0" - }, - "paths": { - "/s3hello": { - "get": { - "operationId": "s3HelloWorld", - "summary": "Say hello from S3", - "description": "Returns a greeting message from S3-stored schema", - "responses": { - "200": { - "description": "Successful response", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "message": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js deleted file mode 100644 index 1002ba018e9fb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py deleted file mode 100644 index aeb2132fc67bb..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py +++ /dev/null @@ -1,388 +0,0 @@ -import contextlib -import json -import logging -import os -import shutil -import subprocess -import tempfile -import urllib.parse -from urllib.request import Request, urlopen -from uuid import uuid4 -from zipfile import ZipFile - -import boto3 - -logger = logging.getLogger() -logger.setLevel(logging.INFO) - -cloudfront = boto3.client('cloudfront') -s3 = boto3.client('s3') - -CFN_SUCCESS = "SUCCESS" -CFN_FAILED = "FAILED" -ENV_KEY_MOUNT_PATH = "MOUNT_PATH" -ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" - -AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" -CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" - -os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) - -def handler(event, context): - - def cfn_error(message=None): - if message: - logger.error("| cfn_error: %s" % message.encode()) - cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) - - - try: - # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper - # with the response CloudFormation sees from this Custom Resource execution. - logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) - - # cloudformation request type (create/update/delete) - request_type = event['RequestType'] - - # extract resource properties - props = event['ResourceProperties'] - old_props = event.get('OldResourceProperties', {}) - physical_id = event.get('PhysicalResourceId', None) - - try: - source_bucket_names = props['SourceBucketNames'] - source_object_keys = props['SourceObjectKeys'] - source_markers = props.get('SourceMarkers', None) - source_markers_config = props.get('SourceMarkersConfig', None) - dest_bucket_name = props['DestinationBucketName'] - dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') - extract = props.get('Extract', 'true') == 'true' - retain_on_delete = props.get('RetainOnDelete', "true") == "true" - distribution_id = props.get('DistributionId', '') - user_metadata = props.get('UserMetadata', {}) - system_metadata = props.get('SystemMetadata', {}) - prune = props.get('Prune', 'true').lower() == 'true' - exclude = props.get('Exclude', []) - include = props.get('Include', []) - sign_content = props.get('SignContent', 'false').lower() == 'true' - output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' - - # backwards compatibility - if "SourceMarkers" is not specified, - # assume all sources have an empty market map - if source_markers is None: - source_markers = [{} for i in range(len(source_bucket_names))] - if source_markers_config is None: - source_markers_config = [{} for i in range(len(source_bucket_names))] - - default_distribution_path = dest_bucket_prefix - if not default_distribution_path.endswith("/"): - default_distribution_path += "/" - if not default_distribution_path.startswith("/"): - default_distribution_path = "/" + default_distribution_path - default_distribution_path += "*" - - distribution_paths = props.get('DistributionPaths', [default_distribution_path]) - except KeyError as e: - cfn_error("missing request resource property %s. props: %s" % (str(e), props)) - return - - # configure aws cli options after resetting back to the defaults for each request - if os.path.exists(AWS_CLI_CONFIG_FILE): - os.remove(AWS_CLI_CONFIG_FILE) - if sign_content: - aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") - - # treat "/" as if no prefix was specified - if dest_bucket_prefix == "/": - dest_bucket_prefix = "" - - s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) - s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) - old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) - - - # obviously this is not - if old_s3_dest == "s3:///": - old_s3_dest = None - - logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) - logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) - - # if we are creating a new resource, allocate a physical id for it - # otherwise, we expect physical id to be relayed by cloudformation - if request_type == "Create": - physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) - else: - if not physical_id: - cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) - return - - # delete or create/update (only if "retain_on_delete" is false) - if request_type == "Delete" and not retain_on_delete: - if not bucket_owned(dest_bucket_name, dest_bucket_prefix): - aws_command("s3", "rm", s3_dest, "--recursive") - - # if we are updating without retention and the destination changed, delete first - if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: - if not old_s3_dest: - logger.warn("cannot delete old resource without old resource properties") - return - - aws_command("s3", "rm", old_s3_dest, "--recursive") - - if request_type == "Update" or request_type == "Create": - s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) - - if distribution_id: - cloudfront_invalidate(distribution_id, distribution_paths) - - cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ - # Passing through the ARN sequences dependencees on the deployment - 'DestinationBucketArn': props.get('DestinationBucketArn'), - **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) - }) - except KeyError as e: - cfn_error("invalid request. Missing key %s" % str(e)) - except Exception as e: - logger.exception(e) - cfn_error(str(e)) - -#--------------------------------------------------------------------------------------------------- -# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities -def sanitize_message(message): - if not message: - return message - - # Sanitize the message to prevent log injection and HTTP response splitting - sanitized_message = message.replace('\n', '').replace('\r', '') - - # Encode the message to handle special characters - encoded_message = urllib.parse.quote(sanitized_message) - - return encoded_message - -#--------------------------------------------------------------------------------------------------- -# populate all files from s3_source_zips to a destination bucket -def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): - # list lengths are equal - if len(s3_source_zips) != len(source_markers): - raise Exception("'source_markers' and 's3_source_zips' must be the same length") - - # create a temporary working directory in /tmp or if enabled an attached efs volume - if ENV_KEY_MOUNT_PATH in os.environ: - workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) - os.mkdir(workdir) - else: - workdir = tempfile.mkdtemp() - - logger.info("| workdir: %s" % workdir) - - # create a directory into which we extract the contents of the zip file - contents_dir=os.path.join(workdir, 'contents') - os.mkdir(contents_dir) - - try: - # download the archive from the source and extract to "contents" - for i in range(len(s3_source_zips)): - s3_source_zip = s3_source_zips[i] - markers = source_markers[i] - markers_config = source_markers_config[i] - - if extract: - archive=os.path.join(workdir, str(uuid4())) - logger.info("archive: %s" % archive) - aws_command("s3", "cp", s3_source_zip, archive) - logger.info("| extracting archive to: %s\n" % contents_dir) - logger.info("| markers: %s" % markers) - extract_and_replace_markers(archive, contents_dir, markers, markers_config) - else: - logger.info("| copying archive to: %s\n" % contents_dir) - aws_command("s3", "cp", s3_source_zip, contents_dir) - - # sync from "contents" to destination - - s3_command = ["s3", "sync"] - - if prune: - s3_command.append("--delete") - - if exclude: - for filter in exclude: - s3_command.extend(["--exclude", filter]) - - if include: - for filter in include: - s3_command.extend(["--include", filter]) - - s3_command.extend([contents_dir, s3_dest]) - s3_command.extend(create_metadata_args(user_metadata, system_metadata)) - aws_command(*s3_command) - finally: - if not os.getenv(ENV_KEY_SKIP_CLEANUP): - shutil.rmtree(workdir) - -#--------------------------------------------------------------------------------------------------- -# invalidate files in the CloudFront distribution edge caches -def cloudfront_invalidate(distribution_id, distribution_paths): - invalidation_resp = cloudfront.create_invalidation( - DistributionId=distribution_id, - InvalidationBatch={ - 'Paths': { - 'Quantity': len(distribution_paths), - 'Items': distribution_paths - }, - 'CallerReference': str(uuid4()), - }) - # by default, will wait up to 10 minutes - cloudfront.get_waiter('invalidation_completed').wait( - DistributionId=distribution_id, - Id=invalidation_resp['Invalidation']['Id']) - -#--------------------------------------------------------------------------------------------------- -# set metadata -def create_metadata_args(raw_user_metadata, raw_system_metadata): - if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: - return [] - - format_system_metadata_key = lambda k: k.lower() - format_user_metadata_key = lambda k: k.lower() - - system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } - user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } - - flatten = lambda l: [item for sublist in l for item in sublist] - system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) - user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] - - return system_args + user_args + ["--metadata-directive", "REPLACE"] - -#--------------------------------------------------------------------------------------------------- -# executes an "aws" cli command -def aws_command(*args): - aws="/opt/awscli/aws" # from AwsCliLayer - logger.info("| aws %s" % ' '.join(args)) - subprocess.check_call([aws] + list(args)) - -#--------------------------------------------------------------------------------------------------- -# sends a response to cloudformation -def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): - - responseUrl = event['ResponseURL'] - - responseBody = {} - responseBody['Status'] = responseStatus - responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) - responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name - responseBody['StackId'] = event['StackId'] - responseBody['RequestId'] = event['RequestId'] - responseBody['LogicalResourceId'] = event['LogicalResourceId'] - responseBody['NoEcho'] = noEcho - responseBody['Data'] = responseData - - body = json.dumps(responseBody) - logger.info("| response body:\n" + body) - - headers = { - 'content-type' : '', - 'content-length' : str(len(body)) - } - - try: - request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) - with contextlib.closing(urlopen(request)) as response: - logger.info("| status code: " + response.reason) - except Exception as e: - logger.error("| unable to send response to CloudFormation") - logger.exception(e) - - -#--------------------------------------------------------------------------------------------------- -# check if bucket is owned by a custom resource -# if it is then we don't want to delete content -def bucket_owned(bucketName, keyPrefix): - tag = CUSTOM_RESOURCE_OWNER_TAG - if keyPrefix != "": - tag = tag + ':' + keyPrefix - try: - request = s3.get_bucket_tagging( - Bucket=bucketName, - ) - return any((x["Key"].startswith(tag)) for x in request["TagSet"]) - except Exception as e: - logger.info("| error getting tags from bucket") - logger.exception(e) - return False - -# extract archive and replace markers in output files -def extract_and_replace_markers(archive, contents_dir, markers, markers_config): - with ZipFile(archive, "r") as zip: - zip.extractall(contents_dir) - - # replace markers for this source - for file in zip.namelist(): - file_path = os.path.join(contents_dir, file) - if os.path.isdir(file_path): continue - replace_markers(file_path, markers, markers_config) - -def prepare_json_safe_markers(markers): - """Pre-process markers to ensure JSON-safe values""" - safe_markers = {} - for key, value in markers.items(): - # Serialize the value as JSON to handle escaping if the value is a string - serialized = json.dumps(value) - if serialized.startswith('"') and serialized.endswith('"'): - json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes - else: - json_safe_value = serialized - safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') - return safe_markers - -def replace_markers(filename, markers, markers_config): - """Replace markers in a file, with special handling for JSON files.""" - # if there are no markers, skip - if not markers: - return - - outfile = filename + '.new' - json_escape = markers_config.get('jsonEscape', 'false').lower() - if json_escape == 'true': - replace_tokens = prepare_json_safe_markers(markers) - else: - replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) - - # Handle content with line-by-line binary replacement - with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: - # Process line by line to handle large files - for line in fi: - for token, replacement in replace_tokens.items(): - line = line.replace(token, replacement) - fo.write(line) - - # Delete the original file and rename the new one to the original - os.remove(filename) - os.rename(outfile, filename) - -def replace_markers_in_json(json_object, replace_tokens): - """Replace markers in JSON content with proper escaping.""" - try: - def replace_in_structure(obj): - if isinstance(obj, str): - # Convert string to bytes for consistent replacement - result = obj.encode('utf-8') - for token, replacement in replace_tokens.items(): - result = result.replace(token, replacement) - # Convert back to string - return result.decode('utf-8') - elif isinstance(obj, dict): - return {k: replace_in_structure(v) for k, v in obj.items()} - elif isinstance(obj, list): - return [replace_in_structure(item) for item in obj] - return obj - - # Process the whole structure - processed = replace_in_structure(json_object) - return json.dumps(processed) - except Exception as e: - logger.error(f'Error processing JSON: {e}') - logger.exception(e) - return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml deleted file mode 100644 index 4accd4cadb267..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.3 -info: - title: Asset API Schema - version: 1.0.0 -paths: - /asset: - get: - operationId: assetHelloWorld - summary: Say hello from asset - description: Returns a greeting message from asset-stored schema - responses: - '200': - description: Successful response - content: - application/json: - schema: - type: object - properties: - message: - type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip deleted file mode 100644 index 42b96d8fc1b3c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ffc63a5b65bd5c8f0e3819f5c9f3b9f7335f35f35fac6ce8829606a6dc52ff0b -size 19940332 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json deleted file mode 100644 index 131e4a7bb4295..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { - "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", - "source": { - "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e": { - "displayName": "DeploySchema/AwsCliLayer/Code", - "source": { - "path": "asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { - "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", - "source": { - "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { - "displayName": "DeploySchema/Asset1", - "source": { - "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", - "packaging": "zip" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { - "displayName": "Schema", - "source": { - "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - }, - "a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb": { - "displayName": "aws-cdk-bedrock-api-schema-1 Template", - "source": { - "path": "aws-cdk-bedrock-api-schema-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json deleted file mode 100644 index 3565a25933ec3..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json +++ /dev/null @@ -1,1141 +0,0 @@ -{ - "Resources": { - "AssetActionGroupFunctionServiceRoleC53BA920": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "AssetActionGroupFunction98EC70AB": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "AssetActionGroupFunctionServiceRoleC53BA920", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "AssetActionGroupFunctionServiceRoleC53BA920" - ] - }, - "AssetActionGroupFunctionLogGroup3638096F": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "AssetActionGroupFunction98EC70AB" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "InlineActionGroupFunctionServiceRole5543D9A3": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "InlineActionGroupFunction566CD00A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "InlineActionGroupFunctionServiceRole5543D9A3", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "InlineActionGroupFunctionServiceRole5543D9A3" - ] - }, - "InlineActionGroupFunctionLogGroup58BAB9BB": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "InlineActionGroupFunction566CD00A" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "S3ActionGroupFunctionServiceRole7E4C5A58": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "S3ActionGroupFunctionA4648C25": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionServiceRole7E4C5A58", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "S3ActionGroupFunctionServiceRole7E4C5A58" - ] - }, - "S3ActionGroupFunctionLogGroup79BCEE92": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "S3ActionGroupFunctionA4648C25" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "SchemaBucket79EE2269": { - "Type": "AWS::S3::Bucket", - "Properties": { - "Tags": [ - { - "Key": "aws-cdk:auto-delete-objects", - "Value": "true" - }, - { - "Key": "aws-cdk:cr-owned:911f5017", - "Value": "true" - } - ] - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "SchemaBucketPolicy557840E2": { - "Type": "AWS::S3::BucketPolicy", - "Properties": { - "Bucket": { - "Ref": "SchemaBucket79EE2269" - }, - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:List*", - "s3:PutBucketPolicy" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - } - }, - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - } - } - }, - "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { - "Type": "Custom::S3AutoDeleteObjects", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", - "Arn" - ] - }, - "BucketName": { - "Ref": "SchemaBucket79EE2269" - } - }, - "DependsOn": [ - "SchemaBucketPolicy557840E2" - ], - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ] - }, - "ManagedPolicyArns": [ - { - "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - } - ] - } - }, - "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" - }, - "Timeout": 900, - "MemorySize": 128, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", - "Arn" - ] - }, - "Runtime": { - "Fn::FindInMap": [ - "LatestNodeRuntimeMap", - { - "Ref": "AWS::Region" - }, - "value" - ] - }, - "Description": { - "Fn::Join": [ - "", - [ - "Lambda function for auto-deleting objects in ", - { - "Ref": "SchemaBucket79EE2269" - }, - " S3 bucket." - ] - ] - } - }, - "DependsOn": [ - "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - ] - }, - "DeploySchemaAwsCliLayerD0D0BA6E": { - "Type": "AWS::Lambda::LayerVersion", - "Properties": { - "Content": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip" - }, - "Description": "/opt/awscli/aws" - } - }, - "DeploySchemaCustomResource277E9836": { - "Type": "Custom::CDKBucketDeployment", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", - "Arn" - ] - }, - "SourceBucketNames": [ - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ], - "SourceObjectKeys": [ - "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" - ], - "SourceMarkers": [ - {} - ], - "DestinationBucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "Prune": true, - "OutputObjectKeys": true - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - } - ] - }, - { - "Action": [ - "s3:Abort*", - "s3:DeleteObject*", - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*", - "s3:PutObject", - "s3:PutObjectLegalHold", - "s3:PutObjectRetention", - "s3:PutObjectTagging", - "s3:PutObjectVersionTagging" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "SchemaBucket79EE2269", - "Arn" - ] - }, - "/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "Roles": [ - { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ] - } - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" - }, - "Environment": { - "Variables": { - "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" - } - }, - "Handler": "index.handler", - "Layers": [ - { - "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "Role": { - "Fn::GetAtt": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", - "Arn" - ] - }, - "Runtime": "python3.11", - "Timeout": 900 - }, - "DependsOn": [ - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - ] - }, - "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CLogGroup817B64E9": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "ApiSchemaAgentRole636AC572": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - }, - ":*" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "s3:GetBucket*", - "s3:GetObject*", - "s3:List*" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - } - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - }, - "/schema/s3-api-schema.json" - ] - ] - }, - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":s3:::", - { - "Ref": "SchemaBucket79EE2269" - } - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "Roles": [ - { - "Ref": "ApiSchemaAgentRole636AC572" - } - ] - }, - "DependsOn": [ - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - }, - "ApiSchemaAgent8E965D9C": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "AssetActionGroupFunction98EC70AB", - "Arn" - ] - } - }, - "ActionGroupName": "AssetApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" - }, - "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" - } - }, - "Description": "An action group using a local asset API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "InlineActionGroupFunction566CD00A", - "Arn" - ] - } - }, - "ActionGroupName": "InlineApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group using an inline API schema", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "S3ActionGroupFunctionA4648C25", - "Arn" - ] - } - }, - "ActionGroupName": "S3ApiSchemaActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "S3": { - "S3BucketName": { - "Ref": "SchemaBucket79EE2269" - }, - "S3ObjectKey": "schema/s3-api-schema.json" - } - }, - "Description": "An action group using an S3-based API schema", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "api-schema-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "ApiSchemaAgentRole636AC572", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "ApiSchemaAgentRoleDefaultPolicy343EA6FE", - "DeploySchemaAwsCliLayerD0D0BA6E", - "DeploySchemaCustomResource277E9836" - ] - } - }, - "Mappings": { - "LatestNodeRuntimeMap": { - "af-south-1": { - "value": "nodejs22.x" - }, - "ap-east-1": { - "value": "nodejs22.x" - }, - "ap-east-2": { - "value": "nodejs22.x" - }, - "ap-northeast-1": { - "value": "nodejs22.x" - }, - "ap-northeast-2": { - "value": "nodejs22.x" - }, - "ap-northeast-3": { - "value": "nodejs22.x" - }, - "ap-south-1": { - "value": "nodejs22.x" - }, - "ap-south-2": { - "value": "nodejs22.x" - }, - "ap-southeast-1": { - "value": "nodejs22.x" - }, - "ap-southeast-2": { - "value": "nodejs22.x" - }, - "ap-southeast-3": { - "value": "nodejs22.x" - }, - "ap-southeast-4": { - "value": "nodejs22.x" - }, - "ap-southeast-5": { - "value": "nodejs22.x" - }, - "ap-southeast-7": { - "value": "nodejs22.x" - }, - "ca-central-1": { - "value": "nodejs22.x" - }, - "ca-west-1": { - "value": "nodejs22.x" - }, - "cn-north-1": { - "value": "nodejs22.x" - }, - "cn-northwest-1": { - "value": "nodejs22.x" - }, - "eu-central-1": { - "value": "nodejs22.x" - }, - "eu-central-2": { - "value": "nodejs22.x" - }, - "eu-isoe-west-1": { - "value": "nodejs18.x" - }, - "eu-north-1": { - "value": "nodejs22.x" - }, - "eu-south-1": { - "value": "nodejs22.x" - }, - "eu-south-2": { - "value": "nodejs22.x" - }, - "eu-west-1": { - "value": "nodejs22.x" - }, - "eu-west-2": { - "value": "nodejs22.x" - }, - "eu-west-3": { - "value": "nodejs22.x" - }, - "il-central-1": { - "value": "nodejs22.x" - }, - "me-central-1": { - "value": "nodejs22.x" - }, - "me-south-1": { - "value": "nodejs22.x" - }, - "mx-central-1": { - "value": "nodejs22.x" - }, - "sa-east-1": { - "value": "nodejs22.x" - }, - "us-east-1": { - "value": "nodejs22.x" - }, - "us-east-2": { - "value": "nodejs22.x" - }, - "us-gov-east-1": { - "value": "nodejs22.x" - }, - "us-gov-west-1": { - "value": "nodejs22.x" - }, - "us-iso-east-1": { - "value": "nodejs18.x" - }, - "us-iso-west-1": { - "value": "nodejs18.x" - }, - "us-isob-east-1": { - "value": "nodejs18.x" - }, - "us-isob-west-1": { - "value": "nodejs18.x" - }, - "us-west-1": { - "value": "nodejs22.x" - }, - "us-west-2": { - "value": "nodejs22.x" - } - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json deleted file mode 100644 index d600c50c982b6..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockApiSchema/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-api-schema-1" - ], - "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", - "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json deleted file mode 100644 index 9720538d44078..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json +++ /dev/null @@ -1,772 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-api-schema-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-api-schema-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-api-schema-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/a5c940a2e55e75ee71a149e38a22caa90a3c1629af07b54edae0ae30e3670fdb.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-api-schema-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionServiceRoleC53BA920" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunction98EC70AB" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionLogGroup3638096F" - } - ], - "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionServiceRole5543D9A3" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunction566CD00A" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionLogGroup58BAB9BB" - } - ], - "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionServiceRole7E4C5A58" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionA4648C25" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionLogGroup79BCEE92" - } - ], - "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ - { - "type": "aws:cdk:logicalId", - "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "removalPolicy": "destroy", - "autoDeleteObjects": true - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucket79EE2269" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "bucket": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketPolicy557840E2" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" - } - ], - "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ - { - "type": "aws:cdk:logicalId", - "data": "LatestNodeRuntimeMap" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ - { - "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", - "data": true - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ - { - "type": "aws:cdk:analytics:construct", - "data": {} - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaAwsCliLayerD0D0BA6E" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "uuid": "*", - "layers": [ - "*" - ], - "environment": "*", - "lambdaPurpose": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - true - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addMetadata": [ - "*", - "*" - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ - { - "type": "aws:cdk:logicalId", - "data": "DeploySchemaCustomResource277E9836" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "layers": [ - "*" - ], - "environment": "*", - "timeout": "*", - "role": "*", - "memorySize": "*", - "ephemeralStorageSize": "*", - "vpc": "*", - "vpcSubnets": "*", - "filesystem": "*", - "logGroup": "*", - "code": "*", - "handler": "*", - "runtime": "*" - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addEnvironment": [ - "*", - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addLayers": [ - "*" - ] - } - }, - { - "type": "aws:cdk:is-custom-resource-handler-singleton", - "data": true - }, - { - "type": "aws:cdk:is-custom-resource-handler-runtime-family", - "data": 2 - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CLogGroup817B64E9" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRole636AC572" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" - } - ], - "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ApiSchemaAgent8E965D9C" - } - ], - "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-api-schema-1" - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" - ], - "metadata": { - "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json deleted file mode 100644 index 972274b5b66d5..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"AssetActionGroupFunction98EC70AB"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"InlineActionGroupFunction566CD00A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"S3ActionGroupFunctionA4648C25"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"},"children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip"},"description":"/opt/awscli/aws"}}}}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536"}]]},"retentionInDays":731}}}}}}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}}}}}}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json deleted file mode 100644 index 1a10110ba1360..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", - "source": { - "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json deleted file mode 100644 index 11c8a8190c50a..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2": { - "displayName": "aws-cdk-bedrock-memory-1 Template", - "source": { - "path": "aws-cdk-bedrock-memory-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json deleted file mode 100644 index 9ee246acddd0e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json +++ /dev/null @@ -1,584 +0,0 @@ -{ - "Resources": { - "DefaultMemoryFunctionServiceRoleD8C5CDAF": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "DefaultMemoryFunctionAC6D5374": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "DefaultMemoryFunctionServiceRoleD8C5CDAF" - ] - }, - "DefaultMemoryFunctionLogGroupD9F7BD3F": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "DefaultMemoryFunctionAC6D5374" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomMemoryFunctionServiceRoleA64B0AD5": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomMemoryFunctionB4B5CB9A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomMemoryFunctionServiceRoleA64B0AD5", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomMemoryFunctionServiceRoleA64B0AD5" - ] - }, - "CustomMemoryFunctionLogGroup61F2359A": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "CustomMemoryFunctionB4B5CB9A" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "AgentWithDefaultMemoryRole0AEE1FD1": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" - } - }, - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", - "Roles": [ - { - "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ] - } - }, - "AgentWithDefaultMemoryA1F31830": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "DefaultMemoryFunctionAC6D5374", - "Arn" - ] - } - }, - "ActionGroupName": "DefaultMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing default memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-default-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithDefaultMemoryRole0AEE1FD1", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 20 - }, - "StorageDays": 30 - }, - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - ] - }, - "AgentWithCustomMemoryRole3B7BD09F": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" - } - }, - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", - "Roles": [ - { - "Ref": "AgentWithCustomMemoryRole3B7BD09F" - } - ] - } - }, - "AgentWithCustomMemoryD0BD498B": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomMemoryFunctionB4B5CB9A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomMemoryActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom memory configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-memory", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomMemoryRole3B7BD09F", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", - "MemoryConfiguration": { - "EnabledMemoryTypes": [ - "SESSION_SUMMARY" - ], - "SessionSummaryConfiguration": { - "MaxRecentSessions": 5 - }, - "StorageDays": 15 - }, - "OrchestrationType": "DEFAULT", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json deleted file mode 100644 index d4ab305a0e573..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockMemory/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-memory-1" - ], - "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", - "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json deleted file mode 100644 index 9465847498a30..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json +++ /dev/null @@ -1,448 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-memory-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-memory-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-memory-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-memory-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/c35338e759cb7b167163ce93f5cf7ab7ebe6f12001444ffc3672083bd8245ee2.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-memory-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionAC6D5374" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionLogGroupD9F7BD3F" - } - ], - "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ - { - "type": "aws:cdk:logicalId", - "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionServiceRoleA64B0AD5" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionB4B5CB9A" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionLogGroup61F2359A" - } - ], - "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRole0AEE1FD1" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithDefaultMemoryA1F31830" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRole3B7BD09F" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" - } - ], - "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomMemoryD0BD498B" - } - ], - "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-memory-1" - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockMemoryDefaultTestDeployAssert5AD90360": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" - ], - "metadata": { - "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockMemory/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json deleted file mode 100644 index 267627aa5b9f1..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"DefaultMemoryFunctionAC6D5374"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomMemoryFunctionB4B5CB9A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json deleted file mode 100644 index 8a135a7ec895c..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", - "source": { - "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json deleted file mode 100644 index 8cf2b0884e2d7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a": { - "displayName": "aws-cdk-bedrock-orchestration-1 Template", - "source": { - "path": "aws-cdk-bedrock-orchestration-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json deleted file mode 100644 index f3cca8729d5d6..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "Resources": { - "OrchestrationFunctionServiceRole12D0673A": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "OrchestrationFunction2F3851C6": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "OrchestrationFunctionServiceRole12D0673A", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "OrchestrationFunctionServiceRole12D0673A" - ] - }, - "OrchestrationFunctionLogGroup07F3FD44": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "OrchestrationFunction2F3851C6" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - }, - "SourceArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentDC6CC131", - "AgentArn" - ] - } - } - }, - "CustomOrchestrationAgentRole85710213": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" - } - }, - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", - "Roles": [ - { - "Ref": "CustomOrchestrationAgentRole85710213" - } - ] - } - }, - "CustomOrchestrationAgentDC6CC131": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "custom-orchestration-agent", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "CustomOrchestrationAgentRole85710213", - "Arn" - ] - }, - "AutoPrepare": false, - "CustomOrchestration": { - "Executor": { - "Lambda": { - "Fn::GetAtt": [ - "OrchestrationFunction2F3851C6", - "Arn" - ] - } - } - }, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", - "OrchestrationType": "CUSTOM_ORCHESTRATION", - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json deleted file mode 100644 index 6f18039793ab7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockOrchestration/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-orchestration-1" - ], - "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", - "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json deleted file mode 100644 index 0108c07c714c5..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-orchestration-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-orchestration-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-orchestration-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/13ef444cefc88a2e956fef2e4be4acc6d32b47ab3021352ff595ff7503f2621a.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-orchestration-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionServiceRole12D0673A" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunction2F3851C6" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionLogGroup07F3FD44" - } - ], - "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ - { - "type": "aws:cdk:logicalId", - "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRole85710213" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" - } - ], - "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomOrchestrationAgentDC6CC131" - } - ], - "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-orchestration-1" - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" - ], - "metadata": { - "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json deleted file mode 100644 index 8cccbee79c4ec..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"OrchestrationFunction2F3851C6"}]]},"retentionInDays":731}}}}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}}}}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json deleted file mode 100644 index ad7678636bede..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { - "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", - "source": { - "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json deleted file mode 100644 index ad9d0fb73d1dd..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json deleted file mode 100644 index 9975e7b362726..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "41.0.0", - "files": { - "842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333": { - "displayName": "aws-cdk-bedrock-prompt-override-1 Template", - "source": { - "path": "aws-cdk-bedrock-prompt-override-1.template.json", - "packaging": "file" - }, - "destinations": { - "current_account-current_region": { - "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", - "objectKey": "842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333.json", - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" - } - } - } - }, - "dockerImages": {} -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json deleted file mode 100644 index 2530f68f72bf7..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json +++ /dev/null @@ -1,701 +0,0 @@ -{ - "Resources": { - "PromptOverrideFunctionServiceRoleB1ACDEAD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "PromptOverrideFunctionD82AB437": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "PromptOverrideFunctionServiceRoleB1ACDEAD" - ] - }, - "PromptOverrideFunctionLogGroupB1001805": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "PromptOverrideFunctionD82AB437" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "CustomParserActionFunctionServiceRoleEE676A1C": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "CustomParserActionFunction3DAF0C7A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "CustomParserActionFunctionServiceRoleEE676A1C", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "CustomParserActionFunctionServiceRoleEE676A1C" - ] - }, - "CustomParserActionFunctionLogGroupD54EA446": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "CustomParserActionFunction3DAF0C7A" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "Action": "lambda:InvokeFunction", - "FunctionName": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - "Principal": "bedrock.amazonaws.com", - "SourceAccount": { - "Ref": "AWS::AccountId" - } - } - }, - "ParserFunctionServiceRole59DD83FB": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "ParserFunctionE8A187F2": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "ParserFunctionServiceRole59DD83FB", - "Arn" - ] - }, - "Runtime": "nodejs18.x" - }, - "DependsOn": [ - "ParserFunctionServiceRole59DD83FB" - ] - }, - "ParserFunctionLogGroup947036DC": { - "Type": "AWS::Logs::LogGroup", - "Properties": { - "LogGroupName": { - "Fn::Join": [ - "", - [ - "/aws/lambda/", - { - "Ref": "ParserFunctionE8A187F2" - } - ] - ] - }, - "RetentionInDays": 731 - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "AgentWithPromptOverrideRoleA0EB6013": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" - } - }, - "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", - "Roles": [ - { - "Ref": "AgentWithPromptOverrideRoleA0EB6013" - } - ] - } - }, - "AgentWithPromptOverride13B28AED": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "PromptOverrideFunctionD82AB437", - "Arn" - ] - } - }, - "ActionGroupName": "PromptOverrideActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing prompt override configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-prompt-override", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithPromptOverrideRoleA0EB6013", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "PromptOverrideConfiguration": { - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 2048, - "StopSequences": [], - "Temperature": 0.2, - "TopK": 250, - "TopP": 0.9 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0.1, - "TopK": 100, - "TopP": 0.95 - }, - "PromptCreationMode": "OVERRIDDEN", - "PromptState": "ENABLED", - "PromptType": "POST_PROCESSING" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - ] - }, - "AgentWithCustomParserRole29295FCD": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Condition": { - "StringEquals": { - "aws:SourceAccount": { - "Ref": "AWS::AccountId" - } - }, - "ArnLike": { - "aws:SourceArn": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":agent/*" - ] - ] - } - } - }, - "Effect": "Allow", - "Principal": { - "Service": "bedrock.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "RoleName": "agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" - } - }, - "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": "lambda:InvokeFunction", - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - }, - ":*" - ] - ] - } - ] - }, - { - "Action": [ - "bedrock:GetFoundationModel", - "bedrock:InvokeModel*" - ], - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - } - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", - "Roles": [ - { - "Ref": "AgentWithCustomParserRole29295FCD" - } - ] - } - }, - "AgentWithCustomParser73E443B8": { - "Type": "AWS::Bedrock::Agent", - "Properties": { - "ActionGroups": [ - { - "ActionGroupName": "UserInputAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.UserInput", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupName": "CodeInterpreterAction", - "ActionGroupState": "DISABLED", - "ParentActionGroupSignature": "AMAZON.CodeInterpreter", - "SkipResourceInUseCheckOnDelete": false - }, - { - "ActionGroupExecutor": { - "Lambda": { - "Fn::GetAtt": [ - "CustomParserActionFunction3DAF0C7A", - "Arn" - ] - } - }, - "ActionGroupName": "CustomParserActionGroup", - "ActionGroupState": "ENABLED", - "ApiSchema": { - "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" - }, - "Description": "An action group for testing custom parser configuration", - "SkipResourceInUseCheckOnDelete": false - } - ], - "AgentName": "agent-with-custom-parser", - "AgentResourceRoleArn": { - "Fn::GetAtt": [ - "AgentWithCustomParserRole29295FCD", - "Arn" - ] - }, - "AutoPrepare": false, - "FoundationModel": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":bedrock:", - { - "Ref": "AWS::Region" - }, - "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" - ] - ] - }, - "IdleSessionTTLInSeconds": 600, - "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", - "OrchestrationType": "DEFAULT", - "PromptOverrideConfiguration": { - "OverrideLambda": { - "Fn::GetAtt": [ - "ParserFunctionE8A187F2", - "Arn" - ] - }, - "PromptConfigurations": [ - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 2048, - "StopSequences": [], - "Temperature": 0.2, - "TopK": 250, - "TopP": 0.9 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "PRE_PROCESSING" - }, - { - "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", - "InferenceConfiguration": { - "MaximumLength": 1024, - "StopSequences": [], - "Temperature": 0.1, - "TopK": 100, - "TopP": 0.95 - }, - "ParserMode": "OVERRIDDEN", - "PromptCreationMode": "OVERRIDDEN", - "PromptType": "MEMORY_SUMMARIZATION" - } - ] - }, - "SkipResourceInUseCheckOnDelete": true - }, - "DependsOn": [ - "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - ] - } - }, - "Parameters": { - "BootstrapVersion": { - "Type": "AWS::SSM::Parameter::Value", - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" - } - }, - "Rules": { - "CheckBootstrapVersion": { - "Assertions": [ - { - "Assert": { - "Fn::Not": [ - { - "Fn::Contains": [ - [ - "1", - "2", - "3", - "4", - "5" - ], - { - "Ref": "BootstrapVersion" - } - ] - } - ] - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." - } - ] - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out deleted file mode 100644 index 188478b55560e..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out +++ /dev/null @@ -1 +0,0 @@ -{"version":"41.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json deleted file mode 100644 index ae9f15f1d6d0f..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "version": "41.0.0", - "testCases": { - "BedrockPromptOverride/DefaultTest": { - "stacks": [ - "aws-cdk-bedrock-prompt-override-1" - ], - "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", - "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" - } - }, - "minimumCliVersion": "2.1005.0" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json deleted file mode 100644 index f7f6ae4c3fc29..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json +++ /dev/null @@ -1,506 +0,0 @@ -{ - "version": "43.0.0", - "artifacts": { - "aws-cdk-bedrock-prompt-override-1.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "aws-cdk-bedrock-prompt-override-1.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "aws-cdk-bedrock-prompt-override-1": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/842cd91696a14485791485a2860d391519a0147353c86afefd4eeb551e511333.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "aws-cdk-bedrock-prompt-override-1.assets" - ], - "metadata": { - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionD82AB437" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionLogGroupB1001805" - } - ], - "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ - { - "type": "aws:cdk:logicalId", - "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionServiceRoleEE676A1C" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunction3DAF0C7A" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionLogGroupD54EA446" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ - { - "type": "aws:cdk:logicalId", - "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "runtime": "*", - "handler": "*", - "code": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - }, - "managedPolicies": [ - { - "managedPolicyArn": "*" - } - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionServiceRole59DD83FB" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionE8A187F2" - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "logGroupName": "*" - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "ParserFunctionLogGroup947036DC" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleA0EB6013" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithPromptOverride13B28AED" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ - { - "type": "aws:cdk:analytics:construct", - "data": { - "roleName": "*", - "assumedBy": { - "principalAccount": "*", - "assumeRoleAction": "*" - } - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachInlinePolicy": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addToPrincipalPolicy": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRole29295FCD" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ - { - "type": "aws:cdk:analytics:construct", - "data": "*" - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "attachToRole": [ - "*" - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - }, - { - "type": "aws:cdk:analytics:method", - "data": { - "addStatements": [ - {} - ] - } - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" - } - ], - "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ - { - "type": "aws:cdk:logicalId", - "data": "AgentWithCustomParser73E443B8" - } - ], - "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "aws-cdk-bedrock-prompt-override-1" - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { - "type": "cdk:asset-manifest", - "properties": { - "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { - "type": "aws:cloudformation:stack", - "environment": "aws://unknown-account/unknown-region", - "properties": { - "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", - "terminationProtection": false, - "validateOnSynth": false, - "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", - "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", - "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", - "requiresBootstrapStackVersion": 6, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", - "additionalDependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "lookupRole": { - "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", - "requiresBootstrapStackVersion": 8, - "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" - } - }, - "dependencies": [ - "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" - ], - "metadata": { - "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "BootstrapVersion" - } - ], - "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ - { - "type": "aws:cdk:logicalId", - "data": "CheckBootstrapVersion" - } - ] - }, - "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" - }, - "Tree": { - "type": "cdk:tree", - "properties": { - "file": "tree.json" - } - } - }, - "minimumCliVersion": "2.1016.1" -} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json deleted file mode 100644 index f42c91ee8e7bc..0000000000000 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"PromptOverrideFunctionD82AB437"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"CustomParserActionFunction3DAF0C7A"}]]},"retentionInDays":731}}}}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}}},"LogGroup":{"id":"LogGroup","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.LogGroup","version":"0.0.0","metadata":[{"logGroupName":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/LogGroup/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_logs.CfnLogGroup","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Logs::LogGroup","aws:cdk:cloudformation:props":{"logGroupName":{"Fn::Join":["",["/aws/lambda/",{"Ref":"ParserFunctionE8A187F2"}]]},"retentionInDays":731}}}}}}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file From 151a4d9899a5ae3892c576891e325d6a61595a8e Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Wed, 4 Jun 2025 12:46:13 -0400 Subject: [PATCH 38/39] fix(bedrockl2): added integ test back --- ...efaultTestDeployAssertE2AFA81B.assets.json | 20 + ...aultTestDeployAssertE2AFA81B.template.json | 36 + ...aws-cdk-bedrock-action-group-1.assets.json | 20 + ...s-cdk-bedrock-action-group-1.template.json | 283 +++++ .../integ.action-group.js.snapshot/cdk.out | 1 + .../integ.action-group.js.snapshot/integ.json | 13 + .../manifest.json | 264 ++++ .../integ.action-group.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert1DDDDC57.assets.json | 20 + ...aultTestDeployAssert1DDDDC57.template.json | 36 + .../schema/s3-api-schema.json | 33 + .../index.js | 1 + .../index.py | 388 ++++++ ...0509de03c96781054237fcbc52220fed232a0.yaml | 20 + ...a1c3a55395746c48b28c003b08bc1d08688f3e.zip | 3 + .../aws-cdk-bedrock-api-schema-1.assets.json | 90 ++ ...aws-cdk-bedrock-api-schema-1.template.json | 1065 +++++++++++++++++ .../integ.api-schema.js.snapshot/cdk.out | 1 + .../integ.api-schema.js.snapshot/integ.json | 13 + .../manifest.json | 716 +++++++++++ .../integ.api-schema.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert5AD90360.assets.json | 20 + ...aultTestDeployAssert5AD90360.template.json | 36 + .../aws-cdk-bedrock-memory-1.assets.json | 20 + .../aws-cdk-bedrock-memory-1.template.json | 546 +++++++++ .../agents/integ.memory.js.snapshot/cdk.out | 1 + .../integ.memory.js.snapshot/integ.json | 13 + .../integ.memory.js.snapshot/manifest.json | 420 +++++++ .../agents/integ.memory.js.snapshot/tree.json | 1 + ...efaultTestDeployAssertACFAFF30.assets.json | 20 + ...aultTestDeployAssertACFAFF30.template.json | 36 + ...ws-cdk-bedrock-orchestration-1.assets.json | 20 + ...-cdk-bedrock-orchestration-1.template.json | 282 +++++ .../integ.orchestration.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 264 ++++ .../integ.orchestration.js.snapshot/tree.json | 1 + ...efaultTestDeployAssert7D38F1F4.assets.json | 20 + ...aultTestDeployAssert7D38F1F4.template.json | 36 + ...-cdk-bedrock-prompt-override-1.assets.json | 20 + ...dk-bedrock-prompt-override-1.template.json | 644 ++++++++++ .../integ.prompt-override.js.snapshot/cdk.out | 1 + .../integ.json | 13 + .../manifest.json | 464 +++++++ .../tree.json | 1 + 45 files changed, 5918 insertions(+) create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json create mode 100644 packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json new file mode 100644 index 0000000000000..885ab4dd33d95 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B Template", + "source": { + "path": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json new file mode 100644 index 0000000000000..24d232f2db3d8 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de": { + "displayName": "aws-cdk-bedrock-action-group-1 Template", + "source": { + "path": "aws-cdk-bedrock-action-group-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json new file mode 100644 index 0000000000000..e9def5c443dd6 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/aws-cdk-bedrock-action-group-1.template.json @@ -0,0 +1,283 @@ +{ + "Resources": { + "ActionGroupFunctionServiceRole77660D62": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ActionGroupFunctionFE14D1CB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ActionGroupFunctionServiceRole77660D62", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ActionGroupFunctionServiceRole77660D62" + ] + }, + "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "MyAgentRoleE8318EBB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent" + } + }, + "MyAgentRoleDefaultPolicy30DBC7AC": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "MyAgentRoleDefaultPolicy30DBC7AC", + "Roles": [ + { + "Ref": "MyAgentRoleE8318EBB" + } + ] + } + }, + "MyAgent039CC8B3": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "ENABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "ActionGroupFunctionFE14D1CB", + "Arn" + ] + } + }, + "ActionGroupName": "CustomActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n" + }, + "Description": "A custom action group for testing", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "test-action-group-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "MyAgentRoleE8318EBB", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is a test instruction that must be at least 40 characters long to be valid", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "MyAgentRoleDefaultPolicy30DBC7AC" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json new file mode 100644 index 0000000000000..5a7d4e22c58be --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "BedrockActionGroup/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-action-group-1" + ], + "assertionStack": "BedrockActionGroup/DefaultTest/DeployAssert", + "assertionStackName": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B" + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json new file mode 100644 index 0000000000000..63f4c882dbb00 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "44.0.0", + "artifacts": { + "aws-cdk-bedrock-action-group-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-action-group-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-action-group-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-action-group-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/29d201f8af6439d216cfb9ba6b3eaf48b3f679dc9a03a6b09154f412a64839de.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-action-group-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionServiceRole77660D62" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionFE14D1CB" + } + ], + "/aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e": [ + { + "type": "aws:cdk:logicalId", + "data": "ActionGroupFunctionLambdaInvocationPolicyc855117c0e9b7e1e08A69654" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleE8318EBB" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgentRoleDefaultPolicy30DBC7AC" + } + ], + "/aws-cdk-bedrock-action-group-1/MyAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "MyAgent039CC8B3" + } + ], + "/aws-cdk-bedrock-action-group-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-action-group-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-action-group-1" + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockActionGroupDefaultTestDeployAssertE2AFA81B.assets" + ], + "metadata": { + "/BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockActionGroup/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json new file mode 100644 index 0000000000000..64d8d781695c3 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.action-group.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-action-group-1":{"id":"aws-cdk-bedrock-action-group-1","path":"aws-cdk-bedrock-action-group-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"ActionGroupFunction":{"id":"ActionGroupFunction","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ActionGroupFunctionServiceRole77660D62","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c855117c0e9b7e1e":{"id":"LambdaInvocationPolicy-c855117c0e9b7e1e","path":"aws-cdk-bedrock-action-group-1/ActionGroupFunction/LambdaInvocationPolicy-c855117c0e9b7e1e","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"MyAgent":{"id":"MyAgent","path":"aws-cdk-bedrock-action-group-1/MyAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockactiongroup1-myagent-319c695f-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"MyAgentRoleDefaultPolicy30DBC7AC","roles":[{"Ref":"MyAgentRoleE8318EBB"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-action-group-1/MyAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"ENABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["ActionGroupFunctionFE14D1CB","Arn"]}},"actionGroupName":"CustomActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Action Group API\n version: 1.0.0\npaths:\n /perform-action:\n post:\n operationId: performAction\n summary: Perform an action\n description: Perform an action with the specified parameters\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required:\n - action_type\n properties:\n action_type:\n type: string\n description: Type of action to perform\n parameters:\n type: object\n description: Additional parameters for the action\n responses:\n '200':\n description: Action performed successfully\n content:\n application/json:\n schema:\n type: object\n properties:\n success:\n type: boolean\n result:\n type: string\n details:\n type: object\n"},"description":"A custom action group for testing","skipResourceInUseCheckOnDelete":false}],"agentName":"test-action-group-agent","agentResourceRoleArn":{"Fn::GetAtt":["MyAgentRoleE8318EBB","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is a test instruction that must be at least 40 characters long to be valid","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-action-group-1/MyAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-action-group-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-action-group-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockActionGroup":{"id":"BedrockActionGroup","path":"BedrockActionGroup","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockActionGroup/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockActionGroup/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockActionGroup/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockActionGroup/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json new file mode 100644 index 0000000000000..b1a778eed5153 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57 Template", + "source": { + "path": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json new file mode 100644 index 0000000000000..a9d7497c0610b --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f/schema/s3-api-schema.json @@ -0,0 +1,33 @@ +{ + "openapi": "3.0.3", + "info": { + "title": "S3 API Schema", + "version": "1.0.0" + }, + "paths": { + "/s3hello": { + "get": { + "operationId": "s3HelloWorld", + "summary": "Say hello from S3", + "description": "Returns a greeting message from S3-stored schema", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js new file mode 100644 index 0000000000000..1002ba018e9fb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61/index.js @@ -0,0 +1 @@ +"use strict";var f=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},d=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of C(e))!P.call(t,s)&&s!==o&&i(t,s,{get:()=>e[s],enumerable:!(r=I(e,s))||r.enumerable});return t};var l=(t,e,o)=>(o=t!=null?f(w(t)):{},d(e||!t||!t.__esModule?i(o,"default",{value:t,enumerable:!0}):o,t)),B=t=>d(i({},"__esModule",{value:!0}),t);var q={};A(q,{autoDeleteHandler:()=>S,handler:()=>H});module.exports=B(q);var h=require("@aws-sdk/client-s3");var y=l(require("https")),m=l(require("url")),a={sendHttpRequest:D,log:T,includeStackTraces:!0,userHandlerIndex:"./index"},p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",L="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";function R(t){return async(e,o)=>{let r={...e,ResponseURL:"..."};if(a.log(JSON.stringify(r,void 0,2)),e.RequestType==="Delete"&&e.PhysicalResourceId===p){a.log("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{let s=await t(r,o),n=k(e,s);await u("SUCCESS",n)}catch(s){let n={...e,Reason:a.includeStackTraces?s.stack:s.message};n.PhysicalResourceId||(e.RequestType==="Create"?(a.log("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),n.PhysicalResourceId=p):a.log(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`)),await u("FAILED",n)}}}function k(t,e={}){let o=e.PhysicalResourceId??t.PhysicalResourceId??t.RequestId;if(t.RequestType==="Delete"&&o!==t.PhysicalResourceId)throw new Error(`DELETE: cannot change the physical resource ID from "${t.PhysicalResourceId}" to "${e.PhysicalResourceId}" during deletion`);return{...t,...e,PhysicalResourceId:o}}async function u(t,e){let o={Status:t,Reason:e.Reason??t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||L,LogicalResourceId:e.LogicalResourceId,NoEcho:e.NoEcho,Data:e.Data},r=m.parse(e.ResponseURL),s=`${r.protocol}//${r.hostname}/${r.pathname}?***`;a.log("submit response to cloudformation",s,o);let n=JSON.stringify(o),E={hostname:r.hostname,path:r.path,method:"PUT",headers:{"content-type":"","content-length":Buffer.byteLength(n,"utf8")}};await O({attempts:5,sleep:1e3},a.sendHttpRequest)(E,n)}async function D(t,e){return new Promise((o,r)=>{try{let s=y.request(t,n=>{n.resume(),!n.statusCode||n.statusCode>=400?r(new Error(`Unsuccessful HTTP response: ${n.statusCode}`)):o()});s.on("error",r),s.write(e),s.end()}catch(s){r(s)}})}function T(t,...e){console.log(t,...e)}function O(t,e){return async(...o)=>{let r=t.attempts,s=t.sleep;for(;;)try{return await e(...o)}catch(n){if(r--<=0)throw n;await b(Math.floor(Math.random()*s)),s*=2}}}async function b(t){return new Promise(e=>setTimeout(e,t))}var g="aws-cdk:auto-delete-objects",x=JSON.stringify({Version:"2012-10-17",Statement:[]}),c=new h.S3({}),H=R(S);async function S(t){switch(t.RequestType){case"Create":return;case"Update":return{PhysicalResourceId:(await F(t)).PhysicalResourceId};case"Delete":return N(t.ResourceProperties?.BucketName)}}async function F(t){let e=t,o=e.OldResourceProperties?.BucketName;return{PhysicalResourceId:e.ResourceProperties?.BucketName??o}}async function _(t){try{let e=(await c.getBucketPolicy({Bucket:t}))?.Policy??x,o=JSON.parse(e);o.Statement.push({Principal:"*",Effect:"Deny",Action:["s3:PutObject"],Resource:[`arn:aws:s3:::${t}/*`]}),await c.putBucketPolicy({Bucket:t,Policy:JSON.stringify(o)})}catch(e){if(e.name==="NoSuchBucket")throw e;console.log(`Could not set new object deny policy on bucket '${t}' prior to deletion.`)}}async function U(t){let e;do{e=await c.listObjectVersions({Bucket:t});let o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let r=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await c.deleteObjects({Bucket:t,Delete:{Objects:r}})}while(e?.IsTruncated)}async function N(t){if(!t)throw new Error("No BucketName was provided.");try{if(!await W(t)){console.log(`Bucket does not have '${g}' tag, skipping cleaning.`);return}await _(t),await U(t)}catch(e){if(e.name==="NoSuchBucket"){console.log(`Bucket '${t}' does not exist.`);return}throw e}}async function W(t){return(await c.getBucketTagging({Bucket:t})).TagSet?.some(o=>o.Key===g&&o.Value==="true")}0&&(module.exports={autoDeleteHandler,handler}); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py new file mode 100644 index 0000000000000..aeb2132fc67bb --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d/index.py @@ -0,0 +1,388 @@ +import contextlib +import json +import logging +import os +import shutil +import subprocess +import tempfile +import urllib.parse +from urllib.request import Request, urlopen +from uuid import uuid4 +from zipfile import ZipFile + +import boto3 + +logger = logging.getLogger() +logger.setLevel(logging.INFO) + +cloudfront = boto3.client('cloudfront') +s3 = boto3.client('s3') + +CFN_SUCCESS = "SUCCESS" +CFN_FAILED = "FAILED" +ENV_KEY_MOUNT_PATH = "MOUNT_PATH" +ENV_KEY_SKIP_CLEANUP = "SKIP_CLEANUP" + +AWS_CLI_CONFIG_FILE = "/tmp/aws_cli_config" +CUSTOM_RESOURCE_OWNER_TAG = "aws-cdk:cr-owned" + +os.putenv('AWS_CONFIG_FILE', AWS_CLI_CONFIG_FILE) + +def handler(event, context): + + def cfn_error(message=None): + if message: + logger.error("| cfn_error: %s" % message.encode()) + cfn_send(event, context, CFN_FAILED, reason=message, physicalResourceId=event.get('PhysicalResourceId', None)) + + + try: + # We are not logging ResponseURL as this is a pre-signed S3 URL, and could be used to tamper + # with the response CloudFormation sees from this Custom Resource execution. + logger.info({ key:value for (key, value) in event.items() if key != 'ResponseURL'}) + + # cloudformation request type (create/update/delete) + request_type = event['RequestType'] + + # extract resource properties + props = event['ResourceProperties'] + old_props = event.get('OldResourceProperties', {}) + physical_id = event.get('PhysicalResourceId', None) + + try: + source_bucket_names = props['SourceBucketNames'] + source_object_keys = props['SourceObjectKeys'] + source_markers = props.get('SourceMarkers', None) + source_markers_config = props.get('SourceMarkersConfig', None) + dest_bucket_name = props['DestinationBucketName'] + dest_bucket_prefix = props.get('DestinationBucketKeyPrefix', '') + extract = props.get('Extract', 'true') == 'true' + retain_on_delete = props.get('RetainOnDelete', "true") == "true" + distribution_id = props.get('DistributionId', '') + user_metadata = props.get('UserMetadata', {}) + system_metadata = props.get('SystemMetadata', {}) + prune = props.get('Prune', 'true').lower() == 'true' + exclude = props.get('Exclude', []) + include = props.get('Include', []) + sign_content = props.get('SignContent', 'false').lower() == 'true' + output_object_keys = props.get('OutputObjectKeys', 'true') == 'true' + + # backwards compatibility - if "SourceMarkers" is not specified, + # assume all sources have an empty market map + if source_markers is None: + source_markers = [{} for i in range(len(source_bucket_names))] + if source_markers_config is None: + source_markers_config = [{} for i in range(len(source_bucket_names))] + + default_distribution_path = dest_bucket_prefix + if not default_distribution_path.endswith("/"): + default_distribution_path += "/" + if not default_distribution_path.startswith("/"): + default_distribution_path = "/" + default_distribution_path + default_distribution_path += "*" + + distribution_paths = props.get('DistributionPaths', [default_distribution_path]) + except KeyError as e: + cfn_error("missing request resource property %s. props: %s" % (str(e), props)) + return + + # configure aws cli options after resetting back to the defaults for each request + if os.path.exists(AWS_CLI_CONFIG_FILE): + os.remove(AWS_CLI_CONFIG_FILE) + if sign_content: + aws_command("configure", "set", "default.s3.payload_signing_enabled", "true") + + # treat "/" as if no prefix was specified + if dest_bucket_prefix == "/": + dest_bucket_prefix = "" + + s3_source_zips = list(map(lambda name, key: "s3://%s/%s" % (name, key), source_bucket_names, source_object_keys)) + s3_dest = "s3://%s/%s" % (dest_bucket_name, dest_bucket_prefix) + old_s3_dest = "s3://%s/%s" % (old_props.get("DestinationBucketName", ""), old_props.get("DestinationBucketKeyPrefix", "")) + + + # obviously this is not + if old_s3_dest == "s3:///": + old_s3_dest = None + + logger.info("| s3_dest: %s" % sanitize_message(s3_dest)) + logger.info("| old_s3_dest: %s" % sanitize_message(old_s3_dest)) + + # if we are creating a new resource, allocate a physical id for it + # otherwise, we expect physical id to be relayed by cloudformation + if request_type == "Create": + physical_id = "aws.cdk.s3deployment.%s" % str(uuid4()) + else: + if not physical_id: + cfn_error("invalid request: request type is '%s' but 'PhysicalResourceId' is not defined" % request_type) + return + + # delete or create/update (only if "retain_on_delete" is false) + if request_type == "Delete" and not retain_on_delete: + if not bucket_owned(dest_bucket_name, dest_bucket_prefix): + aws_command("s3", "rm", s3_dest, "--recursive") + + # if we are updating without retention and the destination changed, delete first + if request_type == "Update" and not retain_on_delete and old_s3_dest != s3_dest: + if not old_s3_dest: + logger.warn("cannot delete old resource without old resource properties") + return + + aws_command("s3", "rm", old_s3_dest, "--recursive") + + if request_type == "Update" or request_type == "Create": + s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config) + + if distribution_id: + cloudfront_invalidate(distribution_id, distribution_paths) + + cfn_send(event, context, CFN_SUCCESS, physicalResourceId=physical_id, responseData={ + # Passing through the ARN sequences dependencees on the deployment + 'DestinationBucketArn': props.get('DestinationBucketArn'), + **({'SourceObjectKeys': props.get('SourceObjectKeys')} if output_object_keys else {'SourceObjectKeys': []}) + }) + except KeyError as e: + cfn_error("invalid request. Missing key %s" % str(e)) + except Exception as e: + logger.exception(e) + cfn_error(str(e)) + +#--------------------------------------------------------------------------------------------------- +# Sanitize the message to mitigate CWE-117 and CWE-93 vulnerabilities +def sanitize_message(message): + if not message: + return message + + # Sanitize the message to prevent log injection and HTTP response splitting + sanitized_message = message.replace('\n', '').replace('\r', '') + + # Encode the message to handle special characters + encoded_message = urllib.parse.quote(sanitized_message) + + return encoded_message + +#--------------------------------------------------------------------------------------------------- +# populate all files from s3_source_zips to a destination bucket +def s3_deploy(s3_source_zips, s3_dest, user_metadata, system_metadata, prune, exclude, include, source_markers, extract, source_markers_config): + # list lengths are equal + if len(s3_source_zips) != len(source_markers): + raise Exception("'source_markers' and 's3_source_zips' must be the same length") + + # create a temporary working directory in /tmp or if enabled an attached efs volume + if ENV_KEY_MOUNT_PATH in os.environ: + workdir = os.getenv(ENV_KEY_MOUNT_PATH) + "/" + str(uuid4()) + os.mkdir(workdir) + else: + workdir = tempfile.mkdtemp() + + logger.info("| workdir: %s" % workdir) + + # create a directory into which we extract the contents of the zip file + contents_dir=os.path.join(workdir, 'contents') + os.mkdir(contents_dir) + + try: + # download the archive from the source and extract to "contents" + for i in range(len(s3_source_zips)): + s3_source_zip = s3_source_zips[i] + markers = source_markers[i] + markers_config = source_markers_config[i] + + if extract: + archive=os.path.join(workdir, str(uuid4())) + logger.info("archive: %s" % archive) + aws_command("s3", "cp", s3_source_zip, archive) + logger.info("| extracting archive to: %s\n" % contents_dir) + logger.info("| markers: %s" % markers) + extract_and_replace_markers(archive, contents_dir, markers, markers_config) + else: + logger.info("| copying archive to: %s\n" % contents_dir) + aws_command("s3", "cp", s3_source_zip, contents_dir) + + # sync from "contents" to destination + + s3_command = ["s3", "sync"] + + if prune: + s3_command.append("--delete") + + if exclude: + for filter in exclude: + s3_command.extend(["--exclude", filter]) + + if include: + for filter in include: + s3_command.extend(["--include", filter]) + + s3_command.extend([contents_dir, s3_dest]) + s3_command.extend(create_metadata_args(user_metadata, system_metadata)) + aws_command(*s3_command) + finally: + if not os.getenv(ENV_KEY_SKIP_CLEANUP): + shutil.rmtree(workdir) + +#--------------------------------------------------------------------------------------------------- +# invalidate files in the CloudFront distribution edge caches +def cloudfront_invalidate(distribution_id, distribution_paths): + invalidation_resp = cloudfront.create_invalidation( + DistributionId=distribution_id, + InvalidationBatch={ + 'Paths': { + 'Quantity': len(distribution_paths), + 'Items': distribution_paths + }, + 'CallerReference': str(uuid4()), + }) + # by default, will wait up to 10 minutes + cloudfront.get_waiter('invalidation_completed').wait( + DistributionId=distribution_id, + Id=invalidation_resp['Invalidation']['Id']) + +#--------------------------------------------------------------------------------------------------- +# set metadata +def create_metadata_args(raw_user_metadata, raw_system_metadata): + if len(raw_user_metadata) == 0 and len(raw_system_metadata) == 0: + return [] + + format_system_metadata_key = lambda k: k.lower() + format_user_metadata_key = lambda k: k.lower() + + system_metadata = { format_system_metadata_key(k): v for k, v in raw_system_metadata.items() } + user_metadata = { format_user_metadata_key(k): v for k, v in raw_user_metadata.items() } + + flatten = lambda l: [item for sublist in l for item in sublist] + system_args = flatten([[f"--{k}", v] for k, v in system_metadata.items()]) + user_args = ["--metadata", json.dumps(user_metadata, separators=(',', ':'))] if len(user_metadata) > 0 else [] + + return system_args + user_args + ["--metadata-directive", "REPLACE"] + +#--------------------------------------------------------------------------------------------------- +# executes an "aws" cli command +def aws_command(*args): + aws="/opt/awscli/aws" # from AwsCliLayer + logger.info("| aws %s" % ' '.join(args)) + subprocess.check_call([aws] + list(args)) + +#--------------------------------------------------------------------------------------------------- +# sends a response to cloudformation +def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId=None, noEcho=False, reason=None): + + responseUrl = event['ResponseURL'] + + responseBody = {} + responseBody['Status'] = responseStatus + responseBody['Reason'] = reason or ('See the details in CloudWatch Log Stream: ' + context.log_stream_name) + responseBody['PhysicalResourceId'] = physicalResourceId or context.log_stream_name + responseBody['StackId'] = event['StackId'] + responseBody['RequestId'] = event['RequestId'] + responseBody['LogicalResourceId'] = event['LogicalResourceId'] + responseBody['NoEcho'] = noEcho + responseBody['Data'] = responseData + + body = json.dumps(responseBody) + logger.info("| response body:\n" + body) + + headers = { + 'content-type' : '', + 'content-length' : str(len(body)) + } + + try: + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) + except Exception as e: + logger.error("| unable to send response to CloudFormation") + logger.exception(e) + + +#--------------------------------------------------------------------------------------------------- +# check if bucket is owned by a custom resource +# if it is then we don't want to delete content +def bucket_owned(bucketName, keyPrefix): + tag = CUSTOM_RESOURCE_OWNER_TAG + if keyPrefix != "": + tag = tag + ':' + keyPrefix + try: + request = s3.get_bucket_tagging( + Bucket=bucketName, + ) + return any((x["Key"].startswith(tag)) for x in request["TagSet"]) + except Exception as e: + logger.info("| error getting tags from bucket") + logger.exception(e) + return False + +# extract archive and replace markers in output files +def extract_and_replace_markers(archive, contents_dir, markers, markers_config): + with ZipFile(archive, "r") as zip: + zip.extractall(contents_dir) + + # replace markers for this source + for file in zip.namelist(): + file_path = os.path.join(contents_dir, file) + if os.path.isdir(file_path): continue + replace_markers(file_path, markers, markers_config) + +def prepare_json_safe_markers(markers): + """Pre-process markers to ensure JSON-safe values""" + safe_markers = {} + for key, value in markers.items(): + # Serialize the value as JSON to handle escaping if the value is a string + serialized = json.dumps(value) + if serialized.startswith('"') and serialized.endswith('"'): + json_safe_value = json.dumps(value)[1:-1] # Remove surrounding quotes + else: + json_safe_value = serialized + safe_markers[key.encode('utf-8')] = json_safe_value.encode('utf-8') + return safe_markers + +def replace_markers(filename, markers, markers_config): + """Replace markers in a file, with special handling for JSON files.""" + # if there are no markers, skip + if not markers: + return + + outfile = filename + '.new' + json_escape = markers_config.get('jsonEscape', 'false').lower() + if json_escape == 'true': + replace_tokens = prepare_json_safe_markers(markers) + else: + replace_tokens = dict([(k.encode('utf-8'), v.encode('utf-8')) for k, v in markers.items()]) + + # Handle content with line-by-line binary replacement + with open(filename, 'rb') as fi, open(outfile, 'wb') as fo: + # Process line by line to handle large files + for line in fi: + for token, replacement in replace_tokens.items(): + line = line.replace(token, replacement) + fo.write(line) + + # Delete the original file and rename the new one to the original + os.remove(filename) + os.rename(outfile, filename) + +def replace_markers_in_json(json_object, replace_tokens): + """Replace markers in JSON content with proper escaping.""" + try: + def replace_in_structure(obj): + if isinstance(obj, str): + # Convert string to bytes for consistent replacement + result = obj.encode('utf-8') + for token, replacement in replace_tokens.items(): + result = result.replace(token, replacement) + # Convert back to string + return result.decode('utf-8') + elif isinstance(obj, dict): + return {k: replace_in_structure(v) for k, v in obj.items()} + elif isinstance(obj, list): + return [replace_in_structure(item) for item in obj] + return obj + + # Process the whole structure + processed = replace_in_structure(json_object) + return json.dumps(processed) + except Exception as e: + logger.error(f'Error processing JSON: {e}') + logger.exception(e) + return json_object diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml new file mode 100644 index 0000000000000..4accd4cadb267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml @@ -0,0 +1,20 @@ +openapi: 3.0.3 +info: + title: Asset API Schema + version: 1.0.0 +paths: + /asset: + get: + operationId: assetHelloWorld + summary: Say hello from asset + description: Returns a greeting message from asset-stored schema + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + message: + type: string diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip new file mode 100644 index 0000000000000..42b96d8fc1b3c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc63a5b65bd5c8f0e3819f5c9f3b9f7335f35f35fac6ce8829606a6dc52ff0b +size 19940332 diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json new file mode 100644 index 0000000000000..d75a14064f8e2 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.assets.json @@ -0,0 +1,90 @@ +{ + "version": "44.0.0", + "files": { + "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61": { + "displayName": "aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider Code", + "source": { + "path": "asset.44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e": { + "displayName": "DeploySchema/AwsCliLayer/Code", + "source": { + "path": "asset.b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d": { + "displayName": "Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code", + "source": { + "path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f": { + "displayName": "DeploySchema/Asset1", + "source": { + "path": "asset.049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f", + "packaging": "zip" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0": { + "displayName": "Schema", + "source": { + "path": "asset.a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + }, + "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582": { + "displayName": "aws-cdk-bedrock-api-schema-1 Template", + "source": { + "path": "aws-cdk-bedrock-api-schema-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json new file mode 100644 index 0000000000000..5cd3748c8be11 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/aws-cdk-bedrock-api-schema-1.template.json @@ -0,0 +1,1065 @@ +{ + "Resources": { + "AssetActionGroupFunctionServiceRoleC53BA920": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "AssetActionGroupFunction98EC70AB": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "AssetActionGroupFunctionServiceRoleC53BA920", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "AssetActionGroupFunctionServiceRoleC53BA920" + ] + }, + "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "InlineActionGroupFunctionServiceRole5543D9A3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "InlineActionGroupFunction566CD00A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "InlineActionGroupFunctionServiceRole5543D9A3", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "InlineActionGroupFunctionServiceRole5543D9A3" + ] + }, + "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "S3ActionGroupFunctionServiceRole7E4C5A58": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "S3ActionGroupFunctionA4648C25": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionServiceRole7E4C5A58", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "S3ActionGroupFunctionServiceRole7E4C5A58" + ] + }, + "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "SchemaBucket79EE2269": { + "Type": "AWS::S3::Bucket", + "Properties": { + "Tags": [ + { + "Key": "aws-cdk:auto-delete-objects", + "Value": "true" + }, + { + "Key": "aws-cdk:cr-owned:911f5017", + "Value": "true" + } + ] + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "SchemaBucketPolicy557840E2": { + "Type": "AWS::S3::BucketPolicy", + "Properties": { + "Bucket": { + "Ref": "SchemaBucket79EE2269" + }, + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:List*", + "s3:PutBucketPolicy" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + } + }, + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + } + } + }, + "SchemaBucketAutoDeleteObjectsCustomResource0F518746": { + "Type": "Custom::S3AutoDeleteObjects", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F", + "Arn" + ] + }, + "BucketName": { + "Ref": "SchemaBucket79EE2269" + } + }, + "DependsOn": [ + "SchemaBucketPolicy557840E2" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ] + } + }, + "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "44e9c4d7a5d3fd2d677e1a7e416b2b56f6b0104bd5eff9cac5557b4c65a9dc61.zip" + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092", + "Arn" + ] + }, + "Runtime": { + "Fn::FindInMap": [ + "LatestNodeRuntimeMap", + { + "Ref": "AWS::Region" + }, + "value" + ] + }, + "Description": { + "Fn::Join": [ + "", + [ + "Lambda function for auto-deleting objects in ", + { + "Ref": "SchemaBucket79EE2269" + }, + " S3 bucket." + ] + ] + } + }, + "DependsOn": [ + "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + ] + }, + "DeploySchemaAwsCliLayerD0D0BA6E": { + "Type": "AWS::Lambda::LayerVersion", + "Properties": { + "Content": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip" + }, + "Description": "/opt/awscli/aws" + } + }, + "DeploySchemaCustomResource277E9836": { + "Type": "Custom::CDKBucketDeployment", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536", + "Arn" + ] + }, + "SourceBucketNames": [ + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ], + "SourceObjectKeys": [ + "049f5de90fd9c8b8d2580a7b668c1c5368e67ef5bd0397322e3a90349b740e8f.zip" + ], + "SourceMarkers": [ + {} + ], + "DestinationBucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "Prune": true, + "OutputObjectKeys": true + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + } + ] + }, + { + "Action": [ + "s3:Abort*", + "s3:DeleteObject*", + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*", + "s3:PutObject", + "s3:PutObjectLegalHold", + "s3:PutObjectRetention", + "s3:PutObjectTagging", + "s3:PutObjectVersionTagging" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "SchemaBucket79EE2269", + "Arn" + ] + }, + "/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "Roles": [ + { + "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ] + } + }, + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3Key": "9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip" + }, + "Environment": { + "Variables": { + "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + } + }, + "Handler": "index.handler", + "Layers": [ + { + "Ref": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "Role": { + "Fn::GetAtt": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", + "Arn" + ] + }, + "Runtime": "python3.11", + "Timeout": 900 + }, + "DependsOn": [ + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF", + "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + ] + }, + "ApiSchemaAgentRole636AC572": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent" + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgentRoleDefaultPolicy343EA6FE": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + }, + ":*" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "s3:GetBucket*", + "s3:GetObject*", + "s3:List*" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + } + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + }, + "/schema/s3-api-schema.json" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":s3:::", + { + "Ref": "SchemaBucket79EE2269" + } + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "Roles": [ + { + "Ref": "ApiSchemaAgentRole636AC572" + } + ] + }, + "DependsOn": [ + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + }, + "ApiSchemaAgent8E965D9C": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "AssetActionGroupFunction98EC70AB", + "Arn" + ] + } + }, + "ActionGroupName": "AssetApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Fn::Sub": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}" + }, + "S3ObjectKey": "a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml" + } + }, + "Description": "An action group using a local asset API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "InlineActionGroupFunction566CD00A", + "Arn" + ] + } + }, + "ActionGroupName": "InlineApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group using an inline API schema", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "S3ActionGroupFunctionA4648C25", + "Arn" + ] + } + }, + "ActionGroupName": "S3ApiSchemaActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "S3": { + "S3BucketName": { + "Ref": "SchemaBucket79EE2269" + }, + "S3ObjectKey": "schema/s3-api-schema.json" + } + }, + "Description": "An action group using an S3-based API schema", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "api-schema-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "ApiSchemaAgentRole636AC572", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using an API schema with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "ApiSchemaAgentRoleDefaultPolicy343EA6FE", + "DeploySchemaAwsCliLayerD0D0BA6E", + "DeploySchemaCustomResource277E9836" + ] + } + }, + "Mappings": { + "LatestNodeRuntimeMap": { + "af-south-1": { + "value": "nodejs22.x" + }, + "ap-east-1": { + "value": "nodejs22.x" + }, + "ap-east-2": { + "value": "nodejs22.x" + }, + "ap-northeast-1": { + "value": "nodejs22.x" + }, + "ap-northeast-2": { + "value": "nodejs22.x" + }, + "ap-northeast-3": { + "value": "nodejs22.x" + }, + "ap-south-1": { + "value": "nodejs22.x" + }, + "ap-south-2": { + "value": "nodejs22.x" + }, + "ap-southeast-1": { + "value": "nodejs22.x" + }, + "ap-southeast-2": { + "value": "nodejs22.x" + }, + "ap-southeast-3": { + "value": "nodejs22.x" + }, + "ap-southeast-4": { + "value": "nodejs22.x" + }, + "ap-southeast-5": { + "value": "nodejs22.x" + }, + "ap-southeast-7": { + "value": "nodejs22.x" + }, + "ca-central-1": { + "value": "nodejs22.x" + }, + "ca-west-1": { + "value": "nodejs22.x" + }, + "cn-north-1": { + "value": "nodejs22.x" + }, + "cn-northwest-1": { + "value": "nodejs22.x" + }, + "eu-central-1": { + "value": "nodejs22.x" + }, + "eu-central-2": { + "value": "nodejs22.x" + }, + "eu-isoe-west-1": { + "value": "nodejs18.x" + }, + "eu-north-1": { + "value": "nodejs22.x" + }, + "eu-south-1": { + "value": "nodejs22.x" + }, + "eu-south-2": { + "value": "nodejs22.x" + }, + "eu-west-1": { + "value": "nodejs22.x" + }, + "eu-west-2": { + "value": "nodejs22.x" + }, + "eu-west-3": { + "value": "nodejs22.x" + }, + "il-central-1": { + "value": "nodejs22.x" + }, + "me-central-1": { + "value": "nodejs22.x" + }, + "me-south-1": { + "value": "nodejs22.x" + }, + "mx-central-1": { + "value": "nodejs22.x" + }, + "sa-east-1": { + "value": "nodejs22.x" + }, + "us-east-1": { + "value": "nodejs22.x" + }, + "us-east-2": { + "value": "nodejs22.x" + }, + "us-gov-east-1": { + "value": "nodejs22.x" + }, + "us-gov-west-1": { + "value": "nodejs22.x" + }, + "us-iso-east-1": { + "value": "nodejs18.x" + }, + "us-iso-west-1": { + "value": "nodejs18.x" + }, + "us-isob-east-1": { + "value": "nodejs18.x" + }, + "us-isob-west-1": { + "value": "nodejs18.x" + }, + "us-west-1": { + "value": "nodejs22.x" + }, + "us-west-2": { + "value": "nodejs22.x" + } + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json new file mode 100644 index 0000000000000..fac5585fa2c50 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "BedrockApiSchema/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-api-schema-1" + ], + "assertionStack": "BedrockApiSchema/DefaultTest/DeployAssert", + "assertionStackName": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57" + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json new file mode 100644 index 0000000000000..cceb514c146b7 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/manifest.json @@ -0,0 +1,716 @@ +{ + "version": "44.0.0", + "artifacts": { + "aws-cdk-bedrock-api-schema-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-api-schema-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-api-schema-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-api-schema-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/7088b3cc688c2990cc3e59c4636a433a6fab1500854d9c74aa84e5ac1a2dc582.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-api-schema-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionServiceRoleC53BA920" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunction98EC70AB" + } + ], + "/aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "AssetActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4203A2E0A7" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionServiceRole5543D9A3" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunction566CD00A" + } + ], + "/aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "InlineActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f42CE4591EF" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionServiceRole7E4C5A58" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionA4648C25" + } + ], + "/aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42": [ + { + "type": "aws:cdk:logicalId", + "data": "S3ActionGroupFunctionLambdaInvocationPolicyc8dfda1d62217f4210E2D0E3" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "removalPolicy": "destroy", + "autoDeleteObjects": true + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucket79EE2269" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "bucket": "*" + } + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketPolicy557840E2" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "SchemaBucketAutoDeleteObjectsCustomResource0F518746" + } + ], + "/aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap": [ + { + "type": "aws:cdk:logicalId", + "data": "LatestNodeRuntimeMap" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider": [ + { + "type": "aws:cdk:is-custom-resource-handler-customResourceProvider", + "data": true + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer": [ + { + "type": "aws:cdk:analytics:construct", + "data": {} + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaAwsCliLayerD0D0BA6E" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "uuid": "*", + "layers": [ + "*" + ], + "environment": "*", + "lambdaPurpose": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + true + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addMetadata": [ + "*", + "*" + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default": [ + { + "type": "aws:cdk:logicalId", + "data": "DeploySchemaCustomResource277E9836" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "layers": [ + "*" + ], + "environment": "*", + "timeout": "*", + "role": "*", + "memorySize": "*", + "ephemeralStorageSize": "*", + "vpc": "*", + "vpcSubnets": "*", + "filesystem": "*", + "logGroup": "*", + "code": "*", + "handler": "*", + "runtime": "*" + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addEnvironment": [ + "*", + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addLayers": [ + "*" + ] + } + }, + { + "type": "aws:cdk:is-custom-resource-handler-singleton", + "data": true + }, + { + "type": "aws:cdk:is-custom-resource-handler-runtime-family", + "data": 2 + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF" + } + ], + "/aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C81C01536" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRole636AC572" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgentRoleDefaultPolicy343EA6FE" + } + ], + "/aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ApiSchemaAgent8E965D9C" + } + ], + "/aws-cdk-bedrock-api-schema-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-api-schema-1" + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockApiSchemaDefaultTestDeployAssert1DDDDC57.assets" + ], + "metadata": { + "/BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockApiSchema/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json new file mode 100644 index 0000000000000..f721c41c640b9 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.api-schema.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-api-schema-1":{"id":"aws-cdk-bedrock-api-schema-1","path":"aws-cdk-bedrock-api-schema-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"AssetActionGroupFunction":{"id":"AssetActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from asset action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["AssetActionGroupFunctionServiceRoleC53BA920","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/AssetActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"InlineActionGroupFunction":{"id":"InlineActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from inline action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["InlineActionGroupFunctionServiceRole5543D9A3","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/InlineActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"S3ActionGroupFunction":{"id":"S3ActionGroupFunction","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from S3 action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["S3ActionGroupFunctionServiceRole7E4C5A58","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8dfda1d62217f42":{"id":"LambdaInvocationPolicy-c8dfda1d62217f42","path":"aws-cdk-bedrock-api-schema-1/S3ActionGroupFunction/LambdaInvocationPolicy-c8dfda1d62217f42","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"SchemaBucket":{"id":"SchemaBucket","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.Bucket","version":"0.0.0","metadata":[{"removalPolicy":"destroy","autoDeleteObjects":true}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucket","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::Bucket","aws:cdk:cloudformation:props":{"tags":[{"key":"aws-cdk:auto-delete-objects","value":"true"},{"key":"aws-cdk:cr-owned:911f5017","value":"true"}]}}},"Policy":{"id":"Policy","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketPolicy","version":"0.0.0","metadata":[{"bucket":"*"}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/Policy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.CfnBucketPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::S3::BucketPolicy","aws:cdk:cloudformation:props":{"bucket":{"Ref":"SchemaBucket79EE2269"},"policyDocument":{"Statement":[{"Action":["s3:DeleteObject*","s3:GetBucket*","s3:List*","s3:PutBucketPolicy"],"Effect":"Allow","Principal":{"AWS":{"Fn::GetAtt":["CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092","Arn"]}},"Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"}}}}}},"AutoDeleteObjectsCustomResource":{"id":"AutoDeleteObjectsCustomResource","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/SchemaBucket/AutoDeleteObjectsCustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"LatestNodeRuntimeMap":{"id":"LatestNodeRuntimeMap","path":"aws-cdk-bedrock-api-schema-1/LatestNodeRuntimeMap","constructInfo":{"fqn":"aws-cdk-lib.CfnMapping","version":"0.0.0"}},"Custom::S3AutoDeleteObjectsCustomResourceProvider":{"id":"Custom::S3AutoDeleteObjectsCustomResourceProvider","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider","constructInfo":{"fqn":"aws-cdk-lib.CustomResourceProviderBase","version":"0.0.0"},"children":{"Staging":{"id":"Staging","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}},"Handler":{"id":"Handler","path":"aws-cdk-bedrock-api-schema-1/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}},"DeploySchema":{"id":"DeploySchema","path":"aws-cdk-bedrock-api-schema-1/DeploySchema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_deployment.BucketDeployment","version":"0.0.0"},"children":{"AwsCliLayer":{"id":"AwsCliLayer","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer","constructInfo":{"fqn":"aws-cdk-lib.lambda_layer_awscli.AwsCliLayer","version":"0.0.0","metadata":[{}]},"children":{"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/AwsCliLayer/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnLayerVersion","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::LayerVersion","aws:cdk:cloudformation:props":{"content":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"b8ab94266984268614c3fb2824a1c3a55395746c48b28c003b08bc1d08688f3e.zip"},"description":"/opt/awscli/aws"}}}}},"CustomResourceHandler":{"id":"CustomResourceHandler","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResourceHandler","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.SingletonFunction","version":"0.0.0","metadata":[{"uuid":"*","layers":["*"],"environment":"*","lambdaPurpose":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addMetadata":["*",true]},{"addMetadata":["*","*"]}]}},"Asset1":{"id":"Asset1","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/Asset1/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"CustomResource":{"id":"CustomResource","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource","constructInfo":{"fqn":"aws-cdk-lib.CustomResource","version":"0.0.0","metadata":["*"]},"children":{"Default":{"id":"Default","path":"aws-cdk-bedrock-api-schema-1/DeploySchema/CustomResource/Default","constructInfo":{"fqn":"aws-cdk-lib.CfnResource","version":"0.0.0"}}}}}},"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C":{"id":"Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"layers":["*"],"environment":"*","timeout":"*","role":"*","memorySize":"*","ephemeralStorageSize":"*","vpc":"*","vpcSubnets":"*","filesystem":"*","logGroup":"*","code":"*","handler":"*","runtime":"*"},{"addEnvironment":["*","*"]},{"addLayers":["*"]}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/ServiceRole/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/*"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]}]},{"Action":["s3:Abort*","s3:DeleteObject*","s3:GetBucket*","s3:GetObject*","s3:List*","s3:PutObject","s3:PutObjectLegalHold","s3:PutObjectRetention","s3:PutObjectTagging","s3:PutObjectVersionTagging"],"Effect":"Allow","Resource":[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["SchemaBucket79EE2269","Arn"]},"/*"]]}]}],"Version":"2012-10-17"},"policyName":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRoleDefaultPolicy88902FDF","roles":[{"Ref":"CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265"}]}}}}}}},"Code":{"id":"Code","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Code/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"s3Bucket":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3Key":"9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"},"environment":{"variables":{"AWS_CA_BUNDLE":"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"}},"handler":"index.handler","layers":[{"Ref":"DeploySchemaAwsCliLayerD0D0BA6E"}],"role":{"Fn::GetAtt":["CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265","Arn"]},"runtime":"python3.11","timeout":900}}}}},"Schema":{"id":"Schema","path":"aws-cdk-bedrock-api-schema-1/Schema","constructInfo":{"fqn":"aws-cdk-lib.aws_s3_assets.Asset","version":"0.0.0"},"children":{"Stage":{"id":"Stage","path":"aws-cdk-bedrock-api-schema-1/Schema/Stage","constructInfo":{"fqn":"aws-cdk-lib.AssetStaging","version":"0.0.0"}},"AssetBucket":{"id":"AssetBucket","path":"aws-cdk-bedrock-api-schema-1/Schema/AssetBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}}}},"ApiSchemaAgent":{"id":"ApiSchemaAgent","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockapisca1-apischemaagent-b0e9b051-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]},":*"]]},{"Fn::Join":["",[{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]},":*"]]}]},{"Action":["s3:GetBucket*","s3:GetObject*","s3:List*"],"Effect":"Allow","Resource":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"/a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"}]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"},"/schema/s3-api-schema.json"]]},{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":s3:::",{"Ref":"SchemaBucket79EE2269"}]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"ApiSchemaAgentRoleDefaultPolicy343EA6FE","roles":[{"Ref":"ApiSchemaAgentRole636AC572"}]}}}}}}},"AssetApiSchemaActionGroupSchemaBucket":{"id":"AssetApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/AssetApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"S3ApiSchemaActionGroupSchemaBucket":{"id":"S3ApiSchemaActionGroupSchemaBucket","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/S3ApiSchemaActionGroupSchemaBucket","constructInfo":{"fqn":"aws-cdk-lib.aws_s3.BucketBase","version":"0.0.0","metadata":[]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["AssetActionGroupFunction98EC70AB","Arn"]}},"actionGroupName":"AssetApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Fn::Sub":"cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}"},"s3ObjectKey":"a7172fea4e8cb73c2182ab93fc10509de03c96781054237fcbc52220fed232a0.yaml"}},"description":"An action group using a local asset API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["InlineActionGroupFunction566CD00A","Arn"]}},"actionGroupName":"InlineApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group using an inline API schema","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["S3ActionGroupFunctionA4648C25","Arn"]}},"actionGroupName":"S3ApiSchemaActionGroup","actionGroupState":"ENABLED","apiSchema":{"s3":{"s3BucketName":{"Ref":"SchemaBucket79EE2269"},"s3ObjectKey":"schema/s3-api-schema.json"}},"description":"An action group using an S3-based API schema","skipResourceInUseCheckOnDelete":false}],"agentName":"api-schema-agent","agentResourceRoleArn":{"Fn::GetAtt":["ApiSchemaAgentRole636AC572","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using an API schema with at least 40 characters of instruction","orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-api-schema-1/ApiSchemaAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-api-schema-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockApiSchema":{"id":"BedrockApiSchema","path":"BedrockApiSchema","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockApiSchema/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockApiSchema/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockApiSchema/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockApiSchema/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json new file mode 100644 index 0000000000000..01b953bb1fa4c --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockMemoryDefaultTestDeployAssert5AD90360 Template", + "source": { + "path": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/BedrockMemoryDefaultTestDeployAssert5AD90360.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json new file mode 100644 index 0000000000000..d16735b491c34 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524": { + "displayName": "aws-cdk-bedrock-memory-1 Template", + "source": { + "path": "aws-cdk-bedrock-memory-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json new file mode 100644 index 0000000000000..e0d85494ad511 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/aws-cdk-bedrock-memory-1.template.json @@ -0,0 +1,546 @@ +{ + "Resources": { + "DefaultMemoryFunctionServiceRoleD8C5CDAF": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "DefaultMemoryFunctionAC6D5374": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "DefaultMemoryFunctionServiceRoleD8C5CDAF" + ] + }, + "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomMemoryFunctionServiceRoleA64B0AD5": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomMemoryFunctionB4B5CB9A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomMemoryFunctionServiceRoleA64B0AD5", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomMemoryFunctionServiceRoleA64B0AD5" + ] + }, + "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "AgentWithDefaultMemoryRole0AEE1FD1": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent" + } + }, + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25", + "Roles": [ + { + "Ref": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ] + } + }, + "AgentWithDefaultMemoryA1F31830": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "DefaultMemoryFunctionAC6D5374", + "Arn" + ] + } + }, + "ActionGroupName": "DefaultMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing default memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-default-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithDefaultMemoryRole0AEE1FD1", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using default memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 20 + }, + "StorageDays": 30 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + ] + }, + "AgentWithCustomMemoryRole3B7BD09F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent" + } + }, + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78", + "Roles": [ + { + "Ref": "AgentWithCustomMemoryRole3B7BD09F" + } + ] + } + }, + "AgentWithCustomMemoryD0BD498B": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomMemoryFunctionB4B5CB9A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomMemoryActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom memory configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-memory", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomMemoryRole3B7BD09F", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom memory configuration with at least 40 characters of instruction", + "MemoryConfiguration": { + "EnabledMemoryTypes": [ + "SESSION_SUMMARY" + ], + "SessionSummaryConfiguration": { + "MaxRecentSessions": 5 + }, + "StorageDays": 15 + }, + "OrchestrationType": "DEFAULT", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json new file mode 100644 index 0000000000000..55e92d6943e0e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "BedrockMemory/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-memory-1" + ], + "assertionStack": "BedrockMemory/DefaultTest/DeployAssert", + "assertionStackName": "BedrockMemoryDefaultTestDeployAssert5AD90360" + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json new file mode 100644 index 0000000000000..fe0f12beca6b4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/manifest.json @@ -0,0 +1,420 @@ +{ + "version": "44.0.0", + "artifacts": { + "aws-cdk-bedrock-memory-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-memory-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-memory-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-memory-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/4b5e46dd6d910a7f3b3a80b002f4430d97635faacd166974de5d6a066d216524.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-memory-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionServiceRoleD8C5CDAF" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionAC6D5374" + } + ], + "/aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5": [ + { + "type": "aws:cdk:logicalId", + "data": "DefaultMemoryFunctionLambdaInvocationPolicyc809bacfbaa9d9a5AC2FFF6B" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionServiceRoleA64B0AD5" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionB4B5CB9A" + } + ], + "/aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomMemoryFunctionLambdaInvocationPolicyc8492664c8e1cb16AC1ED6E1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRole0AEE1FD1" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithDefaultMemoryA1F31830" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRole3B7BD09F" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78" + } + ], + "/aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomMemoryD0BD498B" + } + ], + "/aws-cdk-bedrock-memory-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-memory-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-memory-1" + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockMemoryDefaultTestDeployAssert5AD90360.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockMemoryDefaultTestDeployAssert5AD90360": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockMemoryDefaultTestDeployAssert5AD90360.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockMemoryDefaultTestDeployAssert5AD90360.assets" + ], + "metadata": { + "/BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockMemory/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json new file mode 100644 index 0000000000000..03b862c136195 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.memory.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-memory-1":{"id":"aws-cdk-bedrock-memory-1","path":"aws-cdk-bedrock-memory-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"DefaultMemoryFunction":{"id":"DefaultMemoryFunction","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from default memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["DefaultMemoryFunctionServiceRoleD8C5CDAF","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c809bacfbaa9d9a5":{"id":"LambdaInvocationPolicy-c809bacfbaa9d9a5","path":"aws-cdk-bedrock-memory-1/DefaultMemoryFunction/LambdaInvocationPolicy-c809bacfbaa9d9a5","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomMemoryFunction":{"id":"CustomMemoryFunction","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom memory action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomMemoryFunctionServiceRoleA64B0AD5","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8492664c8e1cb16":{"id":"LambdaInvocationPolicy-c8492664c8e1cb16","path":"aws-cdk-bedrock-memory-1/CustomMemoryFunction/LambdaInvocationPolicy-c8492664c8e1cb16","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"AgentWithDefaultMemory":{"id":"AgentWithDefaultMemory","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemorwithdefaultmemory-230a5dbf-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithDefaultMemoryRoleDefaultPolicyCF8B3F25","roles":[{"Ref":"AgentWithDefaultMemoryRole0AEE1FD1"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["DefaultMemoryFunctionAC6D5374","Arn"]}},"actionGroupName":"DefaultMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing default memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-default-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithDefaultMemoryRole0AEE1FD1","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using default memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":30,"sessionSummaryConfiguration":{"maxRecentSessions":20}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithDefaultMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomMemory":{"id":"AgentWithCustomMemory","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockmemortwithcustommemory-12bba032-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomMemoryRoleDefaultPolicyB8F9AA78","roles":[{"Ref":"AgentWithCustomMemoryRole3B7BD09F"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomMemoryFunctionB4B5CB9A","Arn"]}},"actionGroupName":"CustomMemoryActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom memory configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-memory","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomMemoryRole3B7BD09F","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom memory configuration with at least 40 characters of instruction","memoryConfiguration":{"enabledMemoryTypes":["SESSION_SUMMARY"],"storageDays":15,"sessionSummaryConfiguration":{"maxRecentSessions":5}},"orchestrationType":"DEFAULT","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-memory-1/AgentWithCustomMemory/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-memory-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-memory-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockMemory":{"id":"BedrockMemory","path":"BedrockMemory","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockMemory/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockMemory/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockMemory/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockMemory/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json new file mode 100644 index 0000000000000..2c0c2e239e7d8 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30 Template", + "source": { + "path": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json new file mode 100644 index 0000000000000..33a7aa00090f2 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d": { + "displayName": "aws-cdk-bedrock-orchestration-1 Template", + "source": { + "path": "aws-cdk-bedrock-orchestration-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json new file mode 100644 index 0000000000000..c737305fb8782 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/aws-cdk-bedrock-orchestration-1.template.json @@ -0,0 +1,282 @@ +{ + "Resources": { + "OrchestrationFunctionServiceRole12D0673A": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "OrchestrationFunction2F3851C6": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "OrchestrationFunctionServiceRole12D0673A", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "OrchestrationFunctionServiceRole12D0673A" + ] + }, + "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + }, + "SourceArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentDC6CC131", + "AgentArn" + ] + } + } + }, + "CustomOrchestrationAgentRole85710213": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent" + } + }, + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6", + "Roles": [ + { + "Ref": "CustomOrchestrationAgentRole85710213" + } + ] + } + }, + "CustomOrchestrationAgentDC6CC131": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "custom-orchestration-agent", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "CustomOrchestrationAgentRole85710213", + "Arn" + ] + }, + "AutoPrepare": false, + "CustomOrchestration": { + "Executor": { + "Lambda": { + "Fn::GetAtt": [ + "OrchestrationFunction2F3851C6", + "Arn" + ] + } + } + }, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom orchestration with at least 40 characters of instruction", + "OrchestrationType": "CUSTOM_ORCHESTRATION", + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json new file mode 100644 index 0000000000000..f0500d69a0e0f --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "BedrockOrchestration/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-orchestration-1" + ], + "assertionStack": "BedrockOrchestration/DefaultTest/DeployAssert", + "assertionStackName": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30" + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json new file mode 100644 index 0000000000000..f1a16c34b09e0 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/manifest.json @@ -0,0 +1,264 @@ +{ + "version": "44.0.0", + "artifacts": { + "aws-cdk-bedrock-orchestration-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-orchestration-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-orchestration-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-orchestration-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/8e22484e104d03bb8c381c662bca5f9251022e01bbb67e62d371b418eac0e88d.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-orchestration-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionServiceRole12D0673A" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunction2F3851C6" + } + ], + "/aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7": [ + { + "type": "aws:cdk:logicalId", + "data": "OrchestrationFunctionOrchestrationLambdaInvocationPolicyc8f49862985034a7EC14F6D5" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRole85710213" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6" + } + ], + "/aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomOrchestrationAgentDC6CC131" + } + ], + "/aws-cdk-bedrock-orchestration-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-orchestration-1" + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockOrchestrationDefaultTestDeployAssertACFAFF30.assets" + ], + "metadata": { + "/BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockOrchestration/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json new file mode 100644 index 0000000000000..4831859ec2a6e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.orchestration.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-orchestration-1":{"id":"aws-cdk-bedrock-orchestration-1","path":"aws-cdk-bedrock-orchestration-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"OrchestrationFunction":{"id":"OrchestrationFunction","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Orchestration Event:', JSON.stringify(event));\n \n // Example orchestration logic\n const response = {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup || 'default',\n apiPath: event.apiPath || '/default',\n httpMethod: event.httpMethod || 'GET',\n httpStatusCode: 200,\n responseBody: {\n application_json: { \n result: 'Custom orchestration response',\n timestamp: new Date().toISOString()\n }\n }\n }\n };\n \n return response;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["OrchestrationFunctionServiceRole12D0673A","Arn"]},"runtime":"nodejs18.x"}}},"OrchestrationLambdaInvocationPolicy-c8f49862985034a7":{"id":"OrchestrationLambdaInvocationPolicy-c8f49862985034a7","path":"aws-cdk-bedrock-orchestration-1/OrchestrationFunction/OrchestrationLambdaInvocationPolicy-c8f49862985034a7","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"},"sourceArn":{"Fn::GetAtt":["CustomOrchestrationAgentDC6CC131","AgentArn"]}}}}}},"CustomOrchestrationAgent":{"id":"CustomOrchestrationAgent","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockorcherchestrationagent-e769c494-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"CustomOrchestrationAgentRoleDefaultPolicy33EDF7E6","roles":[{"Ref":"CustomOrchestrationAgentRole85710213"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false}],"agentName":"custom-orchestration-agent","agentResourceRoleArn":{"Fn::GetAtt":["CustomOrchestrationAgentRole85710213","Arn"]},"autoPrepare":false,"customOrchestration":{"executor":{"lambda":{"Fn::GetAtt":["OrchestrationFunction2F3851C6","Arn"]}}},"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom orchestration with at least 40 characters of instruction","orchestrationType":"CUSTOM_ORCHESTRATION","skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-orchestration-1/CustomOrchestrationAgent/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-orchestration-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockOrchestration":{"id":"BedrockOrchestration","path":"BedrockOrchestration","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockOrchestration/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockOrchestration/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockOrchestration/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockOrchestration/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json new file mode 100644 index 0000000000000..606380e1ff833 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22": { + "displayName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4 Template", + "source": { + "path": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json new file mode 100644 index 0000000000000..ad9d0fb73d1dd --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json @@ -0,0 +1,36 @@ +{ + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json new file mode 100644 index 0000000000000..c8dd3f8fea267 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.assets.json @@ -0,0 +1,20 @@ +{ + "version": "44.0.0", + "files": { + "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514": { + "displayName": "aws-cdk-bedrock-prompt-override-1 Template", + "source": { + "path": "aws-cdk-bedrock-prompt-override-1.template.json", + "packaging": "file" + }, + "destinations": { + "current_account-current_region": { + "bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}", + "objectKey": "965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}" + } + } + } + }, + "dockerImages": {} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json new file mode 100644 index 0000000000000..69b1f2a548dd4 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/aws-cdk-bedrock-prompt-override-1.template.json @@ -0,0 +1,644 @@ +{ + "Resources": { + "PromptOverrideFunctionServiceRoleB1ACDEAD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "PromptOverrideFunctionD82AB437": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "PromptOverrideFunctionServiceRoleB1ACDEAD" + ] + }, + "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "CustomParserActionFunctionServiceRoleEE676A1C": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "CustomParserActionFunction3DAF0C7A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "CustomParserActionFunctionServiceRoleEE676A1C", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "CustomParserActionFunctionServiceRoleEE676A1C" + ] + }, + "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "Action": "lambda:InvokeFunction", + "FunctionName": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + "Principal": "bedrock.amazonaws.com", + "SourceAccount": { + "Ref": "AWS::AccountId" + } + } + }, + "ParserFunctionServiceRole59DD83FB": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "ParserFunctionE8A187F2": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n " + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "ParserFunctionServiceRole59DD83FB", + "Arn" + ] + }, + "Runtime": "nodejs18.x" + }, + "DependsOn": [ + "ParserFunctionServiceRole59DD83FB" + ] + }, + "AgentWithPromptOverrideRoleA0EB6013": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent" + } + }, + "AgentWithPromptOverrideRoleDefaultPolicy348076D7": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithPromptOverrideRoleDefaultPolicy348076D7", + "Roles": [ + { + "Ref": "AgentWithPromptOverrideRoleA0EB6013" + } + ] + } + }, + "AgentWithPromptOverride13B28AED": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "PromptOverrideFunctionD82AB437", + "Arn" + ] + } + }, + "ActionGroupName": "PromptOverrideActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing prompt override configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-prompt-override", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithPromptOverrideRoleA0EB6013", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using prompt override configuration with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "PromptCreationMode": "OVERRIDDEN", + "PromptState": "ENABLED", + "PromptType": "POST_PROCESSING" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + ] + }, + "AgentWithCustomParserRole29295FCD": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:SourceAccount": { + "Ref": "AWS::AccountId" + } + }, + "ArnLike": { + "aws:SourceArn": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":agent/*" + ] + ] + } + } + }, + "Effect": "Allow", + "Principal": { + "Service": "bedrock.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent" + } + }, + "AgentWithCustomParserRoleDefaultPolicy00D4B90E": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "lambda:InvokeFunction", + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + }, + ":*" + ] + ] + } + ] + }, + { + "Action": [ + "bedrock:GetFoundationModel", + "bedrock:InvokeModel*" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + } + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "AgentWithCustomParserRoleDefaultPolicy00D4B90E", + "Roles": [ + { + "Ref": "AgentWithCustomParserRole29295FCD" + } + ] + } + }, + "AgentWithCustomParser73E443B8": { + "Type": "AWS::Bedrock::Agent", + "Properties": { + "ActionGroups": [ + { + "ActionGroupName": "UserInputAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.UserInput", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupName": "CodeInterpreterAction", + "ActionGroupState": "DISABLED", + "ParentActionGroupSignature": "AMAZON.CodeInterpreter", + "SkipResourceInUseCheckOnDelete": false + }, + { + "ActionGroupExecutor": { + "Lambda": { + "Fn::GetAtt": [ + "CustomParserActionFunction3DAF0C7A", + "Arn" + ] + } + }, + "ActionGroupName": "CustomParserActionGroup", + "ActionGroupState": "ENABLED", + "ApiSchema": { + "Payload": "\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n" + }, + "Description": "An action group for testing custom parser configuration", + "SkipResourceInUseCheckOnDelete": false + } + ], + "AgentName": "agent-with-custom-parser", + "AgentResourceRoleArn": { + "Fn::GetAtt": [ + "AgentWithCustomParserRole29295FCD", + "Arn" + ] + }, + "AutoPrepare": false, + "FoundationModel": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":bedrock:", + { + "Ref": "AWS::Region" + }, + "::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0" + ] + ] + }, + "IdleSessionTTLInSeconds": 600, + "Instruction": "This is an agent using custom parser with at least 40 characters of instruction", + "OrchestrationType": "DEFAULT", + "PromptOverrideConfiguration": { + "OverrideLambda": { + "Fn::GetAtt": [ + "ParserFunctionE8A187F2", + "Arn" + ] + }, + "PromptConfigurations": [ + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 2048, + "StopSequences": [], + "Temperature": 0.2, + "TopK": 250, + "TopP": 0.9 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "PRE_PROCESSING" + }, + { + "BasePromptTemplate": "{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}", + "InferenceConfiguration": { + "MaximumLength": 1024, + "StopSequences": [], + "Temperature": 0.1, + "TopK": 100, + "TopP": 0.95 + }, + "ParserMode": "OVERRIDDEN", + "PromptCreationMode": "OVERRIDDEN", + "PromptType": "MEMORY_SUMMARIZATION" + } + ] + }, + "SkipResourceInUseCheckOnDelete": true + }, + "DependsOn": [ + "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + ] + } + }, + "Parameters": { + "BootstrapVersion": { + "Type": "AWS::SSM::Parameter::Value", + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]" + } + }, + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ + "1", + "2", + "3", + "4", + "5" + ], + { + "Ref": "BootstrapVersion" + } + ] + } + ] + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI." + } + ] + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out new file mode 100644 index 0000000000000..b3a26d44a5f73 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/cdk.out @@ -0,0 +1 @@ +{"version":"44.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json new file mode 100644 index 0000000000000..d1dd12b15ecb5 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/integ.json @@ -0,0 +1,13 @@ +{ + "version": "44.0.0", + "testCases": { + "BedrockPromptOverride/DefaultTest": { + "stacks": [ + "aws-cdk-bedrock-prompt-override-1" + ], + "assertionStack": "BedrockPromptOverride/DefaultTest/DeployAssert", + "assertionStackName": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4" + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json new file mode 100644 index 0000000000000..f1bde0297eaa5 --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/manifest.json @@ -0,0 +1,464 @@ +{ + "version": "44.0.0", + "artifacts": { + "aws-cdk-bedrock-prompt-override-1.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "aws-cdk-bedrock-prompt-override-1.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "aws-cdk-bedrock-prompt-override-1": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "aws-cdk-bedrock-prompt-override-1.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/965de1cced7bc670a8a398eec58c7e6bab6f5cac604e56e0b2acb86253126514.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "aws-cdk-bedrock-prompt-override-1.assets" + ], + "metadata": { + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionServiceRoleB1ACDEAD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionD82AB437" + } + ], + "/aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55": [ + { + "type": "aws:cdk:logicalId", + "data": "PromptOverrideFunctionLambdaInvocationPolicyc8b9aaceca433c559F5E0C1B" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionServiceRoleEE676A1C" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunction3DAF0C7A" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75": [ + { + "type": "aws:cdk:logicalId", + "data": "CustomParserActionFunctionLambdaInvocationPolicyc8cded76e8ed1a7503EDC886" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "runtime": "*", + "handler": "*", + "code": "*" + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + }, + "managedPolicies": [ + { + "managedPolicyArn": "*" + } + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionServiceRole59DD83FB" + } + ], + "/aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "ParserFunctionE8A187F2" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleA0EB6013" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverrideRoleDefaultPolicy348076D7" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithPromptOverride13B28AED" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role": [ + { + "type": "aws:cdk:analytics:construct", + "data": { + "roleName": "*", + "assumedBy": { + "principalAccount": "*", + "assumeRoleAction": "*" + } + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachInlinePolicy": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addToPrincipalPolicy": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRole29295FCD" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy": [ + { + "type": "aws:cdk:analytics:construct", + "data": "*" + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "attachToRole": [ + "*" + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + }, + { + "type": "aws:cdk:analytics:method", + "data": { + "addStatements": [ + {} + ] + } + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParserRoleDefaultPolicy00D4B90E" + } + ], + "/aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource": [ + { + "type": "aws:cdk:logicalId", + "data": "AgentWithCustomParser73E443B8" + } + ], + "/aws-cdk-bedrock-prompt-override-1/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "aws-cdk-bedrock-prompt-override-1" + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets": { + "type": "cdk:asset-manifest", + "properties": { + "file": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4": { + "type": "aws:cloudformation:stack", + "environment": "aws://unknown-account/unknown-region", + "properties": { + "templateFile": "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.template.json", + "terminationProtection": false, + "validateOnSynth": false, + "assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-deploy-role-${AWS::AccountId}-${AWS::Region}", + "cloudFormationExecutionRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", + "stackTemplateAssetObjectUrl": "s3://cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}/21fbb51d7b23f6a6c262b46a9caee79d744a3ac019fd45422d988b96d44b2a22.json", + "requiresBootstrapStackVersion": 6, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version", + "additionalDependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "lookupRole": { + "arn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-lookup-role-${AWS::AccountId}-${AWS::Region}", + "requiresBootstrapStackVersion": 8, + "bootstrapStackVersionSsmParameter": "/cdk-bootstrap/hnb659fds/version" + } + }, + "dependencies": [ + "BedrockPromptOverrideDefaultTestDeployAssert7D38F1F4.assets" + ], + "metadata": { + "/BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "BootstrapVersion" + } + ], + "/BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion": [ + { + "type": "aws:cdk:logicalId", + "data": "CheckBootstrapVersion" + } + ] + }, + "displayName": "BedrockPromptOverride/DefaultTest/DeployAssert" + }, + "Tree": { + "type": "cdk:tree", + "properties": { + "file": "tree.json" + } + } + }, + "minimumCliVersion": "2.1017.1" +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json new file mode 100644 index 0000000000000..14fab40b76a6e --- /dev/null +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/integ.prompt-override.js.snapshot/tree.json @@ -0,0 +1 @@ +{"version":"tree-0.1","tree":{"id":"App","path":"","constructInfo":{"fqn":"aws-cdk-lib.App","version":"0.0.0"},"children":{"aws-cdk-bedrock-prompt-override-1":{"id":"aws-cdk-bedrock-prompt-override-1","path":"aws-cdk-bedrock-prompt-override-1","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"PromptOverrideFunction":{"id":"PromptOverrideFunction","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from prompt override action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["PromptOverrideFunctionServiceRoleB1ACDEAD","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8b9aaceca433c55":{"id":"LambdaInvocationPolicy-c8b9aaceca433c55","path":"aws-cdk-bedrock-prompt-override-1/PromptOverrideFunction/LambdaInvocationPolicy-c8b9aaceca433c55","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"CustomParserActionFunction":{"id":"CustomParserActionFunction","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Event:', JSON.stringify(event));\n return {\n messageVersion: '1.0',\n response: {\n actionGroup: event.actionGroup,\n apiPath: event.apiPath,\n httpMethod: event.httpMethod,\n httpStatusCode: 200,\n responseBody: {\n application_json: { result: 'Success from custom parser action group' }\n }\n }\n };\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["CustomParserActionFunctionServiceRoleEE676A1C","Arn"]},"runtime":"nodejs18.x"}}},"LambdaInvocationPolicy-c8cded76e8ed1a75":{"id":"LambdaInvocationPolicy-c8cded76e8ed1a75","path":"aws-cdk-bedrock-prompt-override-1/CustomParserActionFunction/LambdaInvocationPolicy-c8cded76e8ed1a75","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnPermission","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Permission","aws:cdk:cloudformation:props":{"action":"lambda:InvokeFunction","functionName":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},"principal":"bedrock.amazonaws.com","sourceAccount":{"Ref":"AWS::AccountId"}}}}}},"ParserFunction":{"id":"ParserFunction","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.Function","version":"0.0.0","metadata":[{"runtime":"*","handler":"*","code":"*"}]},"children":{"ServiceRole":{"id":"ServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"assumedBy":{"principalAccount":"*","assumeRoleAction":"*"},"managedPolicies":[{"managedPolicyArn":"*"}]}]},"children":{"ImportServiceRole":{"id":"ImportServiceRole","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/ImportServiceRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/ServiceRole/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"}}],"Version":"2012-10-17"},"managedPolicyArns":[{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]]}]}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/ParserFunction/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_lambda.CfnFunction","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Lambda::Function","aws:cdk:cloudformation:props":{"code":{"zipFile":"\n exports.handler = async (event) => {\n console.log('Parser Event:', JSON.stringify(event));\n // Extract the raw model response\n const rawResponse = event.invokeModelRawResponse;\n \n // Simple parsing logic - in a real scenario, this would be more sophisticated\n const parsedResponse = {\n messageVersion: '1.0',\n response: rawResponse\n };\n \n return parsedResponse;\n };\n "},"handler":"index.handler","role":{"Fn::GetAtt":["ParserFunctionServiceRole59DD83FB","Arn"]},"runtime":"nodejs18.x"}}}}},"AgentWithPromptOverride":{"id":"AgentWithPromptOverride","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockprompithpromptoverride-1d113fbe-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithPromptOverrideRoleDefaultPolicy348076D7","roles":[{"Ref":"AgentWithPromptOverrideRoleA0EB6013"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["PromptOverrideFunctionD82AB437","Arn"]}},"actionGroupName":"PromptOverrideActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing prompt override configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-prompt-override","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithPromptOverrideRoleA0EB6013","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using prompt override configuration with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"promptConfigurations":[{"promptType":"PRE_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user request: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"POST_PROCESSING","promptState":"ENABLED","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Refine this response to be more concise and helpful: {{response}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithPromptOverride/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"AgentWithCustomParser":{"id":"AgentWithCustomParser","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.Agent","version":"0.0.0","metadata":[]},"children":{"Role":{"id":"Role","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Role","version":"0.0.0","metadata":[{"roleName":"*","assumedBy":{"principalAccount":"*","assumeRoleAction":"*"}},{"addToPrincipalPolicy":[{}]},{"attachInlinePolicy":["*"]},{"attachInlinePolicy":["*"]},{"addToPrincipalPolicy":[{}]}]},"children":{"ImportRole":{"id":"ImportRole","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/ImportRole","constructInfo":{"fqn":"aws-cdk-lib.Resource","version":"0.0.0","metadata":["*"]}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnRole","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Role","aws:cdk:cloudformation:props":{"assumeRolePolicyDocument":{"Statement":[{"Action":"sts:AssumeRole","Condition":{"StringEquals":{"aws:SourceAccount":{"Ref":"AWS::AccountId"}},"ArnLike":{"aws:SourceArn":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},":",{"Ref":"AWS::AccountId"},":agent/*"]]}}},"Effect":"Allow","Principal":{"Service":"bedrock.amazonaws.com"}}],"Version":"2012-10-17"},"roleName":"agent-awscdkbedrockpromptwithcustomparser-6ab08a50-bedrockagent"}}},"DefaultPolicy":{"id":"DefaultPolicy","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.Policy","version":"0.0.0","metadata":["*",{"attachToRole":["*"]},{"attachToRole":["*"]},{"addStatements":[{}]},{"addStatements":[{}]}]},"children":{"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Role/DefaultPolicy/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_iam.CfnPolicy","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::IAM::Policy","aws:cdk:cloudformation:props":{"policyDocument":{"Statement":[{"Action":"lambda:InvokeFunction","Effect":"Allow","Resource":[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},{"Fn::Join":["",[{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]},":*"]]}]},{"Action":["bedrock:GetFoundationModel","bedrock:InvokeModel*"],"Effect":"Allow","Resource":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]}}],"Version":"2012-10-17"},"policyName":"AgentWithCustomParserRoleDefaultPolicy00D4B90E","roles":[{"Ref":"AgentWithCustomParserRole29295FCD"}]}}}}}}},"Resource":{"id":"Resource","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/Resource","constructInfo":{"fqn":"aws-cdk-lib.aws_bedrock.CfnAgent","version":"0.0.0"},"attributes":{"aws:cdk:cloudformation:type":"AWS::Bedrock::Agent","aws:cdk:cloudformation:props":{"actionGroups":[{"actionGroupName":"UserInputAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.UserInput","skipResourceInUseCheckOnDelete":false},{"actionGroupName":"CodeInterpreterAction","actionGroupState":"DISABLED","parentActionGroupSignature":"AMAZON.CodeInterpreter","skipResourceInUseCheckOnDelete":false},{"actionGroupExecutor":{"lambda":{"Fn::GetAtt":["CustomParserActionFunction3DAF0C7A","Arn"]}},"actionGroupName":"CustomParserActionGroup","actionGroupState":"ENABLED","apiSchema":{"payload":"\nopenapi: 3.0.3\ninfo:\n title: Simple API\n version: 1.0.0\npaths:\n /hello:\n get:\n operationId: helloWorld\n summary: Say hello\n description: Returns a greeting message\n responses:\n '200':\n description: Successful response\n content:\n application/json:\n schema:\n type: object\n properties:\n message:\n type: string\n"},"description":"An action group for testing custom parser configuration","skipResourceInUseCheckOnDelete":false}],"agentName":"agent-with-custom-parser","agentResourceRoleArn":{"Fn::GetAtt":["AgentWithCustomParserRole29295FCD","Arn"]},"autoPrepare":false,"foundationModel":{"Fn::Join":["",["arn:",{"Ref":"AWS::Partition"},":bedrock:",{"Ref":"AWS::Region"},"::foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0"]]},"idleSessionTtlInSeconds":600,"instruction":"This is an agent using custom parser with at least 40 characters of instruction","orchestrationType":"DEFAULT","promptOverrideConfiguration":{"overrideLambda":{"Fn::GetAtt":["ParserFunctionE8A187F2","Arn"]},"promptConfigurations":[{"promptType":"PRE_PROCESSING","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Process this user input and prepare it for orchestration: {{user_input}}\"}]}","inferenceConfiguration":{"temperature":0.2,"topP":0.9,"topK":250,"maximumLength":2048,"stopSequences":[]}},{"promptType":"MEMORY_SUMMARIZATION","parserMode":"OVERRIDDEN","promptCreationMode":"OVERRIDDEN","basePromptTemplate":"{\"messages\":[{\"role\":\"user\",\"content\":\"Summarize this conversation for memory: {{conversation_history}}\"}]}","inferenceConfiguration":{"temperature":0.1,"topP":0.95,"topK":100,"maximumLength":1024,"stopSequences":[]}}]},"skipResourceInUseCheckOnDelete":true}}},"DefaultAlias":{"id":"DefaultAlias","path":"aws-cdk-bedrock-prompt-override-1/AgentWithCustomParser/DefaultAlias","constructInfo":{"fqn":"@aws-cdk/aws-bedrock-alpha.AgentAliasBase","version":"0.0.0","metadata":[]}}}},"BootstrapVersion":{"id":"BootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"aws-cdk-bedrock-prompt-override-1/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}},"BedrockPromptOverride":{"id":"BedrockPromptOverride","path":"BedrockPromptOverride","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTest","version":"0.0.0"},"children":{"DefaultTest":{"id":"DefaultTest","path":"BedrockPromptOverride/DefaultTest","constructInfo":{"fqn":"@aws-cdk/integ-tests-alpha.IntegTestCase","version":"0.0.0"},"children":{"Default":{"id":"Default","path":"BedrockPromptOverride/DefaultTest/Default","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}},"DeployAssert":{"id":"DeployAssert","path":"BedrockPromptOverride/DefaultTest/DeployAssert","constructInfo":{"fqn":"aws-cdk-lib.Stack","version":"0.0.0"},"children":{"BootstrapVersion":{"id":"BootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/BootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnParameter","version":"0.0.0"}},"CheckBootstrapVersion":{"id":"CheckBootstrapVersion","path":"BedrockPromptOverride/DefaultTest/DeployAssert/CheckBootstrapVersion","constructInfo":{"fqn":"aws-cdk-lib.CfnRule","version":"0.0.0"}}}}}}}},"Tree":{"id":"Tree","path":"Tree","constructInfo":{"fqn":"constructs.Construct","version":"10.4.2"}}}}} \ No newline at end of file From cfdb45f04a9504d5a1c5851ae67c4a87d01da306 Mon Sep 17 00:00:00 2001 From: dinsajwa Date: Thu, 5 Jun 2025 10:39:17 -0400 Subject: [PATCH 39/39] fix(bedrockl2): renamed Iinbovke to Ibedrockinvoke --- packages/@aws-cdk/aws-bedrock-alpha/README.md | 2 +- .../@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts | 6 +++--- .../aws-bedrock-alpha/bedrock/agents/prompt-override.ts | 6 +++--- packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts | 4 ++-- .../test/bedrock/agents/action-group.test.ts | 2 +- .../aws-bedrock-alpha/test/bedrock/agents/agent.test.ts | 2 +- .../test/bedrock/agents/api-executor.test.ts | 2 +- .../aws-bedrock-alpha/test/bedrock/agents/memory.test.ts | 2 +- .../test/bedrock/agents/prompt-override.test.ts | 8 ++++---- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/@aws-cdk/aws-bedrock-alpha/README.md b/packages/@aws-cdk/aws-bedrock-alpha/README.md index 2e16f4756883b..e1e24a303976f 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/README.md +++ b/packages/@aws-cdk/aws-bedrock-alpha/README.md @@ -60,7 +60,7 @@ The Bedrock Agent class supports the following properties. |---|---|---|---| | name | string | No | The name of the agent. Defaults to a name generated by CDK | | instruction | string | Yes | The instruction used by the agent that determines how it will perform its task. Must have a minimum of 40 characters | -| foundationModel | IInvokable | Yes | The foundation model used for orchestration by the agent | +| foundationModel | IBedrockInvokable | Yes | The foundation model used for orchestration by the agent | | existingRole | iam.IRole | No | The existing IAM Role for the agent to use. Must have a trust policy allowing Bedrock service to assume the role. Defaults to a new created role | | shouldPrepareAgent | boolean | No | Specifies whether to automatically update the `DRAFT` version of the agent after making changes. Defaults to false | | idleSessionTTL | Duration | No | How long sessions should be kept open for the agent. Session expires if no conversation occurs during this time. Defaults to 1 hour | diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 24eba68940047..948a8068a38d6 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -15,7 +15,7 @@ import { AgentCollaboration } from './agent-collaboration'; import { PromptOverrideConfiguration } from './prompt-override'; import { AssetApiSchema, S3ApiSchema } from './api-schema'; import * as validation from './validation-helpers'; -import { IInvokable } from '.././models'; +import { IBedrockInvokable } from '.././models'; import { Memory } from './memory'; import { CustomOrchestrationExecutor, OrchestrationType } from './orchestration-executor'; @@ -198,7 +198,7 @@ export interface AgentProps { /** * The foundation model used for orchestration by the agent. */ - readonly foundationModel: IInvokable; + readonly foundationModel: IBedrockInvokable; /** * An existing IAM Role to associate with this agent. * Use this property when you want to reuse an existing IAM role rather than create a new one. @@ -416,7 +416,7 @@ export class Agent extends AgentBase implements IAgent { private readonly ROLE_NAME_SUFFIX = '-bedrockagent'; private readonly MAXLENGTH_FOR_ROLE_NAME = 64; private readonly idleSessionTTL: Duration; - private readonly foundationModel: IInvokable; + private readonly foundationModel: IBedrockInvokable; private readonly userInputEnabled: boolean; private readonly codeInterpreterEnabled: boolean; private readonly agentCollaboration?: AgentCollaboration; diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts index 4d06919c91d01..54637a46075d3 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/prompt-override.ts @@ -1,7 +1,7 @@ import { CfnAgent } from 'aws-cdk-lib/aws-bedrock'; import { IFunction } from 'aws-cdk-lib/aws-lambda'; import * as validation from './validation-helpers'; -import { IInvokable } from '../models'; +import { IBedrockInvokable } from '../models'; /** * The step in the agent sequence that this prompt configuration applies to. @@ -164,7 +164,7 @@ export interface PromptRoutingClassifierConfigCustomParser extends PromptStepCon * The foundation model to use for the routing classifier step. * This is required for the routing classifier step. */ - readonly foundationModel: IInvokable; + readonly foundationModel: IBedrockInvokable; } /** @@ -444,7 +444,7 @@ export class PromptOverrideConfiguration { // Validate routing classifier's foundation model if provided if (props.routingClassifierStep?.foundationModel) { if (!props.routingClassifierStep.foundationModel.invokableArn) { - errors.push('Foundation model must be a valid IInvokable with an invokableArn'); + errors.push('Foundation model must be a valid IBedrockInvokable with an invokableArn'); } } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts index 7e6d1a3d13d49..a9969e16f7686 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/models.ts @@ -37,7 +37,7 @@ export enum VectorType { * run the `Invoke` API. This can be a Foundational Model, * a Custom Model, or an Inference Profile. */ -export interface IInvokable { +export interface IBedrockInvokable { /** * The ARN of the Bedrock invokable abstraction. */ @@ -118,7 +118,7 @@ export interface BedrockFoundationModelProps { * If you need to use a model name that doesn't exist as a static member, you * can instantiate a `BedrockFoundationModel` object, e.g: `new BedrockFoundationModel('my-model')`. */ -export class BedrockFoundationModel implements IInvokable { +export class BedrockFoundationModel implements IBedrockInvokable { /**************************************************************************** * AI21 ***************************************************************************/ diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts index c5e8ecf9f3a4b..fa60e0454d790 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/action-group.test.ts @@ -6,7 +6,7 @@ import * as bedrock from '../../../lib'; describe('AgentActionGroup', () => { let stack: core.Stack; - let foundationModel: bedrock.IInvokable; + let foundationModel: bedrock.IBedrockInvokable; beforeEach(() => { const app = new App(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts index 0de7ff484c6fb..377d0ce51a839 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -8,7 +8,7 @@ import * as bedrock from '../../../bedrock'; describe('Agent', () => { let stack: core.Stack; - let foundationModel: bedrock.IInvokable; + let foundationModel: bedrock.IBedrockInvokable; beforeEach(() => { const app = new App(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts index d73ab18fdaede..a05764f8a2b54 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/api-executor.test.ts @@ -7,7 +7,7 @@ import * as bedrock from '../../../lib'; describe('AgentActionGroupExecutor', () => { let stack: core.Stack; - let foundationModel: bedrock.IInvokable; + let foundationModel: bedrock.IBedrockInvokable; beforeEach(() => { const app = new App(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts index e2fb2e55406f6..56788495884ac 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/memory.test.ts @@ -7,7 +7,7 @@ import * as bedrock from '../../../lib'; describe('Memory', () => { let stack: core.Stack; - let foundationModel: bedrock.IInvokable; + let foundationModel: bedrock.IBedrockInvokable; beforeEach(() => { const app = new App(); diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts index e083a45eb8ad0..9d91a997ab5e7 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/prompt-override.test.ts @@ -8,11 +8,11 @@ import { PromptOrchestrationConfigCustomParser, PromptPostProcessingConfigCustomParser, } from '../../../bedrock/agents/prompt-override'; -import { IInvokable } from '../../../bedrock/models'; +import { IBedrockInvokable } from '../../../bedrock/models'; describe('PromptOverrideConfiguration', () => { let stack: Stack; - let mockFoundationModel: IInvokable; + let mockFoundationModel: IBedrockInvokable; beforeEach(() => { stack = new Stack(); @@ -314,10 +314,10 @@ describe('PromptOverrideConfiguration', () => { PromptOverrideConfiguration.fromSteps([ { stepType: AgentStepType.ROUTING_CLASSIFIER, - foundationModel: {} as IInvokable, + foundationModel: {} as IBedrockInvokable, } as PromptRoutingClassifierConfigCustomParser, ]); - }).toThrow('Foundation model must be a valid IInvokable with an invokableArn'); + }).toThrow('Foundation model must be a valid IBedrockInvokable with an invokableArn'); }); });