From 9366e69d8889b62ebfc9d517e831fb44d0ce9e04 Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Tue, 23 Jul 2024 16:35:37 -0700
Subject: [PATCH] Add AWS bedrock support for LLM + agents (#1935)

add AWS bedrock support for LLM + agents
---
 README.md                                     |    1 +
 docker/.env.example                           |    7 +
 .../AwsBedrockLLMOptions/index.jsx            |  122 ++
 .../AwsBedrockLLMOptions/regions.js           |  204 ++++
 frontend/src/hooks/useGetProvidersModels.js   |    2 +
 frontend/src/media/llmprovider/bedrock.png    |  Bin 0 -> 57786 bytes
 .../GeneralSettings/LLMPreference/index.jsx   |   16 +
 .../Steps/DataHandling/index.jsx              |    8 +
 .../Steps/LLMPreference/index.jsx             |    9 +
 .../AgentConfig/AgentLLMSelection/index.jsx   |    1 +
 .../WorkspaceLLMSelection/index.jsx           |    7 +-
 server/models/systemSettings.js               |    6 +
 server/package.json                           |    3 +-
 server/utils/AiProviders/bedrock/index.js     |  217 ++++
 server/utils/agents/aibitat/index.js          |    2 +
 .../agents/aibitat/providers/ai-provider.js   |   11 +
 .../utils/agents/aibitat/providers/bedrock.js |  136 +++
 .../utils/agents/aibitat/providers/index.js   |    2 +
 server/utils/agents/index.js                  |   15 +-
 server/utils/helpers/index.js                 |    3 +
 server/utils/helpers/updateENV.js             |   23 +
 server/yarn.lock                              | 1046 +++++++++++++++++
 22 files changed, 1838 insertions(+), 3 deletions(-)
 create mode 100644 frontend/src/components/LLMSelection/AwsBedrockLLMOptions/index.jsx
 create mode 100644 frontend/src/components/LLMSelection/AwsBedrockLLMOptions/regions.js
 create mode 100644 frontend/src/media/llmprovider/bedrock.png
 create mode 100644 server/utils/AiProviders/bedrock/index.js
 create mode 100644 server/utils/agents/aibitat/providers/bedrock.js

diff --git a/README.md b/README.md
index 38bbda9e9..dad242a2a 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,7 @@ Some cool features of AnythingLLM
 - [OpenAI](https://openai.com)
 - [OpenAI (Generic)](https://openai.com)
 - [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service)
+- [AWS Bedrock](https://aws.amazon.com/bedrock/)
 - [Anthropic](https://www.anthropic.com/)
 - [Google Gemini Pro](https://ai.google.dev/)
 - [Hugging Face (chat models)](https://huggingface.co/)
diff --git a/docker/.env.example b/docker/.env.example
index 38b980880..56be87cb4 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -94,6 +94,13 @@ GID='1000'
 # COHERE_API_KEY=
 # COHERE_MODEL_PREF='command-r'
 
+# LLM_PROVIDER='bedrock'
+# AWS_BEDROCK_LLM_ACCESS_KEY_ID=
+# AWS_BEDROCK_LLM_ACCESS_KEY=
+# AWS_BEDROCK_LLM_REGION=us-west-2
+# AWS_BEDROCK_LLM_MODEL_PREFERENCE=meta.llama3-1-8b-instruct-v1:0
+# AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT=8191
+
 ###########################################
 ######## Embedding API SElECTION ##########
 ###########################################
diff --git a/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/index.jsx b/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/index.jsx
new file mode 100644
index 000000000..20686f2e1
--- /dev/null
+++ b/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/index.jsx
@@ -0,0 +1,122 @@
+import { ArrowSquareOut, Info } from "@phosphor-icons/react";
+import { AWS_REGIONS } from "./regions";
+
+export default function AwsBedrockLLMOptions({ settings }) {
+  return (
+    <div className="w-full flex flex-col">
+      {!settings?.credentialsOnly && (
+        <div className="flex flex-col md:flex-row md:items-center gap-x-2 text-white mb-4 bg-blue-800/30 w-fit rounded-lg px-4 py-2">
+          <div className="gap-x-2 flex items-center">
+            <Info size={40} />
+            <p className="text-base">
+              You should use a properly defined IAM user for inferencing.
+              <br />
+              <a
+                href="https://docs.useanything.com/setup/llm-configuration/cloud/aws-bedrock"
+                target="_blank"
+                className="underline flex gap-x-1 items-center"
+              >
+                Read more on how to use AWS Bedrock in AnythingLLM
+                <ArrowSquareOut size={14} />
+              </a>
+            </p>
+          </div>
+        </div>
+      )}
+
+      <div className="w-full flex items-center gap-[36px] my-1.5">
+        <div className="flex flex-col w-60">
+          <label className="text-white text-sm font-semibold block mb-3">
+            AWS Bedrock IAM Access ID
+          </label>
+          <input
+            type="password"
+            name="AwsBedrockLLMAccessKeyId"
+            className="border-none bg-zinc-900 text-white placeholder:text-white/20 text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5"
+            placeholder="AWS Bedrock IAM User Access ID"
+            defaultValue={
+              settings?.AwsBedrockLLMAccessKeyId ? "*".repeat(20) : ""
+            }
+            required={true}
+            autoComplete="off"
+            spellCheck={false}
+          />
+        </div>
+        <div className="flex flex-col w-60">
+          <label className="text-white text-sm font-semibold block mb-3">
+            AWS Bedrock IAM Access Key
+          </label>
+          <input
+            type="password"
+            name="AwsBedrockLLMAccessKey"
+            className="border-none bg-zinc-900 text-white placeholder:text-white/20 text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5"
+            placeholder="AWS Bedrock IAM User Access Key"
+            defaultValue={
+              settings?.AwsBedrockLLMAccessKey ? "*".repeat(20) : ""
+            }
+            required={true}
+            autoComplete="off"
+            spellCheck={false}
+          />
+        </div>
+        <div className="flex flex-col w-60">
+          <label className="text-white text-sm font-semibold block mb-3">
+            AWS region
+          </label>
+          <select
+            name="AwsBedrockLLMRegion"
+            defaultValue={settings?.AwsBedrockLLMRegion || "us-west-2"}
+            required={true}
+            className="border-none bg-zinc-900 border-gray-500 text-white text-sm rounded-lg block w-full p-2.5"
+          >
+            {AWS_REGIONS.map((region) => {
+              return (
+                <option key={region.code} value={region.code}>
+                  {region.name} ({region.code})
+                </option>
+              );
+            })}
+          </select>
+        </div>
+      </div>
+
+      <div className="w-full flex items-center gap-[36px] my-1.5">
+        {!settings?.credentialsOnly && (
+          <>
+            <div className="flex flex-col w-60">
+              <label className="text-white text-sm font-semibold block mb-3">
+                Model ID
+              </label>
+              <input
+                type="text"
+                name="AwsBedrockLLMModel"
+                className="border-none bg-zinc-900 text-white placeholder:text-white/20 text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5"
+                placeholder="Model id from AWS eg: meta.llama3.1-v0.1"
+                defaultValue={settings?.AwsBedrockLLMModel}
+                required={true}
+                autoComplete="off"
+                spellCheck={false}
+              />
+            </div>
+            <div className="flex flex-col w-60">
+              <label className="text-white text-sm font-semibold block mb-3">
+                Model context window
+              </label>
+              <input
+                type="number"
+                name="AwsBedrockLLMTokenLimit"
+                className="border-none bg-zinc-900 text-white placeholder:text-white/20 text-sm rounded-lg focus:outline-primary-button active:outline-primary-button outline-none block w-full p-2.5"
+                placeholder="Content window limit (eg: 4096)"
+                min={1}
+                onScroll={(e) => e.target.blur()}
+                defaultValue={settings?.AwsBedrockLLMTokenLimit}
+                required={true}
+                autoComplete="off"
+              />
+            </div>
+          </>
+        )}
+      </div>
+    </div>
+  );
+}
diff --git a/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/regions.js b/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/regions.js
new file mode 100644
index 000000000..b490a07ee
--- /dev/null
+++ b/frontend/src/components/LLMSelection/AwsBedrockLLMOptions/regions.js
@@ -0,0 +1,204 @@
+export const AWS_REGIONS = [
+  {
+    name: "N. Virginia",
+    full_name: "US East (N. Virginia)",
+    code: "us-east-1",
+    public: true,
+    zones: [
+      "us-east-1a",
+      "us-east-1b",
+      "us-east-1c",
+      "us-east-1d",
+      "us-east-1e",
+      "us-east-1f",
+    ],
+  },
+  {
+    name: "Ohio",
+    full_name: "US East (Ohio)",
+    code: "us-east-2",
+    public: true,
+    zones: ["us-east-2a", "us-east-2b", "us-east-2c"],
+  },
+  {
+    name: "N. California",
+    full_name: "US West (N. California)",
+    code: "us-west-1",
+    public: true,
+    zone_limit: 2,
+    zones: ["us-west-1a", "us-west-1b", "us-west-1c"],
+  },
+  {
+    name: "Oregon",
+    full_name: "US West (Oregon)",
+    code: "us-west-2",
+    public: true,
+    zones: ["us-west-2a", "us-west-2b", "us-west-2c", "us-west-2d"],
+  },
+  {
+    name: "GovCloud West",
+    full_name: "AWS GovCloud (US)",
+    code: "us-gov-west-1",
+    public: false,
+    zones: ["us-gov-west-1a", "us-gov-west-1b", "us-gov-west-1c"],
+  },
+  {
+    name: "GovCloud East",
+    full_name: "AWS GovCloud (US-East)",
+    code: "us-gov-east-1",
+    public: false,
+    zones: ["us-gov-east-1a", "us-gov-east-1b", "us-gov-east-1c"],
+  },
+  {
+    name: "Canada",
+    full_name: "Canada (Central)",
+    code: "ca-central-1",
+    public: true,
+    zones: ["ca-central-1a", "ca-central-1b", "ca-central-1c", "ca-central-1d"],
+  },
+  {
+    name: "Stockholm",
+    full_name: "EU (Stockholm)",
+    code: "eu-north-1",
+    public: true,
+    zones: ["eu-north-1a", "eu-north-1b", "eu-north-1c"],
+  },
+  {
+    name: "Ireland",
+    full_name: "EU (Ireland)",
+    code: "eu-west-1",
+    public: true,
+    zones: ["eu-west-1a", "eu-west-1b", "eu-west-1c"],
+  },
+  {
+    name: "London",
+    full_name: "EU (London)",
+    code: "eu-west-2",
+    public: true,
+    zones: ["eu-west-2a", "eu-west-2b", "eu-west-2c"],
+  },
+  {
+    name: "Paris",
+    full_name: "EU (Paris)",
+    code: "eu-west-3",
+    public: true,
+    zones: ["eu-west-3a", "eu-west-3b", "eu-west-3c"],
+  },
+  {
+    name: "Frankfurt",
+    full_name: "EU (Frankfurt)",
+    code: "eu-central-1",
+    public: true,
+    zones: ["eu-central-1a", "eu-central-1b", "eu-central-1c"],
+  },
+  {
+    name: "Milan",
+    full_name: "EU (Milan)",
+    code: "eu-south-1",
+    public: true,
+    zones: ["eu-south-1a", "eu-south-1b", "eu-south-1c"],
+  },
+  {
+    name: "Cape Town",
+    full_name: "Africa (Cape Town)",
+    code: "af-south-1",
+    public: true,
+    zones: ["af-south-1a", "af-south-1b", "af-south-1c"],
+  },
+  {
+    name: "Tokyo",
+    full_name: "Asia Pacific (Tokyo)",
+    code: "ap-northeast-1",
+    public: true,
+    zone_limit: 3,
+    zones: [
+      "ap-northeast-1a",
+      "ap-northeast-1b",
+      "ap-northeast-1c",
+      "ap-northeast-1d",
+    ],
+  },
+  {
+    name: "Seoul",
+    full_name: "Asia Pacific (Seoul)",
+    code: "ap-northeast-2",
+    public: true,
+    zones: [
+      "ap-northeast-2a",
+      "ap-northeast-2b",
+      "ap-northeast-2c",
+      "ap-northeast-2d",
+    ],
+  },
+  {
+    name: "Osaka",
+    full_name: "Asia Pacific (Osaka-Local)",
+    code: "ap-northeast-3",
+    public: true,
+    zones: ["ap-northeast-3a", "ap-northeast-3b", "ap-northeast-3c"],
+  },
+  {
+    name: "Singapore",
+    full_name: "Asia Pacific (Singapore)",
+    code: "ap-southeast-1",
+    public: true,
+    zones: ["ap-southeast-1a", "ap-southeast-1b", "ap-southeast-1c"],
+  },
+  {
+    name: "Sydney",
+    full_name: "Asia Pacific (Sydney)",
+    code: "ap-southeast-2",
+    public: true,
+    zones: ["ap-southeast-2a", "ap-southeast-2b", "ap-southeast-2c"],
+  },
+  {
+    name: "Jakarta",
+    full_name: "Asia Pacific (Jakarta)",
+    code: "ap-southeast-3",
+    public: true,
+    zones: ["ap-southeast-3a", "ap-southeast-3b", "ap-southeast-3c"],
+  },
+  {
+    name: "Hong Kong",
+    full_name: "Asia Pacific (Hong Kong)",
+    code: "ap-east-1",
+    public: true,
+    zones: ["ap-east-1a", "ap-east-1b", "ap-east-1c"],
+  },
+  {
+    name: "Mumbai",
+    full_name: "Asia Pacific (Mumbai)",
+    code: "ap-south-1",
+    public: true,
+    zones: ["ap-south-1a", "ap-south-1b", "ap-south-1c"],
+  },
+  {
+    name: "São Paulo",
+    full_name: "South America (São Paulo)",
+    code: "sa-east-1",
+    public: true,
+    zone_limit: 2,
+    zones: ["sa-east-1a", "sa-east-1b", "sa-east-1c"],
+  },
+  {
+    name: "Bahrain",
+    full_name: "Middle East (Bahrain)",
+    code: "me-south-1",
+    public: true,
+    zones: ["me-south-1a", "me-south-1b", "me-south-1c"],
+  },
+  {
+    name: "Beijing",
+    full_name: "China (Beijing)",
+    code: "cn-north-1",
+    public: false,
+    zones: ["cn-north-1a", "cn-north-1b", "cn-north-1c"],
+  },
+  {
+    name: "Ningxia",
+    full_name: "China (Ningxia)",
+    code: "cn-northwest-1",
+    public: false,
+    zones: ["cn-northwest-1a", "cn-northwest-1b", "cn-northwest-1c"],
+  },
+];
diff --git a/frontend/src/hooks/useGetProvidersModels.js b/frontend/src/hooks/useGetProvidersModels.js
index 051c97ed7..e118f5e74 100644
--- a/frontend/src/hooks/useGetProvidersModels.js
+++ b/frontend/src/hooks/useGetProvidersModels.js
@@ -8,6 +8,7 @@ export const DISABLED_PROVIDERS = [
   "native",
   "textgenwebui",
   "generic-openai",
+  "bedrock",
 ];
 const PROVIDER_DEFAULT_MODELS = {
   openai: [],
@@ -48,6 +49,7 @@ const PROVIDER_DEFAULT_MODELS = {
   ],
   textgenwebui: [],
   "generic-openai": [],
+  bedrock: [],
 };
 
 // For togetherAi, which has a large model list - we subgroup the options
diff --git a/frontend/src/media/llmprovider/bedrock.png b/frontend/src/media/llmprovider/bedrock.png
new file mode 100644
index 0000000000000000000000000000000000000000..58a74acb03a39713e9b712742196f565820d17b0
GIT binary patch
literal 57786
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
Ib4q9e0IIj`<NyEw

literal 0
HcmV?d00001

diff --git a/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx b/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx
index 2baa0c6c8..148409d6b 100644
--- a/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx
+++ b/frontend/src/pages/GeneralSettings/LLMPreference/index.jsx
@@ -23,6 +23,8 @@ import KoboldCPPLogo from "@/media/llmprovider/koboldcpp.png";
 import TextGenWebUILogo from "@/media/llmprovider/text-generation-webui.png";
 import CohereLogo from "@/media/llmprovider/cohere.png";
 import LiteLLMLogo from "@/media/llmprovider/litellm.png";
+import AWSBedrockLogo from "@/media/llmprovider/bedrock.png";
+
 import PreLoader from "@/components/Preloader";
 import OpenAiOptions from "@/components/LLMSelection/OpenAiOptions";
 import GenericOpenAiOptions from "@/components/LLMSelection/GenericOpenAiOptions";
@@ -43,6 +45,7 @@ import CohereAiOptions from "@/components/LLMSelection/CohereAiOptions";
 import KoboldCPPOptions from "@/components/LLMSelection/KoboldCPPOptions";
 import TextGenWebUIOptions from "@/components/LLMSelection/TextGenWebUIOptions";
 import LiteLLMOptions from "@/components/LLMSelection/LiteLLMOptions";
+import AWSBedrockLLMOptions from "@/components/LLMSelection/AwsBedrockLLMOptions";
 
 import LLMItem from "@/components/LLMSelection/LLMItem";
 import { CaretUpDown, MagnifyingGlass, X } from "@phosphor-icons/react";
@@ -211,6 +214,19 @@ export const AVAILABLE_LLM_PROVIDERS = [
       "GenericOpenAiKey",
     ],
   },
+  {
+    name: "AWS Bedrock",
+    value: "bedrock",
+    logo: AWSBedrockLogo,
+    options: (settings) => <AWSBedrockLLMOptions settings={settings} />,
+    description: "Run powerful foundation models privately with AWS Bedrock.",
+    requiredConfig: [
+      "AwsBedrockLLMAccessKeyId",
+      "AwsBedrockLLMAccessKey",
+      "AwsBedrockLLMRegion",
+      "AwsBedrockLLMModel",
+    ],
+  },
   {
     name: "Native",
     value: "native",
diff --git a/frontend/src/pages/OnboardingFlow/Steps/DataHandling/index.jsx b/frontend/src/pages/OnboardingFlow/Steps/DataHandling/index.jsx
index 1b3bf360b..372a65236 100644
--- a/frontend/src/pages/OnboardingFlow/Steps/DataHandling/index.jsx
+++ b/frontend/src/pages/OnboardingFlow/Steps/DataHandling/index.jsx
@@ -18,6 +18,7 @@ import GroqLogo from "@/media/llmprovider/groq.png";
 import KoboldCPPLogo from "@/media/llmprovider/koboldcpp.png";
 import TextGenWebUILogo from "@/media/llmprovider/text-generation-webui.png";
 import LiteLLMLogo from "@/media/llmprovider/litellm.png";
+import AWSBedrockLogo from "@/media/llmprovider/bedrock.png";
 
 import CohereLogo from "@/media/llmprovider/cohere.png";
 import ZillizLogo from "@/media/vectordbs/zilliz.png";
@@ -179,6 +180,13 @@ export const LLM_SELECTION_PRIVACY = {
     ],
     logo: LiteLLMLogo,
   },
+  bedrock: {
+    name: "AWS Bedrock",
+    description: [
+      "You model and chat contents are subject to the agreed EULA for AWS and the model provider on aws.amazon.com",
+    ],
+    logo: AWSBedrockLogo,
+  },
 };
 
 export const VECTOR_DB_PRIVACY = {
diff --git a/frontend/src/pages/OnboardingFlow/Steps/LLMPreference/index.jsx b/frontend/src/pages/OnboardingFlow/Steps/LLMPreference/index.jsx
index 5d2ec337f..aab026896 100644
--- a/frontend/src/pages/OnboardingFlow/Steps/LLMPreference/index.jsx
+++ b/frontend/src/pages/OnboardingFlow/Steps/LLMPreference/index.jsx
@@ -18,6 +18,7 @@ import GroqLogo from "@/media/llmprovider/groq.png";
 import KoboldCPPLogo from "@/media/llmprovider/koboldcpp.png";
 import TextGenWebUILogo from "@/media/llmprovider/text-generation-webui.png";
 import LiteLLMLogo from "@/media/llmprovider/litellm.png";
+import AWSBedrockLogo from "@/media/llmprovider/bedrock.png";
 
 import CohereLogo from "@/media/llmprovider/cohere.png";
 import OpenAiOptions from "@/components/LLMSelection/OpenAiOptions";
@@ -39,6 +40,7 @@ import CohereAiOptions from "@/components/LLMSelection/CohereAiOptions";
 import KoboldCPPOptions from "@/components/LLMSelection/KoboldCPPOptions";
 import TextGenWebUIOptions from "@/components/LLMSelection/TextGenWebUIOptions";
 import LiteLLMOptions from "@/components/LLMSelection/LiteLLMOptions";
+import AWSBedrockLLMOptions from "@/components/LLMSelection/AwsBedrockLLMOptions";
 
 import LLMItem from "@/components/LLMSelection/LLMItem";
 import System from "@/models/system";
@@ -182,6 +184,13 @@ const LLMS = [
     description:
       "Connect to any OpenAi-compatible service via a custom configuration",
   },
+  {
+    name: "AWS Bedrock",
+    value: "bedrock",
+    logo: AWSBedrockLogo,
+    options: (settings) => <AWSBedrockLLMOptions settings={settings} />,
+    description: "Run powerful foundation models privately with AWS Bedrock.",
+  },
   {
     name: "Native",
     value: "native",
diff --git a/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/index.jsx b/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/index.jsx
index 3e5ad64db..02c9a671c 100644
--- a/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/index.jsx
+++ b/frontend/src/pages/WorkspaceSettings/AgentConfig/AgentLLMSelection/index.jsx
@@ -21,6 +21,7 @@ const ENABLED_PROVIDERS = [
   "perplexity",
   "textgenwebui",
   "generic-openai",
+  "bedrock",
   // TODO: More agent support.
   // "cohere",         // Has tool calling and will need to build explicit support
   // "huggingface"     // Can be done but already has issues with no-chat templated. Needs to be tested.
diff --git a/frontend/src/pages/WorkspaceSettings/ChatSettings/WorkspaceLLMSelection/index.jsx b/frontend/src/pages/WorkspaceSettings/ChatSettings/WorkspaceLLMSelection/index.jsx
index 72f170474..c1841929c 100644
--- a/frontend/src/pages/WorkspaceSettings/ChatSettings/WorkspaceLLMSelection/index.jsx
+++ b/frontend/src/pages/WorkspaceSettings/ChatSettings/WorkspaceLLMSelection/index.jsx
@@ -10,7 +10,12 @@ import paths from "@/utils/paths";
 
 // Some providers can only be associated with a single model.
 // In that case there is no selection to be made so we can just move on.
-const NO_MODEL_SELECTION = ["default", "huggingface", "generic-openai"];
+const NO_MODEL_SELECTION = [
+  "default",
+  "huggingface",
+  "generic-openai",
+  "bedrock",
+];
 const DISABLED_PROVIDERS = ["azure", "lmstudio", "native"];
 const LLM_DEFAULT = {
   name: "System default",
diff --git a/server/models/systemSettings.js b/server/models/systemSettings.js
index cf5219d37..6f5b4238d 100644
--- a/server/models/systemSettings.js
+++ b/server/models/systemSettings.js
@@ -465,6 +465,12 @@ const SystemSettings = {
       GenericOpenAiKey: !!process.env.GENERIC_OPEN_AI_API_KEY,
       GenericOpenAiMaxTokens: process.env.GENERIC_OPEN_AI_MAX_TOKENS,
 
+      AwsBedrockLLMAccessKeyId: !!process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID,
+      AwsBedrockLLMAccessKey: !!process.env.AWS_BEDROCK_LLM_ACCESS_KEY,
+      AwsBedrockLLMRegion: process.env.AWS_BEDROCK_LLM_REGION,
+      AwsBedrockLLMModel: process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE,
+      AwsBedrockLLMTokenLimit: process.env.AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT,
+
       // Cohere API Keys
       CohereApiKey: !!process.env.COHERE_API_KEY,
       CohereModelPref: process.env.COHERE_MODEL_PREF,
diff --git a/server/package.json b/server/package.json
index 0b9982402..8cd3d7aa1 100644
--- a/server/package.json
+++ b/server/package.json
@@ -28,6 +28,7 @@
     "@ladjs/graceful": "^3.2.2",
     "@lancedb/lancedb": "0.5.2",
     "@langchain/anthropic": "0.1.16",
+    "@langchain/aws": "^0.0.5",
     "@langchain/community": "0.0.53",
     "@langchain/core": "0.1.61",
     "@langchain/openai": "0.0.28",
@@ -102,4 +103,4 @@
     "nodemon": "^2.0.22",
     "prettier": "^3.0.3"
   }
-}
\ No newline at end of file
+}
diff --git a/server/utils/AiProviders/bedrock/index.js b/server/utils/AiProviders/bedrock/index.js
new file mode 100644
index 000000000..2ea439ae6
--- /dev/null
+++ b/server/utils/AiProviders/bedrock/index.js
@@ -0,0 +1,217 @@
+const { StringOutputParser } = require("@langchain/core/output_parsers");
+const {
+  writeResponseChunk,
+  clientAbortedHandler,
+} = require("../../helpers/chat/responses");
+const { NativeEmbedder } = require("../../EmbeddingEngines/native");
+
+// Docs: https://js.langchain.com/v0.2/docs/integrations/chat/bedrock_converse
+class AWSBedrockLLM {
+  constructor(embedder = null, modelPreference = null) {
+    if (!process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID)
+      throw new Error("No AWS Bedrock LLM profile id was set.");
+
+    if (!process.env.AWS_BEDROCK_LLM_ACCESS_KEY)
+      throw new Error("No AWS Bedrock LLM access key was set.");
+
+    if (!process.env.AWS_BEDROCK_LLM_REGION)
+      throw new Error("No AWS Bedrock LLM region was set.");
+
+    this.model =
+      modelPreference || process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE;
+    this.limits = {
+      history: this.promptWindowLimit() * 0.15,
+      system: this.promptWindowLimit() * 0.15,
+      user: this.promptWindowLimit() * 0.7,
+    };
+
+    this.embedder = embedder ?? new NativeEmbedder();
+    this.defaultTemp = 0.7;
+  }
+
+  #bedrockClient({ temperature = 0.7 }) {
+    const { ChatBedrockConverse } = require("@langchain/aws");
+    return new ChatBedrockConverse({
+      model: process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE,
+      region: process.env.AWS_BEDROCK_LLM_REGION,
+      credentials: {
+        accessKeyId: process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID,
+        secretAccessKey: process.env.AWS_BEDROCK_LLM_ACCESS_KEY,
+      },
+      temperature,
+    });
+  }
+
+  // For streaming we use Langchain's wrapper to handle weird chunks
+  // or otherwise absorb headaches that can arise from Ollama models
+  #convertToLangchainPrototypes(chats = []) {
+    const {
+      HumanMessage,
+      SystemMessage,
+      AIMessage,
+    } = require("@langchain/core/messages");
+    const langchainChats = [];
+    const roleToMessageMap = {
+      system: SystemMessage,
+      user: HumanMessage,
+      assistant: AIMessage,
+    };
+
+    for (const chat of chats) {
+      if (!roleToMessageMap.hasOwnProperty(chat.role)) continue;
+      const MessageClass = roleToMessageMap[chat.role];
+      langchainChats.push(new MessageClass({ content: chat.content }));
+    }
+
+    return langchainChats;
+  }
+
+  #appendContext(contextTexts = []) {
+    if (!contextTexts || !contextTexts.length) return "";
+    return (
+      "\nContext:\n" +
+      contextTexts
+        .map((text, i) => {
+          return `[CONTEXT ${i}]:\n${text}\n[END CONTEXT ${i}]\n\n`;
+        })
+        .join("")
+    );
+  }
+
+  streamingEnabled() {
+    return "streamGetChatCompletion" in this;
+  }
+
+  // Ensure the user set a value for the token limit
+  // and if undefined - assume 4096 window.
+  promptWindowLimit() {
+    const limit = process.env.AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT || 8191;
+    if (!limit || isNaN(Number(limit)))
+      throw new Error("No valid token context limit was set.");
+    return Number(limit);
+  }
+
+  async isValidChatCompletionModel(_ = "") {
+    return true;
+  }
+
+  constructPrompt({
+    systemPrompt = "",
+    contextTexts = [],
+    chatHistory = [],
+    userPrompt = "",
+  }) {
+    // AWS Mistral models do not support system prompts
+    if (this.model.startsWith("mistral"))
+      return [...chatHistory, { role: "user", content: userPrompt }];
+
+    const prompt = {
+      role: "system",
+      content: `${systemPrompt}${this.#appendContext(contextTexts)}`,
+    };
+    return [prompt, ...chatHistory, { role: "user", content: userPrompt }];
+  }
+
+  async getChatCompletion(messages = null, { temperature = 0.7 }) {
+    const model = this.#bedrockClient({ temperature });
+    const textResponse = await model
+      .pipe(new StringOutputParser())
+      .invoke(this.#convertToLangchainPrototypes(messages))
+      .catch((e) => {
+        throw new Error(
+          `AWSBedrock::getChatCompletion failed to communicate with Ollama. ${e.message}`
+        );
+      });
+
+    if (!textResponse || !textResponse.length)
+      throw new Error(`AWSBedrock::getChatCompletion text response was empty.`);
+
+    return textResponse;
+  }
+
+  async streamGetChatCompletion(messages = null, { temperature = 0.7 }) {
+    const model = this.#bedrockClient({ temperature });
+    const stream = await model
+      .pipe(new StringOutputParser())
+      .stream(this.#convertToLangchainPrototypes(messages));
+    return stream;
+  }
+
+  handleStream(response, stream, responseProps) {
+    const { uuid = uuidv4(), sources = [] } = responseProps;
+
+    return new Promise(async (resolve) => {
+      let fullText = "";
+
+      // Establish listener to early-abort a streaming response
+      // in case things go sideways or the user does not like the response.
+      // We preserve the generated text but continue as if chat was completed
+      // to preserve previously generated content.
+      const handleAbort = () => clientAbortedHandler(resolve, fullText);
+      response.on("close", handleAbort);
+
+      try {
+        for await (const chunk of stream) {
+          if (chunk === undefined)
+            throw new Error(
+              "Stream returned undefined chunk. Aborting reply - check model provider logs."
+            );
+
+          const content = chunk.hasOwnProperty("content")
+            ? chunk.content
+            : chunk;
+          fullText += content;
+          writeResponseChunk(response, {
+            uuid,
+            sources: [],
+            type: "textResponseChunk",
+            textResponse: content,
+            close: false,
+            error: false,
+          });
+        }
+
+        writeResponseChunk(response, {
+          uuid,
+          sources,
+          type: "textResponseChunk",
+          textResponse: "",
+          close: true,
+          error: false,
+        });
+        response.removeListener("close", handleAbort);
+        resolve(fullText);
+      } catch (error) {
+        writeResponseChunk(response, {
+          uuid,
+          sources: [],
+          type: "textResponseChunk",
+          textResponse: "",
+          close: true,
+          error: `AWSBedrock:streaming - could not stream chat. ${
+            error?.cause ?? error.message
+          }`,
+        });
+        response.removeListener("close", handleAbort);
+      }
+    });
+  }
+
+  // Simple wrapper for dynamic embedder & normalize interface for all LLM implementations
+  async embedTextInput(textInput) {
+    return await this.embedder.embedTextInput(textInput);
+  }
+  async embedChunks(textChunks = []) {
+    return await this.embedder.embedChunks(textChunks);
+  }
+
+  async compressMessages(promptArgs = {}, rawHistory = []) {
+    const { messageArrayCompressor } = require("../../helpers/chat");
+    const messageArray = this.constructPrompt(promptArgs);
+    return await messageArrayCompressor(this, messageArray, rawHistory);
+  }
+}
+
+module.exports = {
+  AWSBedrockLLM,
+};
diff --git a/server/utils/agents/aibitat/index.js b/server/utils/agents/aibitat/index.js
index 0fe6eb510..0d3aab1ad 100644
--- a/server/utils/agents/aibitat/index.js
+++ b/server/utils/agents/aibitat/index.js
@@ -775,6 +775,8 @@ ${this.getHistory({ to: route.to })
         return new Providers.PerplexityProvider({ model: config.model });
       case "textgenwebui":
         return new Providers.TextWebGenUiProvider({});
+      case "bedrock":
+        return new Providers.AWSBedrockProvider({});
 
       default:
         throw new Error(
diff --git a/server/utils/agents/aibitat/providers/ai-provider.js b/server/utils/agents/aibitat/providers/ai-provider.js
index 483d43b36..472f72be2 100644
--- a/server/utils/agents/aibitat/providers/ai-provider.js
+++ b/server/utils/agents/aibitat/providers/ai-provider.js
@@ -12,6 +12,7 @@
 
 const { ChatOpenAI } = require("@langchain/openai");
 const { ChatAnthropic } = require("@langchain/anthropic");
+const { ChatBedrockConverse } = require("@langchain/aws");
 const { ChatOllama } = require("@langchain/community/chat_models/ollama");
 const { toValidNumber } = require("../../../http");
 
@@ -113,6 +114,16 @@ class Provider {
           ),
           ...config,
         });
+      case "bedrock":
+        return new ChatBedrockConverse({
+          model: process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE,
+          region: process.env.AWS_BEDROCK_LLM_REGION,
+          credentials: {
+            accessKeyId: process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID,
+            secretAccessKey: process.env.AWS_BEDROCK_LLM_ACCESS_KEY,
+          },
+          ...config,
+        });
 
       // OSS Model Runners
       // case "anythingllm_ollama":
diff --git a/server/utils/agents/aibitat/providers/bedrock.js b/server/utils/agents/aibitat/providers/bedrock.js
new file mode 100644
index 000000000..819dfc405
--- /dev/null
+++ b/server/utils/agents/aibitat/providers/bedrock.js
@@ -0,0 +1,136 @@
+const Provider = require("./ai-provider.js");
+const InheritMultiple = require("./helpers/classes.js");
+const UnTooled = require("./helpers/untooled.js");
+const { ChatBedrockConverse } = require("@langchain/aws");
+const {
+  HumanMessage,
+  SystemMessage,
+  AIMessage,
+} = require("@langchain/core/messages");
+
+/**
+ * The agent provider for the AWS Bedrock provider.
+ */
+class AWSBedrockProvider extends InheritMultiple([Provider, UnTooled]) {
+  model;
+
+  constructor(_config = {}) {
+    super();
+    const model = process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE ?? null;
+    const client = new ChatBedrockConverse({
+      region: process.env.AWS_BEDROCK_LLM_REGION,
+      credentials: {
+        accessKeyId: process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID,
+        secretAccessKey: process.env.AWS_BEDROCK_LLM_ACCESS_KEY,
+      },
+      model,
+    });
+
+    this._client = client;
+    this.model = model;
+    this.verbose = true;
+  }
+
+  get client() {
+    return this._client;
+  }
+
+  // For streaming we use Langchain's wrapper to handle weird chunks
+  // or otherwise absorb headaches that can arise from Ollama models
+  #convertToLangchainPrototypes(chats = []) {
+    const langchainChats = [];
+    const roleToMessageMap = {
+      system: SystemMessage,
+      user: HumanMessage,
+      assistant: AIMessage,
+    };
+
+    for (const chat of chats) {
+      if (!roleToMessageMap.hasOwnProperty(chat.role)) continue;
+      const MessageClass = roleToMessageMap[chat.role];
+      langchainChats.push(new MessageClass({ content: chat.content }));
+    }
+
+    return langchainChats;
+  }
+
+  async #handleFunctionCallChat({ messages = [] }) {
+    const response = await this.client
+      .invoke(this.#convertToLangchainPrototypes(messages))
+      .then((res) => res)
+      .catch((e) => {
+        console.error(e);
+        return null;
+      });
+
+    return response?.content;
+  }
+
+  /**
+   * Create a completion based on the received messages.
+   *
+   * @param messages A list of messages to send to the API.
+   * @param functions
+   * @returns The completion.
+   */
+  async complete(messages, functions = null) {
+    try {
+      let completion;
+      if (functions.length > 0) {
+        const { toolCall, text } = await this.functionCall(
+          messages,
+          functions,
+          this.#handleFunctionCallChat.bind(this)
+        );
+
+        if (toolCall !== null) {
+          this.providerLog(`Valid tool call found - running ${toolCall.name}.`);
+          this.deduplicator.trackRun(toolCall.name, toolCall.arguments);
+          return {
+            result: null,
+            functionCall: {
+              name: toolCall.name,
+              arguments: toolCall.arguments,
+            },
+            cost: 0,
+          };
+        }
+        completion = { content: text };
+      }
+
+      if (!completion?.content) {
+        this.providerLog(
+          "Will assume chat completion without tool call inputs."
+        );
+        const response = await this.client.invoke(
+          this.#convertToLangchainPrototypes(this.cleanMsgs(messages))
+        );
+        completion = response;
+      }
+
+      // The UnTooled class inherited Deduplicator is mostly useful to prevent the agent
+      // from calling the exact same function over and over in a loop within a single chat exchange
+      // _but_ we should enable it to call previously used tools in a new chat interaction.
+      this.deduplicator.reset("runs");
+      return {
+        result: completion.content,
+        cost: 0,
+      };
+    } catch (error) {
+      throw error;
+    }
+  }
+
+  /**
+   * Get the cost of the completion.
+   *
+   * @param _usage The completion to get the cost for.
+   * @returns The cost of the completion.
+   * Stubbed since KoboldCPP has no cost basis.
+   */
+  getCost(_usage) {
+    return 0;
+  }
+}
+
+module.exports = AWSBedrockProvider;
diff --git a/server/utils/agents/aibitat/providers/index.js b/server/utils/agents/aibitat/providers/index.js
index 14748b2ec..6f784ae5f 100644
--- a/server/utils/agents/aibitat/providers/index.js
+++ b/server/utils/agents/aibitat/providers/index.js
@@ -12,6 +12,7 @@ const MistralProvider = require("./mistral.js");
 const GenericOpenAiProvider = require("./genericOpenAi.js");
 const PerplexityProvider = require("./perplexity.js");
 const TextWebGenUiProvider = require("./textgenwebui.js");
+const AWSBedrockProvider = require("./bedrock.js");
 
 module.exports = {
   OpenAIProvider,
@@ -28,4 +29,5 @@ module.exports = {
   GenericOpenAiProvider,
   PerplexityProvider,
   TextWebGenUiProvider,
+  AWSBedrockProvider,
 };
diff --git a/server/utils/agents/index.js b/server/utils/agents/index.js
index 66d51b74d..f6c9b3e85 100644
--- a/server/utils/agents/index.js
+++ b/server/utils/agents/index.js
@@ -143,6 +143,17 @@ class AgentHandler {
             "TextWebGenUI API base path must be provided to use agents."
           );
         break;
+      case "bedrock":
+        if (
+          !process.env.AWS_BEDROCK_LLM_ACCESS_KEY_ID ||
+          !process.env.AWS_BEDROCK_LLM_ACCESS_KEY ||
+          !process.env.AWS_BEDROCK_LLM_REGION ||
+          !process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE
+        )
+          throw new Error(
+            "AWS Bedrock Access Keys, model and region must be provided to use agents."
+          );
+        break;
 
       default:
         throw new Error(
@@ -183,6 +194,8 @@ class AgentHandler {
         return "sonar-small-online";
       case "textgenwebui":
         return null;
+      case "bedrock":
+        return null;
       default:
         return "unknown";
     }
@@ -210,7 +223,7 @@ class AgentHandler {
   }
 
   #providerSetupAndCheck() {
-    this.provider = this.invocation.workspace.agentProvider || "openai";
+    this.provider = this.invocation.workspace.agentProvider;
     this.model = this.#fetchModel();
     this.log(`Start ${this.#invocationUUID}::${this.provider}:${this.model}`);
     this.#checkSetup();
diff --git a/server/utils/helpers/index.js b/server/utils/helpers/index.js
index 439400696..2f6ea5146 100644
--- a/server/utils/helpers/index.js
+++ b/server/utils/helpers/index.js
@@ -140,6 +140,9 @@ function getLLMProvider({ provider = null, model = null } = {}) {
     case "generic-openai":
       const { GenericOpenAiLLM } = require("../AiProviders/genericOpenAi");
       return new GenericOpenAiLLM(embedder, model);
+    case "bedrock":
+      const { AWSBedrockLLM } = require("../AiProviders/bedrock");
+      return new AWSBedrockLLM(embedder, model);
     default:
       throw new Error(
         `ENV: No valid LLM_PROVIDER value found in environment! Using ${process.env.LLM_PROVIDER}`
diff --git a/server/utils/helpers/updateENV.js b/server/utils/helpers/updateENV.js
index 5b3e2f66d..d39941ec4 100644
--- a/server/utils/helpers/updateENV.js
+++ b/server/utils/helpers/updateENV.js
@@ -208,6 +208,28 @@ const KEY_MAPPING = {
     checks: [nonZero],
   },
 
+  // AWS Bedrock LLM InferenceSettings
+  AwsBedrockLLMAccessKeyId: {
+    envKey: "AWS_BEDROCK_LLM_ACCESS_KEY_ID",
+    checks: [isNotEmpty],
+  },
+  AwsBedrockLLMAccessKey: {
+    envKey: "AWS_BEDROCK_LLM_ACCESS_KEY",
+    checks: [isNotEmpty],
+  },
+  AwsBedrockLLMRegion: {
+    envKey: "AWS_BEDROCK_LLM_REGION",
+    checks: [isNotEmpty],
+  },
+  AwsBedrockLLMModel: {
+    envKey: "AWS_BEDROCK_LLM_MODEL_PREFERENCE",
+    checks: [isNotEmpty],
+  },
+  AwsBedrockLLMTokenLimit: {
+    envKey: "AWS_BEDROCK_LLM_MODEL_TOKEN_LIMIT",
+    checks: [nonZero],
+  },
+
   EmbeddingEngine: {
     envKey: "EMBEDDING_ENGINE",
     checks: [supportedEmbeddingModel],
@@ -541,6 +563,7 @@ function supportedLLM(input = "") {
     "cohere",
     "litellm",
     "generic-openai",
+    "bedrock",
   ].includes(input);
   return validSelection ? null : `${input} is not a valid LLM provider.`;
 }
diff --git a/server/yarn.lock b/server/yarn.lock
index 96df39c4a..8369d829c 100644
--- a/server/yarn.lock
+++ b/server/yarn.lock
@@ -54,6 +54,552 @@
     node-fetch "^2.6.7"
     web-streams-polyfill "^3.2.1"
 
+"@aws-crypto/crc32@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@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/sha256-browser@5.2.0":
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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-bedrock-agent-runtime@^3.583.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-bedrock-agent-runtime/-/client-bedrock-agent-runtime-3.616.0.tgz#50d4a27235ddc55a7b36da524b7989ff57d55ad0"
+  integrity sha512-LmKgpTNNqJ0ClfDL1ZmssxiADS3hoznc4Tidh+M7SUJKmsd/iyPlyhu0Lwluw0k4wnPGqoDFwDWzjAzdxeCidw==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.616.0"
+    "@aws-sdk/client-sts" "3.616.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/credential-provider-node" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/eventstream-serde-browser" "^3.0.4"
+    "@smithy/eventstream-serde-config-resolver" "^3.0.3"
+    "@smithy/eventstream-serde-node" "^3.0.4"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@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-bedrock-runtime@^3.602.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.616.0.tgz#247df230def2997ece4964dfeb1b286f5f0ce159"
+  integrity sha512-3uvKafBwlrJp2/Me/BMdvYf3J127vC69aDJloElX9eClhSBDwIQ6C7tuXmhqb662mKNy5iqXcmYhmv9FowevJw==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.616.0"
+    "@aws-sdk/client-sts" "3.616.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/credential-provider-node" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/eventstream-serde-browser" "^3.0.4"
+    "@smithy/eventstream-serde-config-resolver" "^3.0.3"
+    "@smithy/eventstream-serde-node" "^3.0.4"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@smithy/util-endpoints" "^2.0.5"
+    "@smithy/util-middleware" "^3.0.3"
+    "@smithy/util-retry" "^3.0.3"
+    "@smithy/util-stream" "^3.1.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/client-kendra@^3.352.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-kendra/-/client-kendra-3.616.0.tgz#1ac7459c60d3e0f0e8c34fe1684f51b65a802c57"
+  integrity sha512-pSl4+SrMZL/LuZ883pIvPR0VuU4DjYwb9kWFsUHGZDQtuyU0puM90f4bEUzxlwS5az5kiioTEMYwqaRst7d7xQ==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.616.0"
+    "@aws-sdk/client-sts" "3.616.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/credential-provider-node" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@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-sso-oidc@3.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz#eb298b1c543465a5f7ebd28f8148d68654edf9d1"
+  integrity sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/credential-provider-node" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz#d4bbb279daf6b4fde7ec2df9243526eb5119b0c0"
+  integrity sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz#9616c3693d9ae5232ccc12d570f46abe4ec49d2b"
+  integrity sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==
+  dependencies:
+    "@aws-crypto/sha256-browser" "5.2.0"
+    "@aws-crypto/sha256-js" "5.2.0"
+    "@aws-sdk/client-sso-oidc" "3.616.0"
+    "@aws-sdk/core" "3.616.0"
+    "@aws-sdk/credential-provider-node" "3.616.0"
+    "@aws-sdk/middleware-host-header" "3.616.0"
+    "@aws-sdk/middleware-logger" "3.609.0"
+    "@aws-sdk/middleware-recursion-detection" "3.616.0"
+    "@aws-sdk/middleware-user-agent" "3.616.0"
+    "@aws-sdk/region-config-resolver" "3.614.0"
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.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.2.7"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/hash-node" "^3.0.3"
+    "@smithy/invalid-dependency" "^3.0.3"
+    "@smithy/middleware-content-length" "^3.0.4"
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.10"
+    "@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.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@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.10"
+    "@smithy/util-defaults-mode-node" "^3.0.10"
+    "@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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.616.0.tgz#4d7f79cd62e545e6db677216a17dab84c2b4cda3"
+  integrity sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==
+  dependencies:
+    "@smithy/core" "^2.2.7"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/signature-v4" "^4.0.0"
+    "@smithy/smithy-client" "^3.1.8"
+    "@smithy/types" "^3.3.0"
+    fast-xml-parser "4.2.5"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-env@3.609.0":
+  version "3.609.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz#b3f32e5a8ff8b541e151eadadfb60283aa3d835e"
+  integrity sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==
+  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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz#207cbe3e74c6c55208fd4bf0ff59df6e765d2c41"
+  integrity sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==
+  dependencies:
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/node-http-handler" "^3.1.3"
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.8"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-stream" "^3.1.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/credential-provider-ini@3.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz#5bb726e969908a28e960d65016e7440b78056209"
+  integrity sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.609.0"
+    "@aws-sdk/credential-provider-http" "3.616.0"
+    "@aws-sdk/credential-provider-process" "3.614.0"
+    "@aws-sdk/credential-provider-sso" "3.616.0"
+    "@aws-sdk/credential-provider-web-identity" "3.609.0"
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/credential-provider-imds" "^3.1.4"
+    "@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.616.0", "@aws-sdk/credential-provider-node@^3.600.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz#0887ab7b9bab3031fe3ed8aaee2d4abb5091a67f"
+  integrity sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==
+  dependencies:
+    "@aws-sdk/credential-provider-env" "3.609.0"
+    "@aws-sdk/credential-provider-http" "3.616.0"
+    "@aws-sdk/credential-provider-ini" "3.616.0"
+    "@aws-sdk/credential-provider-process" "3.614.0"
+    "@aws-sdk/credential-provider-sso" "3.616.0"
+    "@aws-sdk/credential-provider-web-identity" "3.609.0"
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/credential-provider-imds" "^3.1.4"
+    "@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.614.0":
+  version "3.614.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz#b6b9382346dfe51c8fb448595ae55b930532c897"
+  integrity sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==
+  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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz#051b1a2eb31fa30866f2c1e95bbcf965911b16c3"
+  integrity sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==
+  dependencies:
+    "@aws-sdk/client-sso" "3.616.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.609.0":
+  version "3.609.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz#d29222d6894347ee89c781ea090d388656df1d2a"
+  integrity sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==
+  dependencies:
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-host-header@3.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz#542dac3370374ba3733c96a6bb153e6fe53fafe6"
+  integrity sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==
+  dependencies:
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-logger@3.609.0":
+  version "3.609.0"
+  resolved "https://registry.yarnpkg.com/@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.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz#fa87c9d77c6f85d02b9cf8394f52b2d6334a63af"
+  integrity sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==
+  dependencies:
+    "@aws-sdk/types" "3.609.0"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/middleware-user-agent@3.616.0":
+  version "3.616.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz#fe11d62e9cdc96a354c37968499fa32637a70f45"
+  integrity sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==
+  dependencies:
+    "@aws-sdk/types" "3.609.0"
+    "@aws-sdk/util-endpoints" "3.614.0"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@aws-sdk/region-config-resolver@3.614.0":
+  version "3.614.0"
+  resolved "https://registry.yarnpkg.com/@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/token-providers@3.614.0":
+  version "3.614.0"
+  resolved "https://registry.yarnpkg.com/@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", "@aws-sdk/types@^3.222.0":
+  version "3.609.0"
+  resolved "https://registry.yarnpkg.com/@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/util-endpoints@3.614.0":
+  version "3.614.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e"
+  integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==
+  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-locate-window@^3.0.0":
+  version "3.568.0"
+  resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff"
+  integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==
+  dependencies:
+    tslib "^2.6.2"
+
+"@aws-sdk/util-user-agent-browser@3.609.0":
+  version "3.609.0"
+  resolved "https://registry.yarnpkg.com/@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.yarnpkg.com/@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"
+
 "@azure-rest/core-client@^1.1.7":
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/@azure-rest/core-client/-/core-client-1.4.0.tgz#3be28c02c6c20e49dea73a7f012daeeda4eacb8e"
@@ -622,6 +1168,18 @@
     zod "^3.22.4"
     zod-to-json-schema "^3.22.4"
 
+"@langchain/aws@^0.0.5":
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/@langchain/aws/-/aws-0.0.5.tgz#eb5f97b170c25219eff0db83f291be5e19403936"
+  integrity sha512-l6OdEEXEVYYkp3wCOO0YAs4lnyOnZ65ypm9wg8ECPk/tTQQEKIQ7bMUmcyn3bo1ogcaMymChigX3qH6bI8lQog==
+  dependencies:
+    "@aws-sdk/client-bedrock-agent-runtime" "^3.583.0"
+    "@aws-sdk/client-bedrock-runtime" "^3.602.0"
+    "@aws-sdk/client-kendra" "^3.352.0"
+    "@aws-sdk/credential-provider-node" "^3.600.0"
+    "@langchain/core" ">=0.2.16 <0.3.0"
+    zod-to-json-schema "^3.22.5"
+
 "@langchain/community@0.0.53", "@langchain/community@~0.0.47":
   version "0.0.53"
   resolved "https://registry.yarnpkg.com/@langchain/community/-/community-0.0.53.tgz#a9aaedffa0ed2977e8d302d74e9f90a49a6da037"
@@ -654,6 +1212,24 @@
     zod "^3.22.4"
     zod-to-json-schema "^3.22.3"
 
+"@langchain/core@>=0.2.16 <0.3.0":
+  version "0.2.18"
+  resolved "https://registry.yarnpkg.com/@langchain/core/-/core-0.2.18.tgz#1ac4f307fa217ab3555c9634147a6c4ad9826092"
+  integrity sha512-ru542BwNcsnDfjTeDbIkFIchwa54ctHZR+kVrC8U9NPS9/36iM8p8ruprOV7Zccj/oxtLE5UpEhV+9MZhVcFlA==
+  dependencies:
+    ansi-styles "^5.0.0"
+    camelcase "6"
+    decamelize "1.2.0"
+    js-tiktoken "^1.0.12"
+    langsmith "~0.1.39"
+    ml-distance "^4.0.0"
+    mustache "^4.2.0"
+    p-queue "^6.6.2"
+    p-retry "4"
+    uuid "^10.0.0"
+    zod "^3.22.4"
+    zod-to-json-schema "^3.22.3"
+
 "@langchain/openai@0.0.28", "@langchain/openai@~0.0.28":
   version "0.0.28"
   resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.0.28.tgz#afaeec61b44816935db9ae937496c964c81ab571"
@@ -1114,6 +1690,441 @@
   resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.29.6.tgz#4cd8372f9247372edd5fc5af44f67e2032c46e2f"
   integrity sha512-aX5IFYWlMa7tQ8xZr3b2gtVReCvg7f3LEhjir/JAjX2bJCMVJA5tIPv30wTD4KDfcwMd7DDYY3hFDeGmOgtrZQ==
 
+"@smithy/abort-controller@^3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16"
+  integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/config-resolver@^3.0.5":
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd"
+  integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==
+  dependencies:
+    "@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"
+
+"@smithy/core@^2.2.7":
+  version "2.2.8"
+  resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.2.8.tgz#d1edc47584497c58aec741b0a2814cdc1db7b72c"
+  integrity sha512-1Y0XX0Ucyg0LWTfTVLWpmvSRtFRniykUl3dQ0os1sTd03mKDudR6mVyX+2ak1phwPXx2aEWMAAdW52JNi0mc3A==
+  dependencies:
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-retry" "^3.0.11"
+    "@smithy/middleware-serde" "^3.0.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/smithy-client" "^3.1.9"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-middleware" "^3.0.3"
+    tslib "^2.6.2"
+
+"@smithy/credential-provider-imds@^3.1.4":
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.4.tgz#797116f68cc3ffa658469558cc014f25d9febe09"
+  integrity sha512-NKyH01m97Xa5xf3pB2QOF3lnuE8RIK0hTVNU5zvZAwZU8uspYO4DHQVlK+Y5gwSrujTfHvbfd1D9UFJAc0iYKQ==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.4"
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/types" "^3.3.0"
+    "@smithy/url-parser" "^3.0.3"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-codec@^3.1.2":
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c"
+  integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==
+  dependencies:
+    "@aws-crypto/crc32" "5.2.0"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-browser@^3.0.4":
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2"
+  integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==
+  dependencies:
+    "@smithy/eventstream-serde-universal" "^3.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-config-resolver@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a"
+  integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-node@^3.0.4":
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1"
+  integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==
+  dependencies:
+    "@smithy/eventstream-serde-universal" "^3.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/eventstream-serde-universal@^3.0.4":
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30"
+  integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==
+  dependencies:
+    "@smithy/eventstream-codec" "^3.1.2"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/fetch-http-handler@^3.2.2":
+  version "3.2.2"
+  resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.2.tgz#67e29be8815dcf793d14186cae00bccaeffb963c"
+  integrity sha512-3LaWlBZObyGrOOd7e5MlacnAKEwFBmAeiW/TOj2eR9475Vnq30uS2510+tnKbxrGjROfNdOhQqGo5j3sqLT6bA==
+  dependencies:
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/querystring-builder" "^3.0.3"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-base64" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/hash-node@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24"
+  integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-buffer-from" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/invalid-dependency@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528"
+  integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/is-array-buffer@^2.2.0":
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/@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.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a"
+  integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/middleware-content-length@^3.0.4":
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.4.tgz#7c5804775da0d3d0c045d52293298f608e72311b"
+  integrity sha512-wySGje/KfhsnF8YSh9hP16pZcl3C+X6zRsvSfItQGvCyte92LliilU3SD0nR7kTlxnAJwxY8vE/k4Eoezj847Q==
+  dependencies:
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/middleware-endpoint@^3.0.5":
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.5.tgz#76e8a559e891282d3ede9ab8e228e66cbee89b21"
+  integrity sha512-V4acqqrh5tDxUEGVTOgf2lYMZqPQsoGntCrjrJZEeBzEzDry2d2vcI1QCXhGltXPPY+BMc6eksZMguA9fIY8vA==
+  dependencies:
+    "@smithy/middleware-serde" "^3.0.3"
+    "@smithy/node-config-provider" "^3.1.4"
+    "@smithy/shared-ini-file-loader" "^3.1.4"
+    "@smithy/types" "^3.3.0"
+    "@smithy/url-parser" "^3.0.3"
+    "@smithy/util-middleware" "^3.0.3"
+    tslib "^2.6.2"
+
+"@smithy/middleware-retry@^3.0.10", "@smithy/middleware-retry@^3.0.11":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.11.tgz#4a8137a45247233aa83707ff9da3b8ee3dfefbba"
+  integrity sha512-/TIRWmhwMpv99JCGuMhJPnH7ggk/Lah7s/uNDyr7faF02BxNsyD/fz9Tw7pgCf9tYOKgjimm2Qml1Aq1pbkt6g==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.4"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/service-error-classification" "^3.0.3"
+    "@smithy/smithy-client" "^3.1.9"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-middleware" "^3.0.3"
+    "@smithy/util-retry" "^3.0.3"
+    tslib "^2.6.2"
+    uuid "^9.0.1"
+
+"@smithy/middleware-serde@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66"
+  integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/middleware-stack@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7"
+  integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/node-config-provider@^3.1.4":
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1"
+  integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==
+  dependencies:
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/shared-ini-file-loader" "^3.1.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/node-http-handler@^3.1.3":
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.3.tgz#1b729a8a2ca6b84618a1e92c53c49a1fcf3a3e5a"
+  integrity sha512-UiKZm8KHb/JeOPzHZtRUfyaRDO1KPKPpsd7iplhiwVGOeVdkiVJ5bVe7+NhWREMOKomrDIDdSZyglvMothLg0Q==
+  dependencies:
+    "@smithy/abort-controller" "^3.1.1"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/querystring-builder" "^3.0.3"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/property-provider@^3.1.3":
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a"
+  integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/protocol-http@^4.0.4":
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.0.4.tgz#f784a03460b971cf10027d0e7f6673835ed7e637"
+  integrity sha512-fAA2O4EFyNRyYdFLVIv5xMMeRb+3fRKc/Rt2flh5k831vLvUmNFXcydeg7V3UeEhGURJI4c1asmGJBjvmF6j8Q==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/querystring-builder@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13"
+  integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-uri-escape" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/querystring-parser@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091"
+  integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/service-error-classification@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80"
+  integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+
+"@smithy/shared-ini-file-loader@^3.1.4":
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15"
+  integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/signature-v4@^4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.0.0.tgz#0583baba98819eab49e028166b186ce927c42128"
+  integrity sha512-ervYjQ+ZvmNG51Ui77IOTPri7nOyo8Kembzt9uwwlmtXJPmFXvslOahbA1blvAVs7G0KlYMiOBog1rAt7RVXxg==
+  dependencies:
+    "@smithy/is-array-buffer" "^3.0.0"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-hex-encoding" "^3.0.0"
+    "@smithy/util-middleware" "^3.0.3"
+    "@smithy/util-uri-escape" "^3.0.0"
+    "@smithy/util-utf8" "^3.0.0"
+    tslib "^2.6.2"
+
+"@smithy/smithy-client@^3.1.8", "@smithy/smithy-client@^3.1.9":
+  version "3.1.9"
+  resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.9.tgz#a0d8e867165db64c2a66762df0db279d1f8029eb"
+  integrity sha512-My2RaInZ4gSwJUPMaiLR/Nk82+c4LlvqpXA+n7lonGYgCZq23Tg+/xFhgmiejJ6XPElYJysTPyV90vKyp17+1g==
+  dependencies:
+    "@smithy/middleware-endpoint" "^3.0.5"
+    "@smithy/middleware-stack" "^3.0.3"
+    "@smithy/protocol-http" "^4.0.4"
+    "@smithy/types" "^3.3.0"
+    "@smithy/util-stream" "^3.1.1"
+    tslib "^2.6.2"
+
+"@smithy/types@^3.3.0":
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b"
+  integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==
+  dependencies:
+    tslib "^2.6.2"
+
+"@smithy/url-parser@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955"
+  integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==
+  dependencies:
+    "@smithy/querystring-parser" "^3.0.3"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/util-base64@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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.10":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.11.tgz#c8a74369405f55d39492b9ec15458cc2fe56b783"
+  integrity sha512-O3s9DGb3bmRvEKmT8RwvSWK4A9r6svfd+MnJB+UMi9ZcCkAnoRtliulOnGF0qCMkKF9mwk2tkopBBstalPY/vg==
+  dependencies:
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/smithy-client" "^3.1.9"
+    "@smithy/types" "^3.3.0"
+    bowser "^2.11.0"
+    tslib "^2.6.2"
+
+"@smithy/util-defaults-mode-node@^3.0.10":
+  version "3.0.11"
+  resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.11.tgz#288f443b65554597082858c4b6624cd362a2caaa"
+  integrity sha512-qd4a9qtyOa/WY14aHHOkMafhh9z8D2QTwlcBoXMTPnEwtcY+xpe1JyFm9vya7VsB8hHsfn3XodEtwqREiu4ygQ==
+  dependencies:
+    "@smithy/config-resolver" "^3.0.5"
+    "@smithy/credential-provider-imds" "^3.1.4"
+    "@smithy/node-config-provider" "^3.1.4"
+    "@smithy/property-provider" "^3.1.3"
+    "@smithy/smithy-client" "^3.1.9"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/util-endpoints@^2.0.5":
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be"
+  integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==
+  dependencies:
+    "@smithy/node-config-provider" "^3.1.4"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/util-hex-encoding@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@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.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e"
+  integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==
+  dependencies:
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/util-retry@^3.0.3":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049"
+  integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==
+  dependencies:
+    "@smithy/service-error-classification" "^3.0.3"
+    "@smithy/types" "^3.3.0"
+    tslib "^2.6.2"
+
+"@smithy/util-stream@^3.1.0", "@smithy/util-stream@^3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.1.tgz#2fffe56d9cdf70e94a7cd690e980454b1b35ad23"
+  integrity sha512-EhRnVvl3AhoHAT2rGQ5o+oSDRM/BUSMPLZZdRJZLcNVUsFAjOs4vHaPdNQivTSzRcFxf5DA4gtO46WWU2zimaw==
+  dependencies:
+    "@smithy/fetch-http-handler" "^3.2.2"
+    "@smithy/node-http-handler" "^3.1.3"
+    "@smithy/types" "^3.3.0"
+    "@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.yarnpkg.com/@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.yarnpkg.com/@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.yarnpkg.com/@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"
+
 "@swc/helpers@^0.5.2":
   version "0.5.11"
   resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7"
@@ -1768,6 +2779,11 @@ bottleneck@^2.15.3:
   resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91"
   integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==
 
+bowser@^2.11.0:
+  version "2.11.0"
+  resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f"
+  integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==
+
 brace-expansion@^1.1.7:
   version "1.1.11"
   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -3004,6 +4020,13 @@ fast-text-encoding@^1.0.0:
   resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867"
   integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==
 
+fast-xml-parser@4.2.5:
+  version "4.2.5"
+  resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f"
+  integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==
+  dependencies:
+    strnum "^1.0.5"
+
 fast-xml-parser@^4.3.5:
   version "4.3.6"
   resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz#190f9d99097f0c8f2d3a0e681a10404afca052ff"
@@ -4044,6 +5067,13 @@ js-tiktoken@^1.0.11, js-tiktoken@^1.0.7, js-tiktoken@^1.0.8:
   dependencies:
     base64-js "^1.5.1"
 
+js-tiktoken@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.12.tgz#af0f5cf58e5e7318240d050c8413234019424211"
+  integrity sha512-L7wURW1fH9Qaext0VzaUDpFGVQgjkdE3Dgsy9/+yXyGEpBKnylTd0mU0bfbNkKDlXRb6TEsZkwuflu1B8uQbJQ==
+  dependencies:
+    base64-js "^1.5.1"
+
 "js-tokens@^3.0.0 || ^4.0.0":
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -4255,6 +5285,17 @@ langsmith@~0.1.1, langsmith@~0.1.7:
     p-retry "4"
     uuid "^9.0.0"
 
+langsmith@~0.1.39:
+  version "0.1.39"
+  resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.1.39.tgz#cc99f1828a9c0f5ba24bec6b0121edc44e8d282d"
+  integrity sha512-K2/qbc96JhrZbSL74RbZ0DBOpTB9Mxicu8RQrZ88Xsp1bH2O3+y5EdcvC0g/1YzQWQhcQ4peknCA24c3VTNiNA==
+  dependencies:
+    "@types/uuid" "^9.0.1"
+    commander "^10.0.1"
+    p-queue "^6.6.2"
+    p-retry "4"
+    uuid "^9.0.0"
+
 lazystream@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638"
@@ -6650,6 +7691,11 @@ uuid-apikey@^1.5.3:
     encode32 "^1.1.0"
     uuid "^8.3.1"
 
+uuid@^10.0.0:
+  version "10.0.0"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
+  integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
+
 uuid@^8.3.0, uuid@^8.3.1:
   version "8.3.2"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
-- 
GitLab