diff --git a/.changeset/strong-wasps-nail.md b/.changeset/strong-wasps-nail.md
new file mode 100644
index 0000000000000000000000000000000000000000..7e04149b59137d551c10a9dd09ba7b222d0bfc93
--- /dev/null
+++ b/.changeset/strong-wasps-nail.md
@@ -0,0 +1,5 @@
+---
+"create-llama": patch
+---
+
+Update dependencies for vector stores and add e2e test to ensure that they work as expected.
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..880749b4112531a37256ffcad80b8b88089e082f
--- /dev/null
+++ b/.coderabbit.yaml
@@ -0,0 +1,6 @@
+# coderabbit.yml
+reviews:
+  path_instructions:
+    - path: "templates/**"
+      instructions: |
+        For files under the `templates` folder, do not report 'Missing Dependencies Detected' errors.
diff --git a/e2e/resolve_ts_dependencies.spec.ts b/e2e/resolve_ts_dependencies.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b67666f794108da1dcfe0e39738b32460b82360
--- /dev/null
+++ b/e2e/resolve_ts_dependencies.spec.ts
@@ -0,0 +1,97 @@
+import { expect, test } from "@playwright/test";
+import { exec } from "child_process";
+import fs from "fs";
+import path from "path";
+import util from "util";
+import { TemplateFramework, TemplateVectorDB } from "../helpers/types";
+import { createTestDir, runCreateLlama } from "./utils";
+
+const execAsync = util.promisify(exec);
+
+const templateFramework: TemplateFramework = process.env.FRAMEWORK
+  ? (process.env.FRAMEWORK as TemplateFramework)
+  : "nextjs";
+const dataSource: string = process.env.DATASOURCE
+  ? process.env.DATASOURCE
+  : "--example-file";
+
+if (
+  templateFramework == "nextjs" ||
+  templateFramework == "express" // test is only relevant for TS projects
+) {
+  // vectorDBs combinations to test
+  const vectorDbs: TemplateVectorDB[] = [
+    "mongo",
+    "pg",
+    "qdrant",
+    "pinecone",
+    "milvus",
+    "astra",
+    "chroma",
+    "llamacloud",
+    "weaviate",
+  ];
+
+  test.describe("Test resolve TS dependencies", () => {
+    for (const vectorDb of vectorDbs) {
+      const optionDescription = `vectorDb: ${vectorDb}, dataSource: ${dataSource}`;
+
+      test(`options: ${optionDescription}`, async () => {
+        const cwd = await createTestDir();
+
+        const result = await runCreateLlama(
+          cwd,
+          "streaming",
+          templateFramework,
+          dataSource,
+          vectorDb,
+          3000, // port
+          8000, // externalPort
+          "none", // postInstallAction
+          undefined, // ui
+          templateFramework === "nextjs" ? "" : "--no-frontend", // appType
+          undefined, // llamaCloudProjectName
+          undefined, // llamaCloudIndexName
+        );
+        const name = result.projectName;
+
+        // Check if the app folder exists
+        const appDir = path.join(cwd, name);
+        const dirExists = fs.existsSync(appDir);
+        expect(dirExists).toBeTruthy();
+
+        // Install dependencies using pnpm
+        try {
+          const { stderr: installStderr } = await execAsync(
+            "pnpm install --prefer-offline",
+            {
+              cwd: appDir,
+            },
+          );
+          expect(installStderr).toBeFalsy();
+        } catch (error) {
+          console.error("Error installing dependencies:", error);
+          throw error;
+        }
+
+        // Run tsc type check and capture the output
+        try {
+          const { stdout, stderr } = await execAsync(
+            "pnpm exec tsc -b --diagnostics",
+            {
+              cwd: appDir,
+            },
+          );
+          // Check if there's any error output
+          expect(stderr).toBeFalsy();
+
+          // Log the stdout for debugging purposes
+          console.log("TypeScript type-check output:", stdout);
+        } catch (error) {
+          console.error("Error running tsc:", error);
+          throw error;
+        }
+      });
+    }
+  });
+}
diff --git a/e2e/utils.ts b/e2e/utils.ts
index afd450b7f58af22b4620e45d676ca03080cb80f6..7c988617e87807ba5daaa6b5bd395f6458b8de6d 100644
--- a/e2e/utils.ts
+++ b/e2e/utils.ts
@@ -105,11 +105,11 @@ export async function runCreateLlama(
     },
   });
   appProcess.stderr?.on("data", (data) => {
-    console.log(data.toString());
+    console.error(data.toString());
   });
   appProcess.on("exit", (code) => {
     if (code !== 0 && code !== null) {
-      throw new Error(`create-llama command was failed!`);
+      throw new Error(`create-llama command failed with exit code ${code}`);
     }
   });
 
