```diff
--- test_files/220-original.txt	2025-03-07 19:06:35
+++ test_files/220-modified.txt	2025-03-07 19:06:35
@@ -1,6 +1,5 @@
 import json
 import os
-import shutil
 from enum import Enum
 from pathlib import Path
 from typing import Any, Dict
@@ -9,11 +8,7 @@
 
 from composio.tools.base.exceptions import ExecutionFailed
 from composio.tools.base.local import LocalAction
-from composio.tools.local.codeanalysis.constants import (
-    CODE_MAP_CACHE,
-    FQDN_FILE,
-    TREE_SITTER_FOLDER,
-)
+from composio.tools.local.codeanalysis.constants import CODE_MAP_CACHE, FQDN_FILE
 from composio.tools.local.codeanalysis.tool_utils import retry_handler
 from composio.utils.logging import get as get_logger
 
@@ -69,6 +64,13 @@
     def execute(
         self, request: CreateCodeMapRequest, metadata: Dict
     ) -> CreateCodeMapResponse:
+        if "create_fqdn" not in metadata:
+            metadata["create_fqdn"] = True
+        if "create_index" not in metadata:
+            metadata["create_index"] = True
+        if "is_python" not in metadata:
+            metadata["is_python"] = True
+
         self.REPO_DIR = os.path.normpath(os.path.abspath(metadata["dir_to_index_path"]))
         self.failed_files: list[str] = []
 
@@ -84,16 +86,15 @@
         repo_name = os.path.basename(self.REPO_DIR)
         self.save_dir = f"{CODE_MAP_CACHE}/{repo_name}"
         os.makedirs(self.save_dir, exist_ok=True)
-        os.makedirs(TREE_SITTER_FOLDER, exist_ok=True)
         self.fqdn_cache_file = os.path.join(self.save_dir, FQDN_FILE)
 
-        self._process(status)
+        self._process(status, metadata)
 
         return CreateCodeMapResponse(
             result=f"Indexing completed for {metadata['dir_to_index_path']}"
         )
 
-    def _process(self, status: Dict[str, Any]) -> None:
+    def _process(self, status: Dict[str, Any], metadata: Dict[str, Any]) -> None:
         """
         Process the indexing operation based on the current status.
 
@@ -114,19 +115,20 @@
         """
         try:
             if status["status"] == Status.LOADING_FQDNS:
-                self.load_all_fqdns()
+                if metadata["create_fqdn"]:
+                    self.load_all_fqdns()
                 status = self._update_status(self.REPO_DIR, Status.LOADING_INDEX)
-
             if status["status"] == Status.LOADING_INDEX:
-                self.create_index()
+                if metadata["create_index"]:
+                    self.create_index(metadata["is_python"])
                 status = self._update_status(self.REPO_DIR, Status.COMPLETED)
         except Exception as e:
             self._update_status(self.REPO_DIR, Status.FAILED)
             raise ExecutionFailed(
-                message=f"Failed to create index, error encountered while {str(status['status'])}"
+                message=f"Failed to create index, error encountered while {str(status['status'])}: {e}"
             ) from e
 
-    def create_index(self):
+    def create_index(self, is_python: bool):
         """
         Create an index of the Python files in the repository.
 
@@ -152,7 +154,9 @@
             with open(file, "r", encoding="utf-8") as f:
                 file_content = f.read()
 
-            chunk, metadata, id = chunking.chunk(file_content, file)
+            chunk, metadata, id = chunking.chunk(
+                file_content, file, is_python=is_python
+            )
             num_lines[file] = len(file_content.splitlines())
             chunks.extend(chunk)
             metadatas.extend(metadata)
@@ -162,7 +166,6 @@
 
         embedder.get_vector_store_from_chunks(self.REPO_DIR, documents, ids, metadatas)
         logger.info(f"Successfully created index for {len(python_files)} files.")
-        shutil.rmtree(TREE_SITTER_FOLDER)
 
     def load_all_fqdns(self):
         """
```