@@ -121,6 +121,8 @@ export async function runCreateLlama(
       port,
       externalPort,
     );
+  } else if (postInstallAction === "dependencies") {
+    await waitForProcess(appProcess, 1000 * 60); // wait 1 min for dependencies to be resolved
   } else {
     // wait 10 seconds for create-llama to exit
     await waitForProcess(appProcess, 1000 * 10);
diff --git a/helpers/typescript.ts b/helpers/typescript.ts
index f818a1d3b01abe603bdc3a66195a4826a9639f6e..9b4c9ffc13604c08da16fe020683bd90b7b3a02d 100644
--- a/helpers/typescript.ts
+++ b/helpers/typescript.ts
@@ -180,6 +180,7 @@ export const installTSTemplate = async ({
     framework,
     ui,
     observability,
+    vectorDb,
   });
 
   if (postInstallAction === "runApp" || postInstallAction === "dependencies") {
@@ -200,9 +201,16 @@ async function updatePackageJson({
   framework,
   ui,
   observability,
+  vectorDb,
 }: Pick<
   InstallTemplateArgs,
-  "root" | "appName" | "dataSources" | "framework" | "ui" | "observability"
+  | "root"
+  | "appName"
+  | "dataSources"
+  | "framework"
+  | "ui"
+  | "observability"
+  | "vectorDb"
 > & {
   relativeEngineDestPath: string;
 }): Promise<any> {
@@ -249,6 +257,33 @@ async function updatePackageJson({
     };
   }
 
+  if (vectorDb === "pg") {
+    packageJson.dependencies = {
+      ...packageJson.dependencies,
+      pg: "^8.12.0",
+    };
+  }
+
+  if (vectorDb === "qdrant") {
+    packageJson.dependencies = {
+      ...packageJson.dependencies,
+      "@qdrant/js-client-rest": "^1.11.0",
+    };
+  }
+  if (vectorDb === "mongo") {
+    packageJson.dependencies = {
+      ...packageJson.dependencies,
+      mongodb: "^6.7.0",
+    };
+  }
+
+  if (vectorDb === "milvus") {
+    packageJson.dependencies = {
+      ...packageJson.dependencies,
+      "@zilliz/milvus2-sdk-node": "^2.4.6",
+    };
+  }
+
   if (observability === "traceloop") {
     packageJson.dependencies = {
       ...packageJson.dependencies,
diff --git a/templates/components/engines/typescript/agent/chat.ts b/templates/components/engines/typescript/agent/chat.ts
index ad1d6a0067ead1eb0ed2a634ee864b5d72ab8dae..014a0d08f99cc7442a31e6dbd04b1bd591f9272e 100644
--- a/templates/components/engines/typescript/agent/chat.ts
+++ b/templates/components/engines/typescript/agent/chat.ts
@@ -1,4 +1,9 @@
-import { BaseToolWithCall, OpenAIAgent, QueryEngineTool } from "llamaindex";
+import {
+  BaseToolWithCall,
+  ChatEngine,
+  OpenAIAgent,
+  QueryEngineTool,
+} from "llamaindex";
 import fs from "node:fs/promises";
 import path from "node:path";
 import { getDataSource } from "./index";
@@ -37,8 +42,10 @@ export async function createChatEngine(documentIds?: string[], params?: any) {
     tools.push(...(await createTools(toolConfig)));
   }
 
-  return new OpenAIAgent({
+  const agent = new OpenAIAgent({
     tools,
     systemPrompt: process.env.SYSTEM_PROMPT,
-  });
+  }) as unknown as ChatEngine;
+
+  return agent;
 }
diff --git a/templates/components/vectordbs/typescript/astra/generate.ts b/templates/components/vectordbs/typescript/astra/generate.ts
index 104745bb9f8ceaa91008cb5f12eaacde6329c62c..f66657b529091afb5e9329646cac26f918b4b783 100644
--- a/templates/components/vectordbs/typescript/astra/generate.ts
+++ b/templates/components/vectordbs/typescript/astra/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { AstraDBVectorStore } from "llamaindex/storage/vectorStore/AstraDBVectorStore";
+import { AstraDBVectorStore } from "llamaindex/vector-store/AstraDBVectorStore";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import { checkRequiredEnvVars } from "./shared";
@@ -15,13 +15,12 @@ async function loadAndIndex() {
   // create vector store and a collection
   const collectionName = process.env.ASTRA_DB_COLLECTION!;
   const vectorStore = new AstraDBVectorStore();
-  await vectorStore.create(collectionName, {
+  await vectorStore.createAndConnect(collectionName, {
     vector: {
       dimension: parseInt(process.env.EMBEDDING_DIM!),
       metric: "cosine",
     },
   });
-  await vectorStore.connect(collectionName);
 
   // create index from documents and store them in Astra
   console.log("Start creating embeddings...");
diff --git a/templates/components/vectordbs/typescript/astra/index.ts b/templates/components/vectordbs/typescript/astra/index.ts
index 38c5bbbdd469101719ecc481df87c643b6505278..4ee66ade122d3636dc9a8bb19dfa71aac3ce1e4c 100644
--- a/templates/components/vectordbs/typescript/astra/index.ts
+++ b/templates/components/vectordbs/typescript/astra/index.ts
@@ -1,6 +1,6 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import { VectorStoreIndex } from "llamaindex";
-import { AstraDBVectorStore } from "llamaindex/storage/vectorStore/AstraDBVectorStore";
+import { AstraDBVectorStore } from "llamaindex/vector-store/AstraDBVectorStore";
 import { checkRequiredEnvVars } from "./shared";
 
 export async function getDataSource(params?: any) {
diff --git a/templates/components/vectordbs/typescript/chroma/generate.ts b/templates/components/vectordbs/typescript/chroma/generate.ts
index 83e8ea1666849ed60e66d02a64a10b67c42ddbaa..a4abe70d92e0a382314fd93539604d90789268f6 100644
--- a/templates/components/vectordbs/typescript/chroma/generate.ts
+++ b/templates/components/vectordbs/typescript/chroma/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { ChromaVectorStore } from "llamaindex/storage/vectorStore/ChromaVectorStore";
+import { ChromaVectorStore } from "llamaindex/vector-store/ChromaVectorStore";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import { checkRequiredEnvVars } from "./shared";
@@ -16,7 +16,7 @@ async function loadAndIndex() {
   const chromaUri = `http://${process.env.CHROMA_HOST}:${process.env.CHROMA_PORT}`;
 
   const vectorStore = new ChromaVectorStore({
-    collectionName: process.env.CHROMA_COLLECTION,
+    collectionName: process.env.CHROMA_COLLECTION!,
     chromaClientParams: { path: chromaUri },
   });
 
diff --git a/templates/components/vectordbs/typescript/chroma/index.ts b/templates/components/vectordbs/typescript/chroma/index.ts
index fbc7b4bf27992c5f57246695af2443f426c7aa46..7ab5a332284136c8799be874b6c276c55df0f40d 100644
--- a/templates/components/vectordbs/typescript/chroma/index.ts
+++ b/templates/components/vectordbs/typescript/chroma/index.ts
@@ -1,6 +1,6 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import { VectorStoreIndex } from "llamaindex";
-import { ChromaVectorStore } from "llamaindex/storage/vectorStore/ChromaVectorStore";
+import { ChromaVectorStore } from "llamaindex/vector-store/ChromaVectorStore";
 import { checkRequiredEnvVars } from "./shared";
 
 export async function getDataSource(params?: any) {
@@ -8,7 +8,7 @@ export async function getDataSource(params?: any) {
   const chromaUri = `http://${process.env.CHROMA_HOST}:${process.env.CHROMA_PORT}`;
 
   const store = new ChromaVectorStore({
-    collectionName: process.env.CHROMA_COLLECTION,
+    collectionName: process.env.CHROMA_COLLECTION!,
     chromaClientParams: { path: chromaUri },
   });
 
diff --git a/templates/components/vectordbs/typescript/llamacloud/queryFilter.ts b/templates/components/vectordbs/typescript/llamacloud/queryFilter.ts
index c3ed6e3e55c83347f5f4e6722ab103aa5460df40..4df8842f56455f848f54d35f078fed1293938665 100644
--- a/templates/components/vectordbs/typescript/llamacloud/queryFilter.ts
+++ b/templates/components/vectordbs/typescript/llamacloud/queryFilter.ts
@@ -4,7 +4,6 @@ export function generateFilters(documentIds: string[]): MetadataFilters {
   // public documents don't have the "private" field or it's set to "false"
   const publicDocumentsFilter: MetadataFilter = {
     key: "private",
-    value: null,
     operator: "is_empty",
   };
 
diff --git a/templates/components/vectordbs/typescript/milvus/generate.ts b/templates/components/vectordbs/typescript/milvus/generate.ts
index cfdd683960ed30aef980e3f9eb359212dc6d208a..c36443f32a23f7e2f67bd79240ab9ee55c9be924 100644
--- a/templates/components/vectordbs/typescript/milvus/generate.ts
+++ b/templates/components/vectordbs/typescript/milvus/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { MilvusVectorStore } from "llamaindex/storage/vectorStore/MilvusVectorStore";
+import { MilvusVectorStore } from "llamaindex/vector-store/MilvusVectorStore";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import { checkRequiredEnvVars, getMilvusClient } from "./shared";
diff --git a/templates/components/vectordbs/typescript/milvus/index.ts b/templates/components/vectordbs/typescript/milvus/index.ts
index 91275b11ef58b540627770afb86c2af8d4059bfb..657f3f37d2e2b0046dc4a693703bd59f49b88e2c 100644
--- a/templates/components/vectordbs/typescript/milvus/index.ts
+++ b/templates/components/vectordbs/typescript/milvus/index.ts
@@ -1,5 +1,5 @@
 import { VectorStoreIndex } from "llamaindex";
-import { MilvusVectorStore } from "llamaindex/storage/vectorStore/MilvusVectorStore";
+import { MilvusVectorStore } from "llamaindex/vector-store/MilvusVectorStore";
 import { checkRequiredEnvVars, getMilvusClient } from "./shared";
 
 export async function getDataSource(params?: any) {
diff --git a/templates/components/vectordbs/typescript/mongo/generate.ts b/templates/components/vectordbs/typescript/mongo/generate.ts
index 73ff85924e3c3436ff0e65d7b36dce200d342fbe..d0919c2874c078c57f6f06f17f393eeaa3df2947 100644
--- a/templates/components/vectordbs/typescript/mongo/generate.ts
+++ b/templates/components/vectordbs/typescript/mongo/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { storageContextFromDefaults, VectorStoreIndex } from "llamaindex";
-import { MongoDBAtlasVectorSearch } from "llamaindex/storage/vectorStore/MongoDBAtlasVectorStore";
+import { MongoDBAtlasVectorSearch } from "llamaindex/vector-store/MongoDBAtlasVectorStore";
 import { MongoClient } from "mongodb";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
diff --git a/templates/components/vectordbs/typescript/mongo/index.ts b/templates/components/vectordbs/typescript/mongo/index.ts
index 75c20fb647f87b1d87eda4fdff0780b7448bb84d..3203b85ca2c84298710ef28bb1f07013a4a10184 100644
--- a/templates/components/vectordbs/typescript/mongo/index.ts
+++ b/templates/components/vectordbs/typescript/mongo/index.ts
@@ -1,6 +1,6 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import { VectorStoreIndex } from "llamaindex";
-import { MongoDBAtlasVectorSearch } from "llamaindex/storage/vectorStore/MongoDBAtlasVectorStore";
+import { MongoDBAtlasVectorSearch } from "llamaindex/vector-store/MongoDBAtlasVectorStore";
 import { MongoClient } from "mongodb";
 import { checkRequiredEnvVars, POPULATED_METADATA_FIELDS } from "./shared";
 
diff --git a/templates/components/vectordbs/typescript/pg/generate.ts b/templates/components/vectordbs/typescript/pg/generate.ts
index 37a0af54bf740797561f8b3d7458b71e4674629d..f5664b6f070d69658d4391ddbe0f3422c903c71b 100644
--- a/templates/components/vectordbs/typescript/pg/generate.ts
+++ b/templates/components/vectordbs/typescript/pg/generate.ts
@@ -1,7 +1,10 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
-import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { PGVectorStore } from "llamaindex/storage/vectorStore/PGVectorStore";
+import {
+  PGVectorStore,
+  VectorStoreIndex,
+  storageContextFromDefaults,
+} from "llamaindex";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import {
diff --git a/templates/components/vectordbs/typescript/pg/index.ts b/templates/components/vectordbs/typescript/pg/index.ts
index 75bcd4038be2361fa2a3347f3811a0e3d133703f..6a4f137022141d10d1831338f0f3d6576ef9d236 100644
--- a/templates/components/vectordbs/typescript/pg/index.ts
+++ b/templates/components/vectordbs/typescript/pg/index.ts
@@ -1,6 +1,5 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
-import { VectorStoreIndex } from "llamaindex";
-import { PGVectorStore } from "llamaindex/storage/vectorStore/PGVectorStore";
+import { PGVectorStore, VectorStoreIndex } from "llamaindex";
 import {
   PGVECTOR_SCHEMA,
   PGVECTOR_TABLE,
diff --git a/templates/components/vectordbs/typescript/pinecone/generate.ts b/templates/components/vectordbs/typescript/pinecone/generate.ts
index 676ffabb674f8bc1614f85612a6c216600e9f71c..235817db7f4ea822c5626a20d141bbc9a509cd39 100644
--- a/templates/components/vectordbs/typescript/pinecone/generate.ts
+++ b/templates/components/vectordbs/typescript/pinecone/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { PineconeVectorStore } from "llamaindex/storage/vectorStore/PineconeVectorStore";
+import { PineconeVectorStore } from "llamaindex/vector-store/PineconeVectorStore";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import { checkRequiredEnvVars } from "./shared";
diff --git a/templates/components/vectordbs/typescript/pinecone/index.ts b/templates/components/vectordbs/typescript/pinecone/index.ts
index 66a22d46e96ee893a4f96bea2cb77fee3798e73d..ff4f8b341a540c457959dceb1686177c6000802a 100644
--- a/templates/components/vectordbs/typescript/pinecone/index.ts
+++ b/templates/components/vectordbs/typescript/pinecone/index.ts
@@ -1,6 +1,6 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import { VectorStoreIndex } from "llamaindex";
-import { PineconeVectorStore } from "llamaindex/storage/vectorStore/PineconeVectorStore";
+import { PineconeVectorStore } from "llamaindex/vector-store/PineconeVectorStore";
 import { checkRequiredEnvVars } from "./shared";
 
 export async function getDataSource(params?: any) {
diff --git a/templates/components/vectordbs/typescript/qdrant/generate.ts b/templates/components/vectordbs/typescript/qdrant/generate.ts
index f71e05de6d7d2e7c3e5165066d7a09e5294423a1..d3f6bf91645d8ffb19c506cb320869edbb23cf35 100644
--- a/templates/components/vectordbs/typescript/qdrant/generate.ts
+++ b/templates/components/vectordbs/typescript/qdrant/generate.ts
@@ -1,7 +1,7 @@
 /* eslint-disable turbo/no-undeclared-env-vars */
 import * as dotenv from "dotenv";
 import { VectorStoreIndex, storageContextFromDefaults } from "llamaindex";
-import { QdrantVectorStore } from "llamaindex/storage/vectorStore/QdrantVectorStore";
+import { QdrantVectorStore } from "llamaindex/vector-store/QdrantVectorStore";
 import { getDocuments } from "./loader";
 import { initSettings } from "./settings";
 import { checkRequiredEnvVars, getQdrantClient } from "./shared";
diff --git a/templates/components/vectordbs/typescript/qdrant/index.ts b/templates/components/vectordbs/typescript/qdrant/index.ts
index a9d87ab8cc3a057e0751ca0b524dddba18992c55..314a94af79219b8b2ba375a8ec72d010b04b782d 100644
--- a/templates/components/vectordbs/typescript/qdrant/index.ts
+++ b/templates/components/vectordbs/typescript/qdrant/index.ts
@@ -1,6 +1,6 @@
 import * as dotenv from "dotenv";
 import { VectorStoreIndex } from "llamaindex";
-import { QdrantVectorStore } from "llamaindex/storage/vectorStore/QdrantVectorStore";
+import { QdrantVectorStore } from "llamaindex/vector-store/QdrantVectorStore";
 import { checkRequiredEnvVars, getQdrantClient } from "./shared";
 
 dotenv.config();
diff --git a/templates/components/vectordbs/typescript/weaviate/index.ts b/templates/components/vectordbs/typescript/weaviate/index.ts
index 27b32b4259a42f1a16885cc08775e404d080fd5d..047ea02975cc032798539262c93112cf8a1609b6 100644
--- a/templates/components/vectordbs/typescript/weaviate/index.ts
+++ b/templates/components/vectordbs/typescript/weaviate/index.ts
@@ -1,6 +1,6 @@
 import * as dotenv from "dotenv";
 import { VectorStoreIndex } from "llamaindex";
-import { WeaviateVectorStore } from "llamaindex/storage/vectorStore/WeaviateVectorStore";
+import { WeaviateVectorStore } from "llamaindex/vector-store/WeaviateVectorStore";
 import { checkRequiredEnvVars, DEFAULT_INDEX_NAME } from "./shared";
 
 dotenv.config();
diff --git a/templates/types/streaming/express/src/controllers/chat-request.controller.ts b/templates/types/streaming/express/src/controllers/chat-request.controller.ts
index 117713fb2d53e2b317e9a0eec8116fa088bc73dd..3fbec2b067916d1de84bb02fccdc0bd2510e6e30 100644
--- a/templates/types/streaming/express/src/controllers/chat-request.controller.ts
+++ b/templates/types/streaming/express/src/controllers/chat-request.controller.ts
@@ -35,7 +35,7 @@ export const chatRequest = async (req: Request, res: Response) => {
     // Convert message content from Vercel/AI format to LlamaIndex/OpenAI format
     // Note: The non-streaming template does not need the Vercel/AI format, we're still using it for consistency with the streaming template
     const userMessageContent = convertMessageContent(
-      userMessage.content,
+      userMessage.content as string,
       data?.imageUrl,
     );